2016-12-26 53 views
0

我想让我的cron命令从自定义shell中执行如下:crontab的定制外壳执行的cron

SHELL=/bin/cron-launcher.sh 
* * * * * test echo "toto" >> /tmp/shell.log 

的问题是,如果我指定我自己的shell文件/tmp/shell.log是空的。

我的自定义外壳的内容如下:

#!/bin/bash -e 

#Script use to launch cron tasks 

set -e 

SHELL="/bin/bash -e" 
LOGDIR="/var/log/cronlauncher/" 

echo "$USER" > /tmp/test.log 

用于启动cron中的用户是很好的输出到文件/tmp/test.log但是从cron中的cron命令echo "toto"是从未输出到文件/tmp/shell.log

我该如何让自定义shell正确执行cron命令。

这是为了使cron-launcher.sh脚本充当包装。

下面是我的/ var /日志/ cron的的提取物:

年12月26 15点55分01秒bf7fe8653ac9 crond的[658]:(测试)CMD(回声 “TOTO” >> /TMP /壳。

+0

'的cron-launcher.sh'没有壳,这是一个bash脚本。 – Cyrus

+0

这是真的,但我想使它像行为'壳' –

+0

或更简单地充当外壳 –

回答

0

这件事是通过执行解析以壳中的第二参数解决cron-launcher.sh

的FAC是从cron的

命令

SHELL=/bin/cron-launcher.sh * * * * * test echo "toto" >> /tmp/shell.log

在shell中被解析为$2cron-launcher

因此,我不得不探微如下修改我的代码:

#!/bin/bash 

#Script use to launch cron tasks 

SHELL="/bin/bash" 
LOGDIR="/var/log/cronlauncher/" 

#echo "$USER" >> /tmp/test.log 
COMMAND="$2" 
eval $COMMAND