基本的なジョブ制御:ジョブの停止、スタックへのジョブの追加、および「fg」

基本的なジョブ制御:ジョブの停止、スタックへのジョブの追加、および「fg」

タスク制御はおそらく私がLinuxで一番好きな部分です。私はコンピュータを一度に数日間使用できないようにする計算的に厳しいプロセスを開始することがよくありますCTRL-Zfg

しかし、時にはタスクスタックにタスクを挿入したい場合があります。私は何をすべきか分からなかった。

私はそれを使用していますbash

次のように見えます。

$ ./reallybigjob
^Z
[1]+  Stopped                 reallybigjob
$ (stuff I don't know) && ./otherbigjob
$ fg

答え1

ジョブスタックはなく、各ジョブは独立して処理されます。

あなたはできますfg; otherbigjob。これにより、コマンドの実行が停止するreallybigjobと、再び前景に戻ります。これは、最初のジョブ以降の実行をキューに入れるのとは異なります。 +を押すとすぐに始まります。 +を押すと死ぬ。バックグラウンドにとどまり、その後他のジョブをキューに入れることはできません。fgotherbigjobotherbigjobCtrlZotherbigjobCtrlCreallybigjobotherbigjob

ジョブがCPUを多用する場合、このbatchユーティリティを使用すると、CPUが使用されていないときに次のジョブをスケジュールできます。

答え2

バックグラウンドで複数のタスクを実行または一時停止できます。

$ ./reallybigjob &
[1] 873
$ ./otherbigjob &
[2] 875
$ jobs
[1]-  Running                 ./reallybigjob &
[2]+  Running                 ./otherbigjob &
$ fg 1
./reallybigjob
^Z
[1]+  Stopped                 ./reallybigjob
$ fg 2
./otherbigjob
^Z
[2]+  Stopped                 ./otherbigjob
$ jobs
[1]-  Stopped                 ./reallybigjob
[2]+  Stopped                 ./otherbigjob
$bg 1
[1]- ./reallybigjob &
$ jobs
[1]-  Running                 ./reallybigjob &
[2]+  Stopped                 ./otherbigjob
$

関連情報