Crontab 每分鐘運行腳本

Crontab 每分鐘運行腳本

我目前正在嘗試安排一個 cronjob 每分鐘運行一個 .sh 腳本檔案。

這是我的簡單腳本:

#!/bin/sh
echo "Hello World" >> /Users/navania/crontab-scrip.log

我將其保存在桌面上並將其命名為notify.sh。然後我打開一個新的終端機視窗並輸入crontab-e.這打開了一個新的 nano 文件,我在其中輸入:

* * * * * /Users/navania/Desktop/notify.sh

我保存並存在這個奈米文件。接下來我該做什麼才能讓 cronjob 成功運作?

到目前為止的步驟:

  1. 打開終端應用程式並輸入crontab-e.
  2. 這將打開一個新的 nano 文件,我在其中鍵入命令:* * * * * /Users/navania/Desktop/notify.sh
  3. 然後我點擊 control o 儲存它,然後點擊 control x 將其儲存在 CrontabTest 的名稱下。
  4. 當我退出時,它說沒有對 crontab 進行任何更改,這是沒有意義的。
  5. 然後我打開日誌文件,看看它是否每分鐘都列印“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 的文本輸出出現在任何終端中


還有這個問題:

  1. 然後我點擊 control o 儲存它,然後點擊 control x 將其儲存在名稱下CrontabTest
  2. 當我退出時,它說沒有對 crontab 進行任何更改,這是沒有意義的。

我相信您需要保存打開的任何臨時文件,而不是新文件。儲存時請勿變更名稱。

相關內容