1. ホーム
  2. パイソン

[解決済み】LinuxでPythonスクリプトをサービスやデーモンのように実行させる方法

2022-04-21 14:57:55

質問

あるメールアドレスをチェックし、新しいメールを外部プログラムに渡すPythonスクリプトを書きました。 このスクリプトを24時間365日実行させるには、Linuxでデーモンやサービスにするなどの方法がありますか? また、プログラム中に終わらないループが必要でしょうか?それとも、コードを何度も再実行させるだけで可能でしょうか?

解決方法は?

ここで、2つの選択肢があります。

  1. 適切な クランジョブ スクリプトを呼び出すことができます。 Cronは、設定したスケジュールに従って定期的にスクリプトを起動するGNU/Linuxデーモンの一般的な名前です。 スクリプトをcrontabに追加するか、そのシンボリックリンクを特別なディレクトリに置くと、デーモンはバックグラウンドでスクリプトを起動する仕事を処理します。 次のようなことができます。 もっと読む をWikipediaでご覧ください。 様々な種類のcronデーモンがありますが、あなたのGNU/Linuxシステムにはすでにインストールされているはずです。

  2. 何らかの pythonのアプローチ (例えばライブラリ)を使って、スクリプトをデーモン化することができます。 そうすると、単純なイベントループが必要になります(イベントはタイマートリガーで、おそらく sleep 関数で提供されます)。

2.は、cronの機能を繰り返すことになるので、あまりお勧めしません。 Linuxのシステムパラダイムは、複数のシンプルなツールを相互作用させて問題を解決することです。 デーモンが必要な理由(定期的なトリガーだけでなく)がない限りは、他の方法を選んでください。

また、ループでdaemonizeを使っていてクラッシュが起きると、その後誰もメールをチェックしなくなります(指摘者 イワン・ネボストルーエフ へのコメントで これ の回答)。 スクリプトがcronジョブとして追加された場合、それは再びトリガーされるだけです。