2012-08-23 127 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