2017-04-13 14 views
2

UID를 인쇄해야합니다.bash ps 이름에 대한 프로세스 정보 인쇄

GNU nano 2.0.6              
    File: file2                               

    ps o uid,pid,ppid,ni,vsz,rss,stat,tty,time | grep $2 > $1 
    cat $1 
    echo "enter pid of process to kill:" 
    read pid 
    kill -9 $pid 

하지만 (이 과정이 존재)

UPDATE

GNU nano 2.0.6        
    File: file2 

ps o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command | grep $2 | awk '{print $1,$2,$3,$4,$5,$6,$7,$8,$9}' > $1 
cat $1 
echo "enter pid of process to kill:" 
read pid 
kill -9 $pid 

이 나를 위해 작동하지만, 실제로이 솔루션 인수 $ 2 = bash는이 명령을 사용할 때 그것은 아무것도 인쇄합니다 IMHO는 최고의 것이 아닙니다. grep 이름 뒤에 shadow column 명령을 사용하고 명령을 제외한 모든 열을 인쇄합니다.

+0

입니다 실패) –

+0

긴 awk 명령 대신'cut -d ','-f-9'를 사용할 수 있습니다. 그것보다 더 나은'awk' /'cut'을 피하기 위해'ps ouid, pid, (...), tty, time $ (pgrep $ 2)'를 사용할 수 있습니다. – silel

답변

1

항상 2 단계 접근 방식을 사용할 수 있습니다.

) 원하는 번호는 PID입니다. 이 같은 ps

ps -o pid,comm | grep "$2" | cut -f1 -d' ' 

ps -o pid,comm 만 인쇄 두 개의 열이 가장 간단한을 사용하십시오 :

67676 -bash 
71548 -bash 
71995 -bash 
72219 man 
72220 sh 
72221 sh 
72225 sh 
72227 /usr/bin/less 
74364 -bash 

그래서 쉽게 grepping (그리고 소음없는 거짓 트리거하지 않고,). cut은 PID를 추출합니다. 예 :

ps -o pid,comm | grep bash | cut -f1 -d' ' 

인쇄

67676 
71548 
71995 
74364 

2) 지금 당신은 -p 플래그를 사용하여 다른 ps에 발견 PIDs을 공급할 수, 전체 명령이 그래서 :

ps -o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command -p $(ps -o pid,comm | grep bash | cut -f1 -d' ') 

출력

UID PID PPID NI  VSZ RSS STAT TTY   TIME COMMAND 
    501 67676 67675 0 2499876 7212 S+ ttys000 0:00.04 -bash 
    501 71548 71547 0 2500900 8080 S ttys001 0:01.81 -bash 
    501 71995 71994 0 2457892 3616 S ttys002 0:00.04 -bash 
    501 74364 74363 0 2466084 7176 S+ ttys003 0:00.06 -bash 

예 : `그렙 bash` 것, 인수 명령 - 최고의 그렙 bash``에 대한`cmd` - 단지 명령 이름 - $2 사용하여 솔루션을 사용하면`comm` 열 (`comm`를 놓친

ps -o uid,pid,ppid,ni,vsz,rss,stat,tty,time,command -p $(ps -o pid,comm | grep "$2" | cut -f1 -d' ') 
+0

고마워요! 정말 저에게 좋은 솔루션입니다! –