요약: 프로세스를 생성하는 데몬이 있는데 이를 정상적으로 중지해야 합니다. 온라인에서 찾은 pgid 기반 솔루션:
group_id=$(ps -o pgid= $(cat $pidfile))
if [ ! -z $group_id ]; then
kill -- -$group_id
success
fi
어떻게 작동하는지 알고 싶습니다. 내가 처음 접한 것은 group_id를 얻는 것이었습니다. 나는 여기서 무슨 일이 일어나고 있는지 이해하지 못합니다.
$ ps -o pgid= 21814
21813
$ ps -o pgid=21814
21814
3525
5180
하지만 "=" 뒤에 공백이 있는 첫 번째 예가 꼭 필요한 것 같습니다.
$ pstree -p | grep 21814
|-python(21814)-+-python(21815)-+-{python}(21813)
무슨 일인지 설명해 줄 수 있는 사람 있나요? 이 예제의 결과는 무엇입니까?
답변1
형식 플래그( -o format
) 뒤에 오는 등호는 출력으로 생성된 옵션 열을 지정하는 헤더의 인쇄를 억제합니다. 이는 null(빈) 결과를 테스트합니다.
기본적으로 ps
터미널 세션의 현재 사용자와 동일한 유효 사용자 ID를 가진 모든 프로세스가 선택됩니다. 기호 다음에 관심 있는 PID를 지정하면 =
헤더 행에 해당 PID가 포함되어 있음이 추론됩니다. 보고되는 다른 프로세스는 터미널 세션 bash
및 ps
프로세스 자체의 프로세스입니다. 이렇게 하면 다음을 볼 수 있습니다.
ps -o comm,pgid=21814