문제

Linux에서 마지막으로 스폰 된 배경 작업을 어떻게 죽립니까?

예시:

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가 오류를보고합니다. 기호 %% 그리고 %+ 현재 작업에 대한 쉘의 개념을 참조하십시오.이 작업은 전경에 있거나 백그라운드에서 시작하는 동안 마지막으로 중지 된 작업입니다. 이전 작업은 사용을 참조 할 수 있습니다 %-. 작업과 관련된 출력 (예 : 작업 명령의 출력)에서 현재 작업은 항상 +, 그리고 이전 직업은 a -. 싱글 % (직무 사양이 동반되지 않음)도 현재 작업을 말합니다.

다음 명령은 PID와 함께 세션의 모든 배경 프로세스 목록을 제공합니다. 그런 다음 사용하여 프로세스를 죽일 수 있습니다.

jobs -l

예제 사용 :

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

이것은 모든 배경 프로세스를 죽여야합니다.

jobs -p | xargs kill -9
skill doB

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

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

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

@John Kugelman의 답변에서와 같이 %는 직무 사양과 관련이 있습니다.그것을 효율적으로 찾는 방법? Less & Pattern 명령을 사용하십시오, 사람은 더 적은 호출기를 사용하는 것 같습니다 (확실하지 않음). Man Bash Type &%에서 Enter 유형은 '%'를 포함하는 줄만 표시하여 그런 다음 입력하십시오.

Killall 명령 만 사용하십시오.

Killall TaskName

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

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top