ここhttps://unix.stackexchange.com/a/104825/109539Manは、バックグラウンドプロセスを停止するにはkill + PIDを使用する必要があると言います。ただし、kill + PIDを使用してバックグラウンドプロセスを停止することはできず、kill + JOB IDのみを停止できます。
[KPE@home Temp]$ jobs
[KPE@home Temp]$ ps
PID TTY TIME CMD
13270 pts/0 00:00:00 bash
23257 pts/0 00:00:00 ps
[KPE@home Temp]$ mc &
[1] 23258
[KPE@home Temp]$ ps
PID TTY TIME CMD
13270 pts/0 00:00:00 bash
23258 pts/0 00:00:00 bash
23262 pts/0 00:00:00 mc
23264 pts/0 00:00:00 ps
[1]+ Stopped . /usr/libexec/mc/mc-wrapper.sh
[KPE@home Temp]$ kill -s 15 23262
[KPE@home Temp]$ ps
PID TTY TIME CMD
13270 pts/0 00:00:00 bash
23258 pts/0 00:00:00 bash
23262 pts/0 00:00:00 mc
23266 pts/0 00:00:00 ps
[KPE@home Temp]$ kill %1
[1]+ Terminated . /usr/libexec/mc/mc-wrapper.sh
[KPE@home Temp]$ ps
PID TTY TIME CMD
13270 pts/0 00:00:00 bash
23267 pts/0 00:00:00 ps
[KPE@home Temp]$
だから問題はpid killでbgプロセスを停止する方法です。
ベストアンサー1
C-Z
プログラムが(mc
=送信SIGSTP
またはSIGSTOP
=一時停止した場合(シェルで「中止」と表示されます))、SIGKILL
再開されるまで信号はすぐに受け入れられません(除外しますが、使用するのはうまくいきません)。再開すると、シグナル(一時停止中に待機しているシグナルも含む)をSIGCONT
受け入れます。SIGTERM
kill -CONT $!; kill -TERM $! # $! refers to the pid of the last-spawned job
kill %1
これは、シェルの組み込み機能がkill
後でこれらの2つのステップを実行できるために機能します。