我想让我的 cron 命令从自定义 shell 中执行,如下所示:
SHELL=/bin/cron-launcher.sh
* * * * * test echo "toto" >> /tmp/shell.log
问题是如果我指定我自己的 shell,文件/tmp/shell.log 是空的。
我自定义的shell内容如下:
#!/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/log/cron 的摘录:
Dec 26 15:55:01 bf7fe8653ac9 CROND[658]: (test) CMD ( echo "toto" >> /tmp/shell.
最佳答案
通过执行解析到 shell cron-launcher.sh
的第二个参数解决了这个问题
事实是来自 cron 的命令 echo "toto">>/tmp/shell.log
SHELL=/bin/cron-launcher.sh
* * * * * 测试 echo "toto">>/tmp/shell.log
在 shell cron-launcher
中被解析为 $2
。
因此我不得不修改我的代码如下:
#!/bin/bash
#Script use to launch cron tasks
SHELL="/bin/bash"
LOGDIR="/var/log/cronlauncher/"
#echo "$USER" >> /tmp/test.log
COMMAND="$2"
eval $COMMAND
关于linux - crontab 自定义 shell 执行 cron,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41333512/