(14の回答)
3年前に閉鎖されました。
scrape.pyというPythonスクリプト 。名前が示すように、これはWebクローラーであり、ログアウトしてsshセッションを終了した後でも、Linuxマシンで継続的に実行したいと考えています。この辺りをよく読んで、 nohup python sparke.py&を使用する提案がたくさんありました。 。これはうまくいきましたが、ログアウトするとすぐにスクリプトの実行が停止しました。 スーパーバイザーも調べました アプリケーションですが、root権限がないため、失敗します。この問題を解決する方法を教えていただけますか?ありがとうございます。
ベストアンサー
同様の目的で使用できるいくつかのアプローチ(ツールとコマンド)があります:
-
ターミナルエミュレータを
tmuxとして使用します およびscreen:-
tmux–ターミナルマルチプレクサ:単一の画面から多数のターミナルを作成、アクセス、および制御できます。tmux画面から切り離してバックグラウンドで実行を継続し、後で再接続することができます。その基本的な使用例は、こことここにあります。 -
画面コード> – VT100/ANSI端末エミュレーションを備えた画面マネージャー。これは、複数のプロセス(通常はインタラクティブシェル)間で物理端末を多重化するフルスクリーンウィンドウマネージャーです。プログラムは、ウィンドウが現在表示されていないときや、画面セッション全体がユーザーの端末から切り離されているときでも実行され続けます。使用例をここに示します。
-
-
バックグラウンドで実行されるデタッチコマンドを使用する(こちらもお読みください):
-
nohup– tty以外への出力で、ハングアップの影響を受けないコマンドを実行します。ハングアップ信号を無視して、COMMANDを実行します。コマンドをバックグラウンドにプッシュして現在のシェルセッションから切り離すための一般的な構文:nohup COMMAND&またはnohupCOMMAND> / dev / null 2>&1&nohupによって作成された情報ファイルを一時停止する場合 。その基本的な使用例は、こことここにあります。また、sshコマンドを使用して使用する方法も示しています。 -
disown–nohupに似ています しかし、それは組み込みのシェル(zsh、ksh、bash)です。ジョブテーブルからジョブを削除するため、または親シェルがジョブを受信した場合(たとえば、ユーザーがログアウトした場合)にSIGHUPシグナルがジョブに送信されないように、ジョブにマークを付けるために使用されます。使用例をここに示します。 -
setsid–セッションを作成し、プロセスグループIDを設定します。使用例setsid"COMMAND"。その他の例はこちら。
-
-
huponexitを使用します Bashオプション:$ ./script.py > output.txt & [1] 7461 $ shopt -s huponexit $ exit参照:
- Bashのジョブコントロールを使用してDigitalOceanでフォアグラウンドプロセスとバックグラウンドプロセスを管理する方法
-
スケジュールマネージャーを
atとして使用します およびcrontab:-
at–後でコマンドを実行します。atおよびbatch/ bin / shを使用して、後で実行される標準入力または指定されたファイルからコマンドを読み取ります。 。使用例:echo "COMMAND" |現在+1分。その他の例はこちら。 -
crontab–定期的なバックグラウンド作業をスケジュールします。他の目的でもよく知られていますが、コマンドが1回だけ実行される特定の時点を指定できます。優れたcrontab計算機がここにあります。
-
-
システムサービスを作成して開始します。以下を参照してください:
- systemdを使用して起動時に単一のコマンドを実行するにはどうすればよいですか?
- 起動時にスクリプトを実行するにはどうすればよいですか?