web-dev-qa-db-ja.com

端末からプロセスを切り離すことはできますか? (または、「画面を使用する必要があった!」)

可能性のある複製:
すでに開始されているプロセスをNohup /スクリーニングできますか?

Unix(特にLinux)では、通常のssh-> bashセッションでジョブを開始しました。もうすぐ仕事を辞めたいのですが、仕事に数時間かかることを実感しました。

画面でこの仕事を始めたばかりなら、私は離れて家に帰ることができました。しかし、私はしませんでした。

ジョブをsshセッションから切断する方法はありますか?コンピューターをシャットダウンして(TCP接続を削除してsshセッションを終了する)、それでもプログラムを実行し続けることができますか?)

出力は気にしません-実際には、stdoutをファイルにリダイレクトしました。私はそれを完全に実行したいだけです。

146
mike

ctrl-zを押してプロセスを中断し、bgを実行してバックグラウンドで実行することができます。

jobsを使用すると、この方法でバックグラウンド化されたすべてのプロセスの番号付きリストを表示できます。

次に、disown %1を実行して(1jobsによって出力されたプロセス番号に置き換えます)、プロセスを端末から切り離します。

名前にもかかわらず、disownを実行した後もプロセスはあなたによって所有され、それを開始したターミナルから切り離されるだけです。

この回答には詳細情報があります

201
David Pashley

あなたが探しているコマンドは「知られていない」と思います

21
Seigel
使用
 Nohupコマンド&
 
美しい:
 root @ index:〜#Nohup/usr/bin/curl localhost/begemot.php &
 [1] 894 
 root @ index:〜#Nohup:入力を無視して「Nohup.out」への出力を追加します
 
、この端末を終了します、続行するタスクが続行されます... 
13

Bashシェル内から:

control+z

次に、ジョブをバックグラウンドで実行し続けるには:

bg

後でjobsと入力して、プロセスがまだ実行されているかどうかを確認できます。

9
Joe

画面内で reptyr を使用すると、プロセス(またはその出力)を画面に移動できます。

8
mab

この問題を回避するために、定期的に使用するホストに接続するときにscreenを自動実行するように設定しました。

http://tlug.dnho.net/?q=node/239 はそれを行う1つの方法ですが、他にもさまざまなバリエーションがあります。

セッションの途中で予期しない切断が発生し、それ以外の場合は、長い時間をかけて何かを始める前にscreenを開始するのを忘れていたときに、1〜2回救われました。

7
David Spillett

コマンドの実行時にcrtl-Zを使用してからbgを使用したり、&を使用したりすると、100%の信頼性が得られません。ほとんどの場合は機能しますが、場合によっては期待どおりに機能しないことがあります(I/Oの使用法など)。
画面は信頼できるソリューションです。

6
radius

Bashを使用している場合は、control-Zで疑い、bgで背景を疑います。

ジョブ制御(man bashから)

 If the operating system on which bash is running supports job 
 control, bash contains facilities to use it.   Typing the  
 suspend  character  (typically ^Z, Control-Z) while a process 
 is running causes that process to be stopped and returns control 
 to bash.  Typing the delayed suspend character (typically ^Y, 
 Control-Y) causes the process  to  be stopped  when  it  
 attempts to read input from the terminal, and control to be 
 returned to bash.

ヘルプbg

bg: bg [job_spec ...]
    Place each JOB_SPEC in the background, as if it had been started with
    `&'.  If JOB_SPEC is not present, the Shell's notion of the current
    job is used.

ヘルプジョブ

jobs: jobs [-lnprs] [jobspec ...] or jobs -x command [args]
    Lists the active jobs.  The -l option lists process id's in addition
    to the normal information; the -p option lists process id's only.
5
Zoredache

バックグラウンドで実行したい場合は、unixコマンド at をお勧めします。これは、繰り返されないcronジョブのように、スケジュールされた時間にバックグラウンドでコマンドを開始します。ディストリビューションによっては、インストールしてatdデーモンを起動する必要がある場合があります。

4
Sylvain