백그라운드 프로세스를 종료해야 할 때마다 이렇게 합니다.ps -e | grep <process_name>
이와 같은 내용을 인쇄한 다음 1766 ? 00:00:13 conky
이와 같은 프로세스 ID를 사용합니다.kill
kill 1766
이것을 단순화할 수 있는 방법이 있나요? 더 빠르게 만드시겠어요? 타이핑이 적나요?
답변1
(TL,DR pgrep
:, pkill
)
많은 UNIX 변형이 다음과 함께 제공됩니다.pgrep
그리고 그 동료들 pkill
:솔라리스,리눅스(의 일부표준 프로세스 유틸리티, 임베디드 Linux 시스템에는 없을 수도 있음),FreeBSD,오픈BSD,네트워크BSD, … 하지만OS X의 MacPorts에서만 사용 가능,AIX 아님, 그리고최근 HP-UX에서만. 이 pgrep
유틸리티는 이름, 사용자 및 기타 기준과 일치하는 프로세스의 프로세스 ID를 표시합니다. 인수는 pgrep
프로세스 실행 파일 이름의 일부와 일치해야 하는 정규식으로 해석됩니다(변경 옵션을 전달하지 않는 한). pkill
대신 호출하면 pgrep
유틸리티는 프로세스 ID를 표시하는 대신 신호를 보냅니다.
또 다른 유사한 유틸리티는피도프. 존재하다리눅스, 이는 다음으로 구성됩니다.시스템 초기화또는바쁜 상자(따라서 이 기능이 없는 임베디드 Linux 시스템에서는 종종 이를 찾을 수 있습니다 pgrep
.) 다른 UNIX 변형에도 포트가 있습니다. 이 pidof
유틸리티에는 옵션이 적고 대부분 전체 실행 파일 이름과 일치합니다. 동반 유틸리티는 killall
일치하는 프로그램에 신호를 보냅니다.
¹Solaris 및 다른 UNIX 변형에서는 다른 의미를 갖습니다. Solaris에서는 루트로 입력하지
마십시오 .
killall
killall
답변2
killall ProcessName
(이 명령의 한 가지 단점은 프로그램의 프로세스 이름을 항상 알 수 없다는 것입니다.)pidof ProccessName
그리고kill the result form pidof
ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9
이 줄을 시도해보고 bash 기록에서 재사용하거나 별칭을 만드는 것이 더 좋습니다.
답변3
Hanan이 몇 가지 좋은 제안을 했지만 나는 pgrep
/ 를 추가하겠습니다 pkill
. 이를 통해 어떤 프로세스를 찾을 것인지 더 잘 제어할 수 있으며, 종료해야 할 정확한 프로세스를 모르는 경우 정규식을 사용할 수 있습니다.
PS Hanan은 백틱을 사용하여 직접 입력 pidof
할 수 있습니다 .kill
kill `pidof processname`
답변4
이건 어때 -
ps -e | awk '$4~/<process name>/{print $1}' | xargs kill
예:
[jaypal:~/Temp] sleep 100&
[1] 74863
[jaypal:~/Temp] ps -e | awk '$4~/sleep/{print $1}' | xargs kill
[1]+ Terminated: 15 sleep 100
고쳐 쓰다:
죄송합니다. 이것은 분명히 입력을 줄여야 한다는 요구 사항을 충족하지 않으므로 시작 스크립트 에 function
를 추가하는 것이 좋은 접근 방식입니다. 기능은 다음과 같습니다 -.bashrc
.profile
killp() {
awk -v pname="$1" '($4==pname){print $1}' <(ps -e) | xargs kill
}
추가한 후에는 프로세스 이름만 전달하면 됩니다.
[jaypal:~] sleep 100&
[1] 77212
[jaypal:~] killp sleep
[1]+ Terminated: 15 sleep 100