
私は、Raspberry Pi (OS -Raspbian) を使用して小規模なホームオートメーション プロジェクトに取り組んでいます。
python-crontab モジュールを使用して、以前のエントリを置き換えずに複数の crontab ファイルを追加する方法を知りたいですcrontab -e
。
プログラムで (手動でcrontab -e
ファイルを追加せずに) 2 つの Python スクリプトをスケジュールします。最初のスクリプトは 5 分ごとに実行され、もう 1 つは 2 分ごとに実行されます。
python-crontab モジュールを使用して最初のスクリプトを正常にスケジュールできましたが、2 番目のスクリプトをスケジュールすると、最初のスクリプトが置き換えられましたcrontab -e
。では、以前の crontab ファイルを置き換えずに新しい crontab ファイルをスケジュールするにはどうすればよいでしょうか。
crontab のスケジュール設定の別の方法がある場合は、サンプル コードとともに提案してください :)
注: ファイルを手動で追加するのではなく、Python スクリプトのみを使用して crontab で Python スクリプトをスケジュールしたいと思いますcrontab -e
。
答え1
cron にエントリを追加するスクリプトを記述する場合 ( 経由でテキスト エディターを使用せずにcrontab -e
)、スクリプトは次のようになります。
crontab -l
一時ファイルを実行する- 最新のコマンドがすでにファイル内にあるかどうかを確認します。そうであれば停止します。
- 最新のコマンドを一時ファイルに追加する
crontab
一時ファイルをパラメータとして実行し、スケジュールされたコマンドを置き換えます。
参考のために:
- crontab(1)- 個々のユーザーのcrontabファイルを管理する
- crontab(5)- cron を駆動するためのテーブル
答え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 ( ~
) のリストが表示されます。
キーボードの挿入ボタンを押してモードを切り替え、最後の cron ジョブの最後に Enter キーを押します。
ティルダが消去され、ここに新しい cronjob を書き込むことができます。
挿入モードを終了するには、Esc キーを押し、Enter キーを押して:wq!
変更を保存します。