バックステージコース

バックステージコース

バックグラウンドで実行する必要があるスクリプトがあります。同じスクリプトをフォアグラウンドで実行すると、スクリプトが正しく実行され、手動で中断(ctrl^c)するまで停止しません。

次のコマンドがバックグラウンドでスクリプトを実行すると確信しています。

sudo -u webs ./spagent_L1 &

上記のコマンドを実行すると、ジョブ番号とプロセス番号が提供されます。

[1] 10118

その後、Enterを2回押すとジョブが停止します。

[1]+ Stopped    sudo -u webs ./spagent_L1

バックグラウンドで実行されているジョブを確認すると、ジョブは停止したとマークされます。

$> jobs
[1]+ Stopped    sudo -u webs ./spagent_L1

そして、プロセスが実行中であることを確認すると、上記のスクリプトが実行中であることがわかります。

$> ps -eo user,ppid,pid,cmd,state | grep -i spagent
root 10118 9383 0 05:42 pts/1 00:00:00 sudo -u webs ./spagent_L1 T
ape  10122 3983 0 05:42 pts/1 00:00:00 grep -i spagent R

プロセス10118を終了しない限り、jobsコマンドは、プロセスが停止したことを示す出力を表示します。プロセスが終了すると、jobsコマンドは何も返しません。

もしそうなら、上記の出力はプロセスがまだ実行中であることを意味しますか?誰でもそこで何が起こっているのかを理解するのに役立ちますか?また、スクリプトを停止せずにバックグラウンドで実行する方法もあります。

よろしくお願いします。

答え1

次のようにしてバックグラウンドでスクリプトを実行できます。(sudo -u webs ./spagent_L1 &)これにより、スクリプトを閉じなくても端末を閉じることができます(DEにある場合)。

関連情報