2012-08-23 124 views
0

我试图在cron中运行一个脚本作为一个工作。linux 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> 

此命令似乎没有任何效果和根继续使用旧密码......但是这命令后出现的问题CRON !

如何解决CRON问题,以正确运行脚本?

注意:手动运行脚本,一切都很好!

+0

未运行* – erjoalgo

回答

5

你的脚本没有she-bang行。插入此行到脚本的顶部:

#!/bin/bash 

这是可能的脚本是由使用不同的语法来定义函数不同的shell中运行。

+0

解决了,非常感谢!我仍然是Linux世界的初学者! –

2

请尝试以下操作之一。还要检查在/ var /日志/ cron的日志

0 18 * * * /bin/bash /scripts/talk.sh > /tmp/talk.log 
+0

其中一些可能是PATH问题,因此您可以在您的crontab中添加以下内容PATH =/usr/kerberos/sbin:/ usr/kerberos/bin:/ usr/local/sbin:/ usr/local/bin:/ sbin:/仓:/ usr/sbin目录:在/ usr/bin中:/根/ bin中 – Satish

2

@choroba指出了存在的主要问题:你的文字没有家当,所以你不知道什么壳它在运行的第二个问题是,function是。非标准 - bash的容忍(即忽略),但其他一些炮弹将BARF它:

$ function talkMe() { 
sh: Syntax error: "(" unexpected 
$ echo $? 
2 

(请注意,退出状态在这里比赛有什么在日志中。)

修复任何一个问题应该是足以使其工作,但它可能是最好的解决办法两者:

#!/bin/bash 
echo "Defining function" 
talkMe() { 
    echo "me" 
} 
echo "Start talking" 
talkMe