2012-08-13 146 views
2

我有一個shell腳本像下面如何通過cron作業來運行一個shell腳本

echo "Hello World" 

的腳本位於/root/scripts/文件夾test.sh

我還創建了一個cron作業像下面

0-59 * * * * ./scripts/test.sh 

現在cron作業不是每分鐘都在test.sh中打印內容。

讓我知道我是否給了一個錯誤的目錄,或者我的代碼中有任何其他問題。

回答

5

我會

  1. 要明確WRT。您的目錄要從例如/root/scripts/test.sh。我不知道什麼cron會認爲目前目錄
  2. 將stdout重定向到日誌文件例如, ...test.sh > /tmp/cron.log(您可能想在某個階段使用2>&1重定向stderr)。 否則,你不會看到輸出。它被郵寄到cronjob所有者
  3. 請確保您已授予您的bash腳本執行權限(chmod +x /root/scripts/test.sh
  4. 請明確指出哪個腳本可執行文件將執行您的shell腳本。最好在頂部有一個腳本調用,例如#!/bin/sh或類似

讓東西在cron下運行是非常棘手的。克朗職位在大規模裁員的環境下運行。打印出腳本可用的環境(使用env)並與您的交互式shell提供的內容進行比較/對比是有益的。

+0

腳本執行完畢後,我可以在終端看到hello world? – user1093513 2012-08-13 10:12:43

+0

不,cron命令的輸出通過電子郵件發送給crontab的所有者。 – 2012-08-13 10:55:51

+0

@DouglasLeeder - thx重新發郵件。我已經在回答 – 2012-08-13 11:43:33

1

你應該使用

​​

運行腳本的每分鐘

,並檢查你的腳本文件夾的所有者,如果車主沒有PERMSSION執行腳本給誰有權

許可或更改所有者
+0

嗨,我寫了一個腳本,如果我用cron手動使用它,但在cron上它不起作用。這是我的cron:* * * * * sudo /opt/modulo/log/check.sh如果你能幫助我我會很高興 – Tomer 2017-05-14 12:17:22

0

在閱讀Andrew的正確答案之後,對於那些仍在進行調試的人來說,下一個細節需要考慮:執行cronjob時,必須知道正在執行的腳本可用的環境變量。在提供的示例中,腳本執行回顯,在CENTOS6系統上的回顯位於/ bin下。 echo命令是由shell通過搜索$ PATH環境變量中列出的目錄中的'echo'文件找到的。如果cronjob PATH環境變量不包含/ bin,該怎麼辦?在這種情況下,echo命令將失敗。

要查看你的$ PATH環境變量的內容做:

[[email protected] ~]$ echo $PATH 
/usr/local/bin:/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/sbin:/export/home/mcchiz/bin 

如果是這樣的問題,最簡單的解決方法是明確設置的路徑,「迴響」在你的腳本。要查看系統的回顯完整路徑,請在shell中輸入'which echo'。

例子:

[[email protected] ~]$ which echo 
/bin/echo 

因此,在這種情況下,你可以編輯腳本,代之以「回聲」「/斌/回聲」

下一個選項是設置$ PATH變量在腳本包含echo所在的目錄。

如果需要進一步的信息來了解上述情況,請研究「我在運行什麼shell以及我的環境變量是如何設置的?」,「什麼shell是cron使用的,以及如何設置cron環境變量?」,「如何查看我的cronjob的環境變量?「

0

當您在cron中添加文件時不能理解'./scripts/test.sh'。所以,你應該添加如下的cron:

0-59 * * * * bash /root/scripts/test.sh 

與您文件添加權限爲:

chmod a+x /root/scripts/test.sh 

當腳本運行該奧基。

相關問題