실행중인 데몬의 프로세스 ID를 반환하는 명령을 함께 모았습니다.
ps aux | grep daemon_name | awk "{ print \$2 }"
완벽하게 작동하고 PID를 반환하지만 아마도 현재 실행중인 프로세스 인 두 번째 PID도 반환합니다. 반환 된 PID 목록에서 명령을 제외 할 수있는 방법이 있습니까?
몇 번 테스트 한 결과 내 명령이 항상 목록의 두 번째 PID 인 것처럼 보이지만 정확하지 않은 경우 첫 번째 PID 만 잡고 싶지 않습니다.
답변
grep -v
스위치는 대기열에서 제외하고 결과를 반대로 바꿉니다. 따라서 다음과 같이 만드십시오.
ps aux | grep daemon_name | grep -v "grep daemon_name" | awk "{ print \$2 }"
Upd . -C
switch를 사용하여 다음과 같이 명령 이름을 지정할 수도 있습니다 .
ps -C daemon_name -o pid=
후자 -o
는 목록에서 원하는 정보 열을 결정합니다. pid
프로세스 ID 열만 나열합니다. 그리고 =
뒤에 등호 pid
는 해당 제목에 대한 열 제목이 없음 을 의미하므로 명확한 숫자-PID 만 얻습니다.
이것이 도움이되기를 바랍니다.
답변
캐릭터 클래스 트릭을 사용할 수 있습니다. “[d]”는 “[d]”만 “d”와 일치하지 않습니다.
ps aux | grep [d]aemon_name | awk "{ print \$2 }"
나는 이것을 사용하는 것을 선호한다 | grep -v grep
.
답변
ps
보다 안정적인 대안이 있으면 출력을 구문 분석하지 마십시오 .
pgrep daemon_name
pidof daemon_name
답변
이 ps -C
옵션은 모든 Unix 기반 시스템에서 보편적 인 것은 아니지만 시스템에서 작동하는 경우입니다. 대신 나는 grep을 완전히 피할 것입니다.
ps aux | awk '/daemon_name/ && !/awk/ { print $2 }'
작은 따옴표로 이스케이프 할 필요가 없습니다. ps aux
대부분의 유닉스 기반 시스템에서 전체 프로세스 목록을 제공하며 awk
일반적으로 기본적으로 설치됩니다.
답변
pgrep
이름으로 프로세스의 pid를 찾는 데 사용하십시오 .
pgrep proc_name
결과에 추가 프로세스 이름이있는 경우 ( -l
) :
pgrep -l proc_name
프로세스 이름 ( -l
) 및 인수 ( -f
) 를 찾아 표시하십시오 .
pgrep -lf proc_name_or_argument
좋은 점 pgrep
은 절대로 일치하는 것으로보고하지 않는다는 것입니다. 그러나 pid를 가져 와서 pgrep
해당 프로세스를 by에 의해 죽일 필요는 없습니다 kill
. pkill
대신 사용하십시오 :
pkill proc_name
(기본적으로) 대신 SIGKILL
신호 ( -9
또는 -KILL
)를 지정하십시오 SIGTERM
.
pkill -9 proc_name
프로세스 이름 ( -l
)과 인수 ( -f
)를 찾고 신호 ( 또는 )로 프로세스를 -I
종료하기 전에 확인 ( )을 요청하십시오 .SIGKILL
-9
-KILL
pkill -KILL -Ilf proc_name_or_argument
이 -I
옵션은 pkill
OS X Mavericks와 같은 일부 버전에서만 사용할 수 있습니다 .
답변
bash를 사용하는 경우 다음을 사용하여 다음을 수행 할 수도 있습니다. ps -eaf
PIDS=$(ps -eaf)
PID=$(echo "$PIDS" | grep "process_name" | awk '{print $2}')
echo $PID
답변
이 줄은 “grep”을 제외한 pid (프로세스 ID)를 돌려줍니다.
PID=$(ps aux | grep '/usr/bin/python2.7 manage.py SES__boto3_sqs_read' | grep -v grep)