pid 대신 이름으로 여러 프로세스 종료

pid 대신 이름으로 여러 프로세스 종료

Ubuntu Server 14.04에서 명령 복사본 2~5개를 생성하는 작업을 수행하고 있습니다.

kill나는 그들 모두 에 대해 가장 간단한 것(즉, 가능하다면 스크립트 대신 단일 명령줄)을 찾으려고 노력하고 있습니다 . 진짜 비결은 내가 사용하고 있다는 것입니다앤서블수십 개의 서버에 임시 명령을 보내려면 각 프로세스를 호출하는 데 시간이 많이 걸립니다.

예:

ps aux | grep bash 
user 1031 0.0 0.0  4444  652 ?      Ss  Aug15 0:00 /bin/sh -c /home/user/start-cacheable.bash
user 1032 0.0 0.1 12400 1432 ?      S   Aug15 0:00 /bin/bash /home/user/start-cacheable.bash
user 1327 0.0 0.3 12744 2254 tty1   S   Aug15 0:00 -bash

이제 여기에서 나는 달릴 것이다 kill 1031 1032. 작업을 완료할 수 있는 깔끔한 명령이 있나요?

답변1

@jjlin 답변이 효과가 있을 수 있습니다.

pgrep/pkill그러나 및 의 작동을 설명하려면 다음을 수행하십시오 killall.

킬러가 찾는다프로세스 이름단지 - 그게 에서 본 부분이에요/proc/<pid>/comm

pgrep/pkill은 기본적으로 동일하지만 인수에서도 일치 항목을 찾을 수 있습니다(-f). 그러면 다시 일치하게 됩니다./proc/<pid>/cmdline

기본적으로 기본적으로 표시된 문자열만 ps -A고려됩니다.

예:

process name (comm): sshd
full command/arguments (cmdline): /usr/sbin/sshd -f /etc/ssh/sshd_config

지금 - 작동 하겠지만 (의도적인 오타, 하지 kilall/pkil sshd마세요;)
killall /usr/sbin/sshd작동하지
경로는 확인할 수 있는 프로세스 이름의 일부가 아니기 때문입니다 pgrep -lf sshd_config(예: pkill -f).

그런 다음 고려해야 할 다른 사항이 있습니다. 정규식이 필요한지 또는 프로세스 그룹을 활용하려는지 여부에 관계없이 Killall명령 이름의 처음 15바이트(참고자료 참조)에서만 일치할 수 있습니다.killall -e

참고: /proc/... 파일은 null로 구분되므로 복사/붙여넣기 중에 주의하세요.

답변2

이것을 사용할 수 있습니다.

ps aux | grep <your keyword> | grep -v grep | awk  '{print $2}' | xargs kill -9

일치하는 프로세스를 나열하고, grep 프로세스 자체를 필터링하고, PID를 가져와 kill -9에 전달합니다.

kill -9를 사용하기 전에 테스트하십시오.

답변3

노력하다

pkill start-cacheable.bash

답변4

당신이 사용할 수있는

killall <process name>

관련 정보