에서 다음 bash
을 수행 할 수 있어야합니다.
kill $(ps aux | grep '[p]ython csp_build.py' | awk '{print $2}')
작동에 대한 자세한 내용은 다음과 같습니다.
- 그만큼
ps
당신에게 모든 프로세스의 목록을 제공합니다.
grep
검색 문자열을 기반으로 하는 필터 [p]
는 실제 검색 을 중지시키는 속임수입니다.grep
프로세스 자체 입니다.
- 그만큼
awk
은 각 줄의 두 번째 필드 인 PID입니다.
$(x)
구조체 수단 실행할 x
다음 출력을 받아 그 명령 행 입었다. ps
위의 구문 내 에서 해당 파이프 라인 의 출력은 프로세스 ID 목록이므로 결국 같은 명령으로 끝납니다 kill 1234 1122 7654
.
다음은 그 내용을 보여주는 대본입니다.
pax> sleep 3600 &
[1] 2225
pax> sleep 3600 &
[2] 2226
pax> sleep 3600 &
[3] 2227
pax> sleep 3600 &
[4] 2228
pax> sleep 3600 &
[5] 2229
pax> kill $(ps aux | grep '[s]leep' | awk '{print $2}')
[5]+ Terminated sleep 3600
[1] Terminated sleep 3600
[2] Terminated sleep 3600
[3]- Terminated sleep 3600
[4]+ Terminated sleep 3600
모든 침목이 끝나는 것을 볼 수 있습니다.
grep '[p]ython csp_build.py'
비트를 좀 더 자세히 설명하면 다음과 같습니다.
당신은 않을 경우 sleep 3600 &
다음 ps -ef | grep sleep
, 당신이하는 경향 이 개 와 프로세스 sleep
그것에서, sleep 3600
그리고 grep sleep
그들 모두가 (때문에를sleep
로켓 과학이 아니다 그, 그 (것)들에서).
그러나 ps -ef | grep '[s]leep'
그 안에 프로세스를 만들지 sleep
않고 대신 grep '[s]leep'
여기에 까다로운 비트가 있습니다. grep
정규 표현식 "캐릭터 클래스의 모든 문자 [s]
(즉, s
뒤에 오는) "를 찾고 있기 때문에 찾지 못합니다.leep
.
즉, 찾고 sleep
있지만 grep 프로세스는grep '[s]leep'
에는없는sleep
.
내가 이것을 보았을 때 (여기 누군가 여기 있음) 즉시 사용하기 시작했습니다.
- 추가하는 것보다 프로세스가 적습니다
| grep -v grep
. 과
- 우아 하고 비열한, 드문 조합 :-)