Crontab和变量

时间:2016-01-12 12:09:37

标签: bash ubuntu crontab

我试图在我的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)中。

1 个答案:

答案 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