可能性のある複製:
すでに開始されているプロセスをNohup /スクリーニングできますか?
Unix(特にLinux)では、通常のssh-> bashセッションでジョブを開始しました。もうすぐ仕事を辞めたいのですが、仕事に数時間かかることを実感しました。
画面でこの仕事を始めたばかりなら、私は離れて家に帰ることができました。しかし、私はしませんでした。
ジョブをsshセッションから切断する方法はありますか?コンピューターをシャットダウンして(TCP接続を削除してsshセッションを終了する)、それでもプログラムを実行し続けることができますか?)
出力は気にしません-実際には、stdoutをファイルにリダイレクトしました。私はそれを完全に実行したいだけです。
ctrl-z
を押してプロセスを中断し、bg
を実行してバックグラウンドで実行することができます。
jobs
を使用すると、この方法でバックグラウンド化されたすべてのプロセスの番号付きリストを表示できます。
次に、disown %1
を実行して(1
をjobs
によって出力されたプロセス番号に置き換えます)、プロセスを端末から切り離します。
名前にもかかわらず、disown
を実行した後もプロセスはあなたによって所有され、それを開始したターミナルから切り離されるだけです。
あなたが探しているコマンドは「知られていない」と思います
使用 Nohupコマンド& 美しい: root @ index:〜#Nohup/usr/bin/curl localhost/begemot.php & [1] 894 root @ index:〜#Nohup:入力を無視して「Nohup.out」への出力を追加します 、この端末を終了します、続行するタスクが続行されます...
Bashシェル内から:
control+z
次に、ジョブをバックグラウンドで実行し続けるには:
bg
後でjobs
と入力して、プロセスがまだ実行されているかどうかを確認できます。
画面内で reptyr を使用すると、プロセス(またはその出力)を画面に移動できます。
この問題を回避するために、定期的に使用するホストに接続するときにscreen
を自動実行するように設定しました。
http://tlug.dnho.net/?q=node/239 はそれを行う1つの方法ですが、他にもさまざまなバリエーションがあります。
セッションの途中で予期しない切断が発生し、それ以外の場合は、長い時間をかけて何かを始める前にscreen
を開始するのを忘れていたときに、1〜2回救われました。
コマンドの実行時にcrtl-Zを使用してからbgを使用したり、&を使用したりすると、100%の信頼性が得られません。ほとんどの場合は機能しますが、場合によっては期待どおりに機能しないことがあります(I/Oの使用法など)。
画面は信頼できるソリューションです。
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.
バックグラウンドで実行したい場合は、unixコマンド at をお勧めします。これは、繰り返されないcronジョブのように、スケジュールされた時間にバックグラウンドでコマンドを開始します。ディストリビューションによっては、インストールしてatdデーモンを起動する必要がある場合があります。