grep/sed/awk를 사용하여 작업 ID를 선택하는 방법

grep/sed/awk를 사용하여 작업 ID를 선택하는 방법

컴퓨터 그리드에서 물리적 분석 작업을 실행합니다. 때로는 일이 잘못되어 하나씩 없애야 하는데, 이는 고통스럽습니다. 이 출력에서 ​​숫자 값(748736838 등)만 선택하는 방법을 제안해 주시겠습니까?

$ps -W

mhaque -748736838   0   W                                   
mhaque -748736879   0   W                                   
mhaque -748737079   0   W                                   
mhaque -748737185   0   W                                   
mhaque -748737276   0   W

(그리고 이와 같은 수백 줄)

sedstackExchange에서 여러 //명령을 awk시도 했지만 grep숫자 값을 분리할 수 없습니다. 숫자값을 선택하고 그 앞에 "kill"을 붙이는 명령어가 있나요? 예를 들어 다음과 같습니다(파이프라인).

ps -W  |  awk/sed/grep (what_to_use) |  (some_command to place "kill") | > file.list

그러면 다음이 제공됩니다(file.list에서).

kill 748736838 
kill 748736879
...so on..

그런 다음 이를 그리드 셸에 복사하여 붙여넣으면 문제가 있거나 오래 대기하는 작업을 종료할 수 있습니다.

답변1

누군가를 죽이고 싶다면모두~의해킹작업이 더 쉬워졌습니다.

pkill -9 mhaque

(-9보낼 신호입니다. 이 경우에는 선택합니다.신호 살해, 귀하의 필요에 따라 변경하십시오).

반품,

pidof mhaque 

작업 PID의 간단한 목록만 반환하며 그 외에는 아무것도 반환하지 않습니다. 다음과 같이 사용할 수도 있습니다.

kill -9 $(pidof mhaque)

첫 번째 명령과 동일한 효과를 생성합니다. 이 모든 것이 스크립트를 작성하는 것보다 훨씬 쉽습니다. 예를 들어,

$ vlc fulvio.mkv &> /dev/null &
[1] 28006
$ vlc fulvio.mkv &> /dev/null &
[2] 28028
$ pidof vlc
28028 28006
$ pkill -9 vlc
$ ps ax | grep vlc
28054 pts/18   S+     0:00 grep --color=auto vlc
[1]-  Killed                  vlc fulvio.mkv &> /dev/null
[2]+  Killed                  vlc fulvio.mkv &> /dev/null

편집하다:

의견에 포함된 설명에 따라 주문은

ps -W | awk '{print $2}' | cut -d"-" -f2

작업 PID의 간단한 목록을 생성합니다. 파일에 쓰거나 직접 처리할 수 있습니다.

kill -9 $(ps -W | awk '{print $2}' | cut -d"-" -f2)

편집 2

위의 명령은 단지 표준 Bash이기 때문에 이것이 예상대로 작동하지 않는다는 것에 조금 놀랐습니다. 어떤 시스템을 사용하고 있나요? 어쨌든 시도해 볼 수 있습니다.

 for i in $(ps -W | awk '{print $2}' | cut -d"-" -f2); do kill -9 $i; done

관련 정보