여기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
먼저 pid를 얻으세요
ps aux | grep process_name
나를 위해 일해
다음과 같이 출력되어야 합니다.
root 2545 0.0 0.0 85128 3128 ? Ss Apr19 0:07 /usr/sbin/apache2 -k start
www-data 2569 0.0 0.0 2011388 10132 ? Sl Apr19 1:19 /usr/sbin/apache2 -k start
www-data 2570 0.0 0.0 2011380 10108 ? Sl Apr19 1:22 /usr/sbin/apache2 -k start
coteyr 23344 0.0 0.0 11748 928 pts/3 S+ 10:12 0:00 grep --colour=auto apache
그러면 당신 이 원하는 대로 kill 2545
할 수 있습니다.kill -9 2545
즉, 가능하면 kill을 사용하지 않는 것이 좋습니다. 프로세스를 종료하려면 "올바른" 방법을 사용하십시오. 종종 일종의 백그라운드 프로세스 정리 기능이 손실될 수 있습니다. 하지만 때로는 다른 방법이 없을 때도 있습니다.