如何以程式設計方式新增新的 crontab 檔案而不替換先前的文件

如何以程式設計方式新增新的 crontab 檔案而不替換先前的文件

我正在使用樹莓派(作業系統-Raspbian)開發一個小型家庭自動化專案。

我想知道如何使用 python-crontab 模組添加多個 crontab 檔案而不替換crontab -e?中的先前條目

我想以程式設計方式(無需手動前往crontab -e並新增檔案)安排兩個 python 腳本 - 第一個腳本每 5 分鐘後執行一次,另一個腳本每 2 分鐘後執行一次。

我成功地使用 python-crontab 模組安排了第一個腳本,但是當我安排第二個腳本時,它替換了crontab -e.那麼如何安排新的 crontab 檔案而不替換先前的檔案呢?

如果有另一種 crontab 調度方式,請使用範例程式碼提出建議:)

注意:- 我想僅使用 python 腳本在 crontab 中安排 python 腳本,而不是手動添加crontab -e.

答案1

如果你想編寫一個腳本來在 cron 中新增條目(不使用文字編輯器crontab -e),它會是這樣的:

  • 運行crontab -l到臨時文件
  • 檢查您的最新命令是否已在文件中。如果是這樣,請停止。
  • 將最新命令追加到臨時檔案中
  • crontab使用臨時檔案作為參數運行,以替換預定的命令

以供參考:

答案2

既然 crontab 畢竟是文字文件,為什麼不直接附加文字呢?

with open("/var/spool/cron/crontabs/john", "a") as ctfile:
    ctfile.write("1 0 * * 3 /path/to/newcommand --option")

答案3

crontab -e實際上是一個列出所有 cronjobs 的檔案。

當您鍵入時,crontab -e您將獲得先前的 cronjobs 和 tildas ( ~) 的清單。

按下鍵盤上的插入按鈕在模式之間切換,然後在最後一個 cronjob 結束時按 Enter 鍵。

它將刪除 tilda,您可以在此處編寫新的 cronjob。

若要退出插入模式,請按 escape 並輸入:wq!以儲存變更。

相關內容