我有一個shell腳本像下面如何通過cron作業來運行一個shell腳本
echo "Hello World"
的腳本位於/root/scripts/
文件夾test.sh
我還創建了一個cron作業像下面
0-59 * * * * ./scripts/test.sh
現在cron作業不是每分鐘都在test.sh
中打印內容。
讓我知道我是否給了一個錯誤的目錄,或者我的代碼中有任何其他問題。
我有一個shell腳本像下面如何通過cron作業來運行一個shell腳本
echo "Hello World"
的腳本位於/root/scripts/
文件夾test.sh
我還創建了一個cron作業像下面
0-59 * * * * ./scripts/test.sh
現在cron作業不是每分鐘都在test.sh
中打印內容。
讓我知道我是否給了一個錯誤的目錄,或者我的代碼中有任何其他問題。
我會
/root/scripts/test.sh
。我不知道什麼cron會認爲目前目錄...test.sh > /tmp/cron.log
(您可能想在某個階段使用2>&1
重定向stderr)。 否則,你不會看到輸出。它被郵寄到cronjob所有者chmod +x /root/scripts/test.sh
)#!/bin/sh
或類似讓東西在cron下運行是非常棘手的。克朗職位在大規模裁員的環境下運行。打印出腳本可用的環境(使用env
)並與您的交互式shell提供的內容進行比較/對比是有益的。
你應該使用
運行腳本的每分鐘
,並檢查你的腳本文件夾的所有者,如果車主沒有PERMSSION執行腳本給誰有權
許可或更改所有者嗨,我寫了一個腳本,如果我用cron手動使用它,但在cron上它不起作用。這是我的cron:* * * * * sudo /opt/modulo/log/check.sh如果你能幫助我我會很高興 – Tomer 2017-05-14 12:17:22
在閱讀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的環境變量?「
當您在cron中添加文件時不能理解'./scripts/test.sh'。所以,你應該添加如下的cron:
0-59 * * * * bash /root/scripts/test.sh
與您文件添加權限爲:
chmod a+x /root/scripts/test.sh
當腳本運行該奧基。
腳本執行完畢後,我可以在終端看到hello world? – user1093513 2012-08-13 10:12:43
不,cron命令的輸出通過電子郵件發送給crontab的所有者。 – 2012-08-13 10:55:51
@DouglasLeeder - thx重新發郵件。我已經在回答 – 2012-08-13 11:43:33