gpt4 book ai didi

bash - 检查符号链接(symbolic link)是否已更改

转载 作者:行者123 更新时间:2023-11-29 09:32:21 27 4
gpt4 key购买 nike

我有一个守护进程,当它启动时,它会从恰好是符号链接(symbolic link)的目录加载数据。定期生成新数据并更新符号链接(symbolic link)。我想要一个 bash 脚本来检查当前符号链接(symbolic link)是否与旧符号链接(symbolic link)(守护进程启动时使用的符号链接(symbolic link))相同,如果不相同,则重新启动守护进程。我目前的想法是:

if [[ ! -e $old_dir || $(readlink "$data_dir") == $(readlink "$old_dir") ]];
then
echo restart
...
ln "$(readlink "$data_dir")" "$old_dir" -sf
else
echo no restart
fi

抽象要求是:每次脚本运行时,它需要检查给定路径上的符号链接(symbolic link)现在是否指向与上次不同的其他内容,如果是,则执行某些操作。 (另一种方法是检查路径中的数据是否已更改,但我认为这没有任何清洁作用。)我的问题:

  • 这是一个好方法吗?
  • 有没有人有更好的主意?
  • 我应该为 $old_dir 使用什么,我应该把符号链接(symbolic link)放在哪里?

最佳答案

至于一个好的方法,我不确定。看起来很可行但很奇怪。

我会把 old_dir 放在/var/local/projectname

编辑:没有看到足够多的东西来真正知道是否会引导您走上错误的道路,我以某种方式认为正确的方法是使用假脱机目录。

它的工作方式是:

  1. 在/var/spool/appname/tmp 中创建了新的工作文件。
  2. 文件被移动到/var/spool/appname(需要相同的文件系统)
  3. 文件从/var/spool/appname 中获取、处理和删除(或移动,如果更合适的话)

第 2 步是原子切换。第 3 步可能必须加防护,因此处理同一个文件两次是无害的。

话又说回来,如果你在这里有一些东西,比如保留完整的历史,而符号链接(symbolic link)指的是当前,你就已经在做对了。

关于bash - 检查符号链接(symbolic link)是否已更改,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2978190/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com