[解決済み】LinuxでPythonスクリプトをサービスやデーモンのように実行させる方法
質問
あるメールアドレスをチェックし、新しいメールを外部プログラムに渡すPythonスクリプトを書きました。 このスクリプトを24時間365日実行させるには、Linuxでデーモンやサービスにするなどの方法がありますか? また、プログラム中に終わらないループが必要でしょうか?それとも、コードを何度も再実行させるだけで可能でしょうか?
解決方法は?
ここで、2つの選択肢があります。
-
適切な クランジョブ スクリプトを呼び出すことができます。 Cronは、設定したスケジュールに従って定期的にスクリプトを起動するGNU/Linuxデーモンの一般的な名前です。 スクリプトをcrontabに追加するか、そのシンボリックリンクを特別なディレクトリに置くと、デーモンはバックグラウンドでスクリプトを起動する仕事を処理します。 次のようなことができます。 もっと読む をWikipediaでご覧ください。 様々な種類のcronデーモンがありますが、あなたのGNU/Linuxシステムにはすでにインストールされているはずです。
-
何らかの pythonのアプローチ (例えばライブラリ)を使って、スクリプトをデーモン化することができます。 そうすると、単純なイベントループが必要になります(イベントはタイマートリガーで、おそらく sleep 関数で提供されます)。
2.は、cronの機能を繰り返すことになるので、あまりお勧めしません。 Linuxのシステムパラダイムは、複数のシンプルなツールを相互作用させて問題を解決することです。 デーモンが必要な理由(定期的なトリガーだけでなく)がない限りは、他の方法を選んでください。
また、ループでdaemonizeを使っていてクラッシュが起きると、その後誰もメールをチェックしなくなります(指摘者 イワン・ネボストルーエフ へのコメントで これ の回答)。 スクリプトがcronジョブとして追加された場合、それは再びトリガーされるだけです。
関連
-
[解決済み】numpy: true_divide で無効な値に遭遇
-
[解決済み】 NameError: グローバル名 'xrange' は Python 3 で定義されていません。
-
[解決済み】Python: SyntaxError: キーワードは式になり得ない
-
[解決済み] 関数デコレータを作成し、それらを連鎖させるには?
-
[解決済み] Linuxで特定のテキストを含むすべてのファイルを検索するにはどうすればよいですか?
-
[解決済み] リストのリストからフラットなリストを作るには?
-
[解決済み] Pythonで現在時刻を取得する方法
-
[解決済み] Pythonで2つのリストを連結する方法は?
-
[解決済み] Linux上で動作するC++コードのプロファイリングを行うにはどうすればよいですか?
-
[解決済み] LinuxのシェルスクリプトでYes/No/Cancelの入力を促すにはどうしたらいいですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
opencvとpillowを用いた顔認証システム(デモあり)
-
Python 人工知能 人間学習 描画 機械学習モデル作成
-
Pythonコードの可読性を向上させるツール「pycodestyle」の使い方を詳しく解説します
-
任意波形を生成してtxtで保存するためのPython実装
-
風力制御におけるKS原理を深く理解するためのpythonアルゴリズム
-
Python LeNetネットワークの説明とpytorchでの実装
-
Python Pillow Image.save jpg画像圧縮問題
-
[解決済み] [Solved] sklearn error ValueError: 入力に NaN、infinity または dtype('float64') に対して大きすぎる値が含まれている。
-
[解決済み】numpyの配列連結。"ValueError:すべての入力配列は同じ次元数でなければならない"
-
[解決済み】 AttributeError: モジュール 'matplotlib' には属性 'plot' がない。