我试图在我的Crontab中使用变量,但面对的事实是它们工作很奇怪。这是一个例子:
FOO=echo date
BAR=/root/foobar
COMB=echo date >> /root/comb
* * * * * $FOO >> $BAR
* * * * * $COMB
foobar 工作正常,但梳子却没有(梳子文件未创建)。 还有类似的事情:
FOO=echo `date`
BAR=/root/foobar
* * * * * $FOO >> $BAR
或
FOO=echo date
BAR=~/foobar
* * * * * $FOO >> $BAR
不能正常工作。看起来像crontab文件中的变量可以使用的符号有一些限制,我是对的吗?
我的目标是简单检查ruby脚本是否已经在运行,如果不是,则重新启动它:
STARTSCRIPT='ruby ~/RubyScripts/Script.rb'
*/5 * * * * pgrep -f "$STARTSCRIPT" &>/dev/null || $STARTSCRIPT
但由于这些限制,它不起作用。或者我可能做错了) 所有的东西都在lx品牌区域工作 Ubuntu 14.04 LX 0150320在SmartOS(某种Solaris)中。
答案 0 :(得分:1)
没有符号限制,它只是具有特殊意义,你不知道。
FOO='/bin/date'
BAR='/root/foobar'
COMB='echo /bin/date >> /root/comb'
* * * * * $FOO >> $BAR
* * * * * $COMB
在第二个代码段中:
FOO='/bin/date' #there is absolutely no point in echoing here
BAR='/root/foobar'
* * * * * $FOO >> $BAR
修改强>
这是您可以检查状态脚本并在不运行时运行它的方法:
SCRIPT_NAME='/absolutepath/RubyScripts/Script.rb'
SCRIPT_CMD="/usr/bin/ruby $SCRIPT_NAME"
*/5 * * * * pgrep $SCRIPT_NAME > /dev/null || $SCRIPT_CMD