2015-05-20 67 views
0

我想每15分鐘運行一次crontab。我嘗試這樣做:每15分鐘運行一個crontab,而不是在linux上工作redhat

0 */15 * * * ./usr/My_PATH/run.sh 

但我得到這個錯誤:

0 command not found 

有什麼錯的語法?

非常感謝。

UPDATE:

我糾正了劇本,我嘗試這樣做:

*/15 * * * * /My_Path/run.sh 

0,15,30,45 * * * * /My_Path/run.sh 

在這兩種情況下,我得到一個錯誤。

#1 bash: */15: No such file or directory 
#2 bash: 0,15,30,45 command not found 
+0

是你的腳本的正確路徑?該腳本是否有正確的#!家當? –

+0

是的,當我運行./run.sh它的作品。 – deltascience

+1

'。/ usr'的意思是「在這個作業運行的用戶帳戶的主目錄中」,所以除非你的腳本是'/ home/tantaoui/usr/My_Path/run.sh',否則... –

回答

3

如果:

0 */15 * * * ./usr/My_PATH/run.sh 

失敗,此錯誤:

0 command not found 

然後你想運行它作爲一個shell命令。您需要將其提供給crontab命令。有幾種方法可以做到這一點。

crontab -l將列出您的crontab的當前內容;它不會修改它。

crontab -e將在文本編輯器中打開(複製)您的crontab並讓您修改它。這可能是更新它的最簡單方法。

crontab filename讀取指定的文件,用您的當前crontab替換的內容。 (如果你已經有一個crontab,這將悄悄地打開它。)

我建議的方法是保留一個包含你的crontab的單獨文件(比如crontab.txt)。

首先,如果你已經有一個非空的crontab(與crontab -l檢查),將其保存到文件:任何增加或其他變化,你想該文件

crontab -l > crontab.txt 

製作,然後使用

crontab crontab.txt 

安裝更新的crontab。

你可以保留備份副本(我維護我的源代碼管理系統),這樣你就可以恢復,如果你搞砸了。如果你想測試一些東西,你可以快速執行crontab -e,然後重新運行crontab crontab.txt以恢復到存儲的crontab。


你提問中的crontab行的語法:

0 */15 * * * ./usr/My_PATH/run.sh 

是正確的,但路徑./usr/My_PATH/run.sh看起來可能是不正確的。 Cron作業從您的主目錄運行,因此只有當usr目錄直接位於您的主目錄下時(這種情況下不需要./),路徑纔有效。指定完整路徑可能更好,可以從$HOME/開始。

+1

那裏不會有'crontab crontab.txt'暴風影音嗎?我建議可能值得更清楚的是,情況就是如此。 – Sobrique

+1

@Sobrique:是的。我確實提到過,但我同意它應該更清楚。我很快會編輯這個問題。 –

+0

@Sobrique:這看起來如何? –

2

是的。

第一個字段是分鐘。第二場是幾個小時。你每隔15小時在零點零分鐘就關閉它。所以基本上 - 每天15:00。

你想:

*/15 * * * * /some_script 

而且 - ./ - 這是一個相對路徑,而這可能是一個壞主意:用cron,因爲它沒有chdir運行的東西。使用絕對路徑來避免混淆。如果你絕對需要在該腳本工作的特定目錄,你可以嘗試:

cd /path/to/script && ./this_script 

所以它很可能你已經有了破權限或只是沒有發現,您使用的是相對路徑。

+0

我用'*/15 * * * */My_PATH/run.sh'試過了,我得到了'bash:*/15:沒有這樣的文件或目錄'。 – deltascience

+0

....你如何編輯你的crontab?你正在運行'crontab -e'吧? – Sobrique

相關問題