2017-06-02 43 views
0

設置crontab作業的正確執行命令是什麼?

我有幾個bashfiles在我想要定期運行的計算機上。

我可以在終端(Mac OS)中手動運行bashfiles,例如, cd'自己到正確的文件夾,然後執行,

./France_run.txt 

給出了所需的結果。


問題

我不想手動運行bashfiles。

我在crontab中創建了cronjob,例如

0  0  *  *  2  /Users/mypath/France_run.txt 

應該每個星期二在00:00運行。然而,沒有任何反應。

我只指這個文件並且錯過了'運行這個腳本'的命令?或者是別的什麼?

回答

0

您可能只是指該文件,並且可能在某處記錄了一個錯誤(通常是/var/log/message,或者在root用戶的郵件文件中,這在默認情況下在Mac中被禁用)。

有關通過cron運行腳本的事情是它運行在不同的環境下。當您正常登錄Bash會話時,某些環境變量會自動設置,因此係統會自動檢查路徑(文件系統中可找到可執行文件的位置)等內容。不同的Unix系統處理這種情況的方式稍有不同......我不記得Mac的處理細節,但在某些系統上,我必須明確地提供完整的路徑,例如Bash可執行文件爲了獲得東西的工作。

腳本的可執行文件的位置通常是/bin/bash/bin/sh或類似的東西。因此,在經歷Bash會話時,如果您致電/Users/mypath/France_run.txt並且該文件是可執行的Bash腳本(例如,第一行類似於#!/bin/bash,並且該文件的可執行位已設置),那麼系統知道自動運行諸如/bin/bash /Users/mypath/France_run.txt之類的東西。然而,在cron的上下文中,您不會自動獲得這些便利,因此您可能必須詳細說明所有內容(即指定所有二進制文件或可執行文件的完整路徑)。同樣,情況並非總是如此。我只是看了一個Debian系統,我創建了一些cron作業來運行腳本,並且我不必在那裏調用/bin/bash,但是我記得在Mac上需要做類似於過去的事情。

所以你的cron作業可能只需要指定猛砸二進制文件的完整路徑:

0 0 * * 2 /bin/bash /Users/mypath/France_run.txt

如果France_run.txt的所有調用系統二進制文件(如ls),您可能需要完全限定那些(/bin/ls而不是隻有ls)。

另外,根據劇本是怎麼寫的,它甚至可能是必要的cd到腳本的目錄,如果你手動運行它:

0 0 * * 2 cd /Users/mypath; /bin/bash ./France_run.txtcd是一個bash內置,所以沒有指定的路徑)

相關問題