![Crontab 每分鐘運行腳本](https://rvso.com/image/1597818/Crontab%20%E6%AF%8F%E5%88%86%E9%90%98%E9%81%8B%E8%A1%8C%E8%85%B3%E6%9C%AC.png)
我目前正在嘗試安排一個 cronjob 每分鐘運行一個 .sh 腳本檔案。
這是我的簡單腳本:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
我將其保存在桌面上並將其命名為notify.sh。然後我打開一個新的終端機視窗並輸入crontab-e
.這打開了一個新的 nano 文件,我在其中輸入:
* * * * * /Users/navania/Desktop/notify.sh
我保存並存在這個奈米文件。接下來我該做什麼才能讓 cronjob 成功運作?
到目前為止的步驟:
- 打開終端應用程式並輸入
crontab-e
. - 這將打開一個新的 nano 文件,我在其中鍵入命令:
* * * * * /Users/navania/Desktop/notify.sh
- 然後我點擊 control o 儲存它,然後點擊 control x 將其儲存在 CrontabTest 的名稱下。
- 當我退出時,它說沒有對 crontab 進行任何更改,這是沒有意義的。
- 然後我打開日誌文件,看看它是否每分鐘都列印“Hello World”,但事實並非如此。
任何幫助,將不勝感激。謝謝!
答案1
您的腳本很可能嘗試每分鐘運行一次。
按照 Kamil 的步驟更改 crontab 行以包含 /bin/sh
稍微更改您的腳本以輸出到文件,而不是嘗試寫入螢幕,因為該命令不會在您的終端中運行。相反,它在自己的進程中運行,這就是為什麼您不會看到任何輸出。
例如,像這樣更改您的腳本:
#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log
並檢查您的 .log 檔案以查看是否正在向其中寫入新行。
答案2
您應該使腳本可執行:
chmod +x /Users/navania/Desktop/notify.sh
並確保已儲存腳本的檔案系統未安裝noexec
.然後命令
/Users/navania/Desktop/notify.sh
應該有效,cronjob 也應該有效。
或者 crontab 中的命令應該是
/bin/sh /Users/navania/Desktop/notify.sh
在這種情況下,可執行權限並不重要(腳本中的 shebang 也不重要)。
請注意人們不應該期望 cronjob 的文本輸出出現在任何終端中。
還有這個問題:
- 然後我點擊 control o 儲存它,然後點擊 control x 將其儲存在名稱下
CrontabTest
。- 當我退出時,它說沒有對 crontab 進行任何更改,這是沒有意義的。
我相信您需要保存打開的任何臨時文件,而不是新文件。儲存時請勿變更名稱。