pythonというscrape.py
というスクリプト。名前が示すように、それはWebクローラーであり、ログアウトしてsshセッションを終了した後でも、Linuxマシンで継続的に実行したいです。この辺りをよく読んで、Nohup python scrape.py &
の使用に関する多くの提案がありました。これはうまくいきましたが、ログアウトするとすぐにスクリプトの実行が停止しました。 supervisor
アプリケーションも調べましたが、ルート権限がないため失敗します。この問題を解決する方法を提案できますか?ありがとうございました。
同様の目的に使用できるいくつかのアプローチ(ツールとコマンド)があります。
端末エミュレーターをtmux
およびscreen
として使用します。
tmux
-端末マルチプレクサ:複数の端末を単一の画面から作成、アクセス、および制御できるようにします。 tmux
は画面から切り離され、バックグラウンドで実行を継続し、後で再接続されます。基本的な使用例が here および here で提供されています。
screen
-VT100/ANSIターミナルエミュレーションを備えたスクリーンマネージャー。これは、複数のプロセス(通常は対話型シェル)間で物理端末を多重化するフルスクリーンウィンドウマネージャーです...プログラムは、ウィンドウが現在表示されていない場合や、画面セッション全体がユーザーの端末から切り離されている場合でも実行を続けます。使用例が提供されています here 。
バックグラウンドで実行される分離コマンドを使用します( read also ):
Nohup
-非ttyへの出力で、ハングアップの影響を受けないコマンドを実行します。ハングアップ信号を無視して、COMMANDを実行します。コマンドをバックグラウンドにプッシュして現在のシェルセッションからデタッチする一般的な構文:Nohup COMMAND &
またはNohup
で作成された情報ファイルを一時停止する場合はNohup COMMAND >/dev/null 2>&1 &
。基本的な使用例が here および here で提供されています。また、 here は、sshコマンドを使用して使用する方法を示しています。
disown
-Nohup
に似ていますが、組み込みのシェル(zsh、ksh、bash)です。ジョブテーブルからジョブを削除したり、親シェルがそれを受け取った場合(ユーザーがログアウトした場合など)にSIGHUPシグナルが送信されないようにジョブをマークするために使用されます。使用例が提供されています here 。
setsid
-セッションを作成し、プロセスグループIDを設定します。使用例setsid "COMMAND"
。その他の例 こちら 。
スケジュールマネージャーをat
およびcrontab
として使用します。
システムサービスを作成して開始します。以下を参照してください。