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
我尝试在我的 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