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


16

次のようにコマンドラインで通常どおりに入力してプロセスを開始した場合

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

そして、それをバックグラウンドに移動したいと決めた場合、バックグラウンドにそれを置くために、ctrl+zそしてbg 1(またはjobsIDを取得する必要がある場合は最初に)のようなものを使用できることを知っています。

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

また、私は追加することができますことを実現し&、バックグラウンドで起動して、元のコマンドの最後に、しかし問題はあなたがフォアグラウンドでプロセスを起動したときによろしくにあり、その後、あなたがバックグラウンドに移動したい実現します。

回答:


14

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

開始するには、screen -R〜/ .bash_profileまたは同等のものに追加し、ログアウトしてからログインし直します。

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

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

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

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

詳細については、screen(1)マンページまたはGNU Screen Manualを参照してください


1
screenパッケージが最初にインストールされていることを確認してください:)
ジョージタシウリス
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.