web-dev-qa-db-ja.com

プロセスを停止せずにバックグラウンドで実行する-(ctrl + z)?

コマンドラインで通常のように入力してプロセスを開始すると、

wget http://site.com/bigfile.Zip

そして、それをバックグラウンドに移動することを決定した場合、ctrl+z、次にbg 1(または、IDを取得する必要がある場合は、最初にjobs)などを使用して、バックグラウンドで。

私の質問は、それを実行するctrl+z以外の別のショートカットのように、ジョブを停止せずにフォアグラウンドからバックグラウンドに直接移動する方法があるかどうかです。

また、元のコマンドの最後に&を追加してバックグラウンドで開始できることも理解していますが、問題は、フォアグラウンドでプロセスを開始するタイミングとthenに関するものです。背景に移動したいことに気づきます。

17
cwd

はい、絶対に screen(1) が答えです。

はじめに、_ /。bash_profileまたは同等のものにscreen -Rを追加し、ログアウトして、再度ログインします。

バックグラウンドで実行中の処理を続行するには、Ctrl-A、Nの順に押します。これにより、新しいターミナル画面がフォアグラウンドで作成され、バックグラウンドで実行中のプロセスがシームレスに続行されます。

Control-Aを押してから "を押して、開いている画面のインタラクティブなリストを取得するか、Control-Aを押してから番号を押して、特定の画面に直接切り替えます。

元々の要件は、プロセスを停止せずにバックグラウンドに移動できることでした。画面には2つの追加の利点があり、一度に複数のことを実行したい場合、これらはhugeです。

  1. Control-Z、bg、fgなどを使用するよりも、よりスムーズにプロセスを切り替えることができます。
  2. ターミナルセッションが切断された場合、プロセス(wget http://example.com/bigfile.isoなど)は終了しません。再接続すると、すべてのシェルセッションが待機します。

詳細は screen(1)manpage または GNU Screen Manual を参照してください。

14
Skyhawk

bgは停止したジョブを開始し、バックグラウンドで実行したままにします。基本的にfgbgは同じように実行し、プロセスを再開しますが、fgはフォアグラウンドで実行し、bgはバックグラウンドで実行します。

bg %(number of the job)を実行するだけで、「runnning」という出力が得られます。ジョブを確認すると、ジョブが実行中で停止していないことがわかります。

0
Vcoe