2014-02-12 2 views
4

프로세스의 사용자 ID를 알아 내야하는 bash 스크립트를 작성하고 있습니다. 프로세스 자체를 배시하자. bash에서 프로세스의 사용자 이름과 프로세스 ID를 얻으십시오.

나는 ps aux | grep ba[s]h을 시도했지만 이것은이 1000으로 사용자 ID를 표시하지만 사용자 이름을 원하는

1000  2745 0.0 0.1 28360 5440 pts/1 Ss 10:11 0:01 bash 

를 반환했습니다.

+2

관련 : 여기 mysqld 프로세스의 예이다 http://superuser.com/q/370699/204979 – fedorqui

답변

8

사용자 이름이 8 자 이상인 경우 발생할 수 있습니다. (OR) id에는 이름이 없습니다. 당신이 ps 출력에 사용자 이름을 원한다면, 그때 당신은 당신이 리눅스에있는 경우 /proc 항목을 구문 분석 할 수 있습니다,

ps -eo uname:20,pid,pcpu,pmem,sz,tty,stat,time,cmd | grep '[b]ash' 
+0

고맙지이 명령을 실행했을 때'난 mylongusername 얻기가 11,546 0.0 0.0 3398 PTS/S + (4) 00:00:00 grep --color = auto process' 왜이 프로세스가 항상 리턴되는지. 나는 그것을 죽이려고했지만'exe : kill (11546) : 그런 프로세스가 없다 '는 응답을 얻었습니다. –

+2

@i_m_optional, 이것을 시도해보십시오 :'ps -eo pid, cmd | grep -v grep' – sat

+0

오, 그래, 이제 알았어. 어리석은 나를 : p –

0

을이 시도는 단지 숫자 PID를 필요로 (또는 그것으로 OK입니다)합니다.

grep -e '^Uid:' /proc/$(pidof mysqld)/status | cut -f 2 
관련 문제