バックグラウンドで実行する必要があるスクリプトがあります。同じスクリプトをフォアグラウンドで実行すると、スクリプトが正しく実行され、手動で中断(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にある場合)。