2016-12-26 90 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