我有一个守护进程,当它启动时,从恰好是符号链接的目录加载其数据。定期生成新数据并更新符号链接。我想要一个bash脚本来检查当前的符号链接是否与旧的符号链接(守护进程启动时)相同,如果没有,则重启守护进程。我目前的想法是:
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
抽象要求是:每次脚本运行时,都需要检查给定路径上的符号链接现在是否指向上次以外的其他内容,如果是,则执行某些操作。 (另一种方法是检查路径上的数据是否已经改变,但我没有看到更清洁。) 我的问题:
$old_dir
使用什么,我应该把符号链接放在哪里?答案 0 :(得分:1)
至于一个好方法,我不确定。似乎很多可行但很奇怪。
我将old_dir放在/ var / local / projectname
中编辑:如果没有足够真实地知道是否引导你走错了路,我会认为正确的方法是使用假脱机目录。
这种方式的工作原理是:
第2步是原子越区切换。步骤3可能必须装甲,因此两次处理同一文件是无害的。
然后再说一次,如果你在这里有一些东西,比如保留一个完整的历史记录,那么符号链接指的是当前你正在做的事情。
答案 1 :(得分:0)
您的脚本需要知道原始$old_dir
应该是什么。您可以将值存储在/var/run/app_name
中的文件中。
我仍然不清楚你为什么要这样做。遗憾。
修改强>
根据文件系统层次结构标准,我会说/var/lib/appname
可能是放置符号链接的合适位置。