我正在尝试将脚本作为cron中的一个作业运行。
剧本:
echo "Defining function"
function talkMe() {
echo "me"
}
echo "Start talking"
talkMe
cron工作:
0 18 * * * /scripts/talk.sh > /tmp/talk.log
cron errror:
Aug 23 11:24:01 database CRON[8497]: (root) CMD (/scripts/talk.sh > /tmp/talk.log)
Aug 23 11:24:01 database CRON[8494]: (CRON) error (grandchild #8497 failed with exit status 2)
test.log:
Defining function
在我尝试更改ROOT密码之前,脚本运行正常:
sudo su
passwd <my new pass for root>
此命令似乎没有效果,ROOT继续使用旧密码......但是在此命令之后出现了CRON问题!
如何解决CRON问题,正确运行脚本?
注意:手动运行脚本,一切都很顺利!
答案 0 :(得分:5)
你的剧本没有她的行。将此行插入脚本的顶部:
#!/bin/bash
脚本可能由另一个使用不同语法定义函数的shell运行。
答案 1 :(得分:2)
尝试以下一项。还要检查/ var / log / cron logs
0 18 * * * /bin/bash /scripts/talk.sh > /tmp/talk.log
答案 2 :(得分:2)
@choroba指出了主要问题:你的脚本没有shebang,所以你不知道它运行的是什么shell。第二个问题是function
是非标准的 - bash容忍(即忽略)它,但是其他一些炮弹会对它进行抨击:
$ function talkMe() {
sh: Syntax error: "(" unexpected
$ echo $?
2
(请注意,此处的退出状态与日志中的内容相符。)
修复任何一个问题应该足以让它工作,但最好同时解决这两个问题:
#!/bin/bash
echo "Defining function"
talkMe() {
echo "me"
}
echo "Start talking"
talkMe