2014-07-08 126 views
0

我有一個crontab的問題,它不執行我的shell sript。crontab將不會執行腳本

的crontab -l:

01 * * * * login sh ~/delete.sh 

一般每分鐘就應該執行delete.sh,但事實並非如此。

沒有在系統日誌:

Jul 8 14:00:31 crontab[22307]: (login) LIST (login) 
Jul 8 14:01:08 crontab[22581]: (login) BEGIN EDIT (login) 
Jul 8 14:01:51 crontab[22581]: (login) REPLACE (login) 
Jul 8 14:01:51 crontab[22581]: (login) END EDIT (login) 
Jul 8 14:02:01 cron[15185]: (login) RELOAD (crontabs/login) 
--> THAT'S ALL. 

PS:我已經嘗試運行它爲根,作爲普通用戶,在這兩種情況下沒有運氣。

+0

哪個linux版本? – Stedy

+0

ubuntu-14.04-server-i386 – NebuK

+0

嘗試用'/ bin/sh'替換'sh',crontab不一定具有所有需要的路徑。 – favoretti

回答

4

你期待這樣的:

01 * * * * login sh ~/delete.sh 

運行該命令的每一分鐘。事實上,它只在每小時過去一分鐘運行。

它改成這樣:

* * * * * login sh ~/delete.sh 

爲了解決在評論中提出的問題:

Cron作業用有限$PATH運行,但/bin肯定會在$PATH,所以沒有必要用/bin/sh代替sh

不需要明確調用sh。只要確保~/delete.sh有一個合適的shebang#!/bin/sh#!/bin/bash)並且它是可執行的(chmod +x ~/delete.sh),並且您可以直接調用它。

我不知道你爲什麼有一個login命令。嘗試從cron作業登錄是沒有意義的。在任何情況下,login都不會將命令作爲參數。

如果login是用戶名而不是命令,請記住crontab條目有兩種不同的語法。在正常語法中,每行包含5個字段,指定作業運行的時間,後跟命令及其參數。 A 系統 crontab條目在時間規範和命令之間添加一個用戶帳戶名稱。 man 5 crontab瞭解詳情。在正常使用情況下,您應該使用普通用戶語法並使用crontab命令管理您的crontab;除非您絕對必須,否則請勿編輯/etc/crontab/etc/cron.*以下的文件。