ジョブを停止せずにバックグラウンドに送信する方法は?


10

Ctrl + zは現在のジョブをバックグラウンドに送信しますが、停止します。

そして、停止したジョブを再開する方法は?

回答:


17

「bg」を実行して、バックグラウンドで実行できます。

「fg」でフォアグラウンドに移動

bgとfgはPIDの代わりにジョブ#sをとるため、一度に複数のジョブを実行している場合は、「jobs」コマンドを使用してジョブ番号を取得します。


8

コマンドラインに「&」を付けて、プログラムをバックグラウンドジョブとして開始することもできます。

例えば

myprogram&

出力(stdoutとstderrの両方)は引き続き現在のttyに送られるため、通常は/ dev / nullまたはログファイルにリダイレクトすることをお勧めします。

myprogram>〜/ program.log 2>&1&

どちらの例でも、他と同様にバックグラウンドジョブであるため、 'fg'を使用してフォアグラウンドに戻すことができます(ただし、出力をリダイレクトした場合は、あまり表示されません)。


5

bashでは、「bg」を入力すると、入力が必要になるまでジョブがバックグラウンドになります。STDERRおよびSTDOUTへの出力は続行されますが、役に立たない可能性があります。「fg」と入力して、ジョブをフォアグラウンドに戻すことができます。

[adjuster@mx02 ~]$ cp ~/crap/* ~/crap2 
(Ctrl-Z)
[1]+  Stopped                cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ cp ~/crap3/* ~/crap4
(Ctrl-Z)
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ jobs
[1]+  Stopped                cp ~/crap ~/crap2 
[2]+  Stopped                cp ~/crap3/* ~/crap

[adjuster@mx02 ~]$ bg 1
[1]- cp ~/crap ~/crap2 &
[1]-  Exit 1                  cp ~/crap ~/crap2 

[adjuster@mx02 ~]$ fg 2
[adjuster@mx02 ~]$ 

つまり、長いコピージョブを開始して中断し、2番目の長いコピージョブを開始して中断し、最初のコピージョブをバックグラウンドに配置して実行し、その後、最初のコピージョブを終了しました。次に、最後のコピージョブをフォアグラウンドに入れて終了させます。


bg 1そしてfg 1私のために働かないがbg %1、そしてfg %1しなさい。
Alexej Magura

4

nohup task.sh&

バックグラウンドで実行され、出力は現在のディレクトリのnohup.outに送られます。ログアウトしても実行を続けます。


2

もう1つのオプションは、端末を開いたままにせずに同時に多くのプロセスを実行するために使用できる優れた画面ユーティリティです。また、bgやfgよりもはるかに簡単な対話性を実現します。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.