Crontab 和变量

Crontab and variables

我尝试在我的 Crontab 中使用变量,但事实是它们工作起来很奇怪。这是一个例子:

FOO=echo date
BAR=/root/foobar
COMB=echo date >> /root/comb

* * * * * $FOO >> $BAR
* * * * * $COMB

foobar 工作正常,但 comb 没有(未创建梳理文件)。 还有像:

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

但由于这些限制,它不起作用。或者也许我做错了什么) 所有东西都在 SmartOS(某种 Solaris)中的 lx 品牌区域 Ubuntu 14.04 LX 0150320 工作。

没有符号的限制,只是它们有特殊的含义,你不知道。

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

编辑:

这就是您检查状态脚本的方法,运行 如果不是 运行ning:

SCRIPT_NAME='/absolutepath/RubyScripts/Script.rb'
SCRIPT_CMD="/usr/bin/ruby $SCRIPT_NAME"

*/5 * * * * pgrep $SCRIPT_NAME > /dev/null || $SCRIPT_CMD