GNU/Linux >> Linux の 問題 >  >> Ubuntu

Sshセッションをログオフした後もPythonプログラムを実行し続けますか?

この質問にはすでに回答があります :sshセッションの終了後にプロセスを実行し続ける方法は?

(14の回答)
3年前に閉鎖されました。

scrape.pyというPythonスクリプト 。名前が示すように、これはWebクローラーであり、ログアウトしてsshセッションを終了した後でも、Linuxマシンで継続的に実行したいと考えています。この辺りをよく読んで、 nohup python sparke.py&を使用する提案がたくさんありました。 。これはうまくいきましたが、ログアウトするとすぐにスクリプトの実行が停止しました。 スーパーバイザーも調べました アプリケーションですが、root権限がないため、失敗します。この問題を解決する方法を教えていただけますか?ありがとうございます。

ベストアンサー

同様の目的で使用できるいくつかのアプローチ(ツールとコマンド)があります:

  1. ターミナルエミュレータをtmuxとして使用します およびscreen

    • tmux –ターミナルマルチプレクサ:単一の画面から多数のターミナルを作成、アクセス、および制御できます。 tmux 画面から切り離してバックグラウンドで実行を継続し、後で再接続することができます。その基本的な使用例は、こことここにあります。

    • 画面 – VT100/ANSI端末エミュレーションを備えた画面マネージャー。これは、複数のプロセス(通常はインタラクティブシェル)間で物理端末を多重化するフルスクリーンウィンドウマネージャーです。プログラムは、ウィンドウが現在表示されていないときや、画面セッション全体がユーザーの端末から切り離されているときでも実行され続けます。使用例をここに示します。

  2. バックグラウンドで実行されるデタッチコマンドを使用する(こちらもお読みください):

    • nohup – tty以外への出力で、ハングアップの影響を受けないコマンドを実行します。ハングアップ信号を無視して、COMMANDを実行します。コマンドをバックグラウンドにプッシュして現在のシェルセッションから切り離すための一般的な構文: nohup COMMAND& またはnohupCOMMAND> / dev / null 2>&1& nohupによって作成された情報ファイルを一時停止する場合 。その基本的な使用例は、こことここにあります。また、sshコマンドを使用して使用する方法も示しています。

    • disown nohupに似ています しかし、それは組み込みのシェル(zsh、ksh、bash)です。ジョブテーブルからジョブを削除するため、または親シェルがジョブを受信した場合(たとえば、ユーザーがログアウトした場合)にSIGHUPシグナルがジョブに送信されないように、ジョブにマークを付けるために使用されます。使用例をここに示します。

    • setsid –セッションを作成し、プロセスグループIDを設定します。使用例setsid"COMMAND" 。その他の例はこちら。

  3. huponexitを使用します Bashオプション:

    $ ./script.py > output.txt &
    [1] 7461
    $ shopt -s huponexit
    $ exit
    

    参照:

    • Bashのジョブコントロールを使用してDigitalOceanでフォアグラウンドプロセスとバックグラウンドプロセスを管理する方法
  4. スケジュールマネージャーをatとして使用します およびcrontab

    • at –後でコマンドを実行します。 at およびbatch / bin / sh を使用して、後で実行される標準入力または指定されたファイルからコマンドを読み取ります。 。使用例: echo "COMMAND" |現在+1分 。その他の例はこちら。

    • crontab –定期的なバックグラウンド作業をスケジュールします。他の目的でもよく知られていますが、コマンドが1回だけ実行される特定の時点を指定できます。優れたcrontab計算機がここにあります。

  5. システムサービスを作成して開始します。以下を参照してください:

    • systemdを使用して起動時に単一のコマンドを実行するにはどうすればよいですか?
    • 起動時にスクリプトを実行するにはどうすればよいですか?
関連:apt-cacheポリシーにはsudoが必要ですか?
Ubuntu
  1. 切断後もリモートSSHセッションとプロセスを実行し続けるための5つの方法

  2. Linux – Watchコマンドを使用した後、特定のプログラムの出力の監視を停止しますか?

  3. 実行中のターミナルプログラムのプロセスID(pid)を見つける方法は?

  1. SSHセッションからログアウトした後もコマンドを実行し続ける4つの方法

  2. watch コマンドを使用した後、特定のプログラムの出力の監視を停止しますか?

  3. SSH - ~/.ssh/config ファイルに -t コマンドを含める方法

  1. Ssh – Sshセッションが切断された後もプロセスを実行し続けますか?

  2. Ssh –セッション終了後にSshセッションの実行中に開始するプロセスを作成するにはどうすればよいですか?

  3. ふたを閉じた状態でUbuntuサーバーをラップトップで実行し続けますか?