Programing

리눅스 : 백그라운드 작업 종료

lottogame 2020. 5. 17. 10:26
반응형

리눅스 : 백그라운드 작업 종료


리눅스에서 마지막으로 생성 된 백그라운드 작업을 어떻게 죽일 수 있습니까?

예:

doSomething
doAnotherThing
doB &
doC
doD
#kill doB
????

bash에는 이것을위한 특별한 변수가 있습니다 :

kill $!

$! 백그라운드에서 마지막으로 실행 된 프로세스의 PID로 확장됩니다.


당신은 직업 번호로 죽일 수 있습니다. 백그라운드에서 작업을 넣으면 다음과 같은 내용이 표시됩니다.

$ ./script &
[1] 35341

이는 [1]작업 번호이며 다음과 같이 참조 될 수 있습니다.

$ kill %1
$ kill %%  # Most recent background job

작업 번호 목록을 보려면 jobs명령을 사용하십시오 . 더 많은 것 man bash:

쉘에서 작업을 참조하는 방법에는 여러 가지가 있습니다. 캐릭터 %는 작업 명을 소개합니다. 작업 번호 n는이라고 할 수 있습니다 %n. 작업을 시작하는 데 사용되는 이름의 접두사를 사용하거나 명령 줄에 나타나는 하위 문자열을 사용하여 작업을 참조 할 수도 있습니다. 예를 들어, %ce중지 된 ce작업을 나타냅니다 . 접두사가 둘 이상의 작업과 일치하면 bash는 오류를보고합니다. %?ce반면 에을 사용하면 ce명령 줄에 문자열 포함 된 작업을 나타냅니다 . 부분 문자열이 둘 이상의 작업과 일치하면 bash는 오류를보고합니다. 기호 %%%+현재 작업의 쉘 개념을 나타냅니다.이 작업은 포 그라운드에 있거나 백그라운드에서 시작된 동안 마지막으로 중지 된 작업입니다. 이전 작업을 사용하여 참조 할 수 있습니다%-. 작업과 관련된 출력 (예 : jobs 명령의 출력)에서 현재 작업은 항상으로 표시되고 +이전 작업은으로 표시 -됩니다. 단일 %작업 (동봉 된 작업 스펙이 없음)도 현재 작업을 나타냅니다.


다음 명령은 pid와 함께 세션의 모든 백그라운드 프로세스 목록을 제공합니다. 그런 다음이를 사용하여 프로세스를 종료 할 수 있습니다.

jobs -l

사용법 예 :

$ sleep 300 &
$ jobs -l
[1]+ 31139 Running                 sleep 300 &
$ kill 31139

이것은 모든 백그라운드 프로세스를 종료해야합니다.

jobs -p | xargs kill -9

skill doB

skill 주어진 기준에 따라 하나 이상의 프로세스를 선택할 수있는 kill 명령 버전입니다.


pid가 필요합니다. "ps -A"를 사용하여 찾으십시오.


이것은 주제가 아닌 답변이지만 관심있는 사람들에게는 가치가 있습니다.

@ John Kugelman의 답변 에서처럼 %는 작업 사양과 ​​관련이 있습니다. 효율적으로 찾는 방법? less의 & pattern 명령을 사용하면 man bash 유형 & %에서 man이 적은 호출기를 사용하는 것 같습니다 (확실하지 않음). Enter를 입력하면 '%'를 포함하는 행만 표시됩니다. 그런 다음 Enter를 누르십시오.


killall 명령을 사용하십시오.

killall 작업 이름

자세한 정보와 고급 옵션을 보려면 "man killall"을 입력하십시오.

참고 URL : https://stackoverflow.com/questions/1624691/linux-kill-background-task

반응형