태그 보관물: ps

ps

프로세스의 ID 찾기 및 종료 백그라운드 프로세스를 종료해야 할 때마다 ps

백그라운드 프로세스를 종료해야 할 때마다 ps -e | grep <process_name>

어떤는 다음과 같이 인쇄 1766 ? 00:00:13 conky에 그럼 난 프로세스 ID를 사용, kill너무 좋아 kill 1766.

이것을 단순화 할 수있는 방법이 있습니까? 더 빨리 만드시겠습니까? 타이핑의 양을 줄입니까?



답변

(TL, DR : pgrep, pkill)

많은 유닉스가 함께 변형 pgrep과 그 동반자 pkill: 솔라리스 , 리눅스 (의 일부 표준 프로세스 유틸리티 임베디드 리눅스 시스템에서 존재하지 않을 수있다), FreeBSD의 , 오픈 BSD , NetBSD에 , …하지만 단지 OS X에서 MacPorts를에서 , 하지 AIX단지 최근 HP-UX에서 . 이 pgrep유틸리티는 이름, 사용자 및 기타 몇 가지 기준으로 일치하는 프로세스의 프로세스 ID를 보여줍니다. 인수 pgrep는 프로세스 실행 파일 이름의 일부와 일치해야하는 정규 표현식으로 해석됩니다 (이 옵션을 변경하는 옵션을 전달하지 않는 한). pkill대신에 전화하면pgrep유틸리티는 프로세스 ID를 표시하는 대신 신호를 보냅니다.

또 다른 유사한 유틸리티는 pidof 입니다. 에 리눅스 , 그것은에 의해 제공되는 것 SysVinit에서 또는 비지 박스 (자주가없는 임베디드 리눅스 시스템을 찾을 수 있도록 pgrep); 다른 유닉스 변종에도 포트가 있습니다. 이 pidof유틸리티에는 더 적은 옵션이 있으며 전체 실행 파일 이름과 만 일치합니다. 컴패니언 유틸리티 killall는 일치하는 프로그램에 신호를 보냅니다 ¹.

¹ Solaris 및 다른 유닉스 변형에서 다른 의미
갖는 것을 주의하십시오 killall. killallSolaris에서 루트로 입력하지 마십시오 .


답변

  • killall ProcessName (프로그램의 프로세스 이름을 항상 알 수 없다는 점에서이 명령의 단점이 있습니다).
  • pidof ProccessNamekill the result form pidof
  • ps xu | grep <process name> | grep -v grep | awk '{ print $2 }' | xargs kill -9 이 한 줄을 시도하여 bash의 히스토리에서 재사용하거나 별명을 작성하십시오.

답변

Hanan은 몇 가지 좋은 제안을 제공하지만 pgrep/를 추가하겠습니다 pkill. 그들은 당신이 찾는 프로세스에 대해 훨씬 세밀하게 제어 할 수 있고, 당신이 죽여야 할 정확한 프로세스를 모른다면 정규 표현식을 허용합니다.

PS Hanan 은 백틱 pidof으로 kill직접 공급할 수 있습니다 .

kill `pidof processname`

답변

이건 어때 –

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

답변