Gunicorn이라는 여러 프로세스가 실행 중입니다.
ubuntu 23884 0.0 7.1 190092 71980 ? S Sep10 0:01 gunicorn: worker [ll1]
ubuntu 23885 0.0 6.8 187120 69128 ? S Sep10 0:01 gunicorn: worker [ll1]
ubuntu 23886 0.0 7.1 189800 71712 ? S Sep10 0:01 gunicorn: worker [ll1]
나는 gunicorn이라는 이름으로 모든 프로세스를 종료하고 싶습니다. 현재 이 스크립트를 통해 한 번에 하나의 프로세스만 종료할 수 있습니다.
#!/bin/bash
pid=`ps ax | grep gunicorn | awk '{split($0,a," "); print a[1]}' | head -n 1`
echo $pid
kill $pid
echo "killed gunicorn"
답변1
pkill -f gunicorn
echo "killed gunicorn"
그러면 해당 이름을 가진 모든 프로세스가 종료되고 메시지가 gunicorn
인쇄됩니다 .killed gunicorn
답변2
보내려는 신호와 함께 kill all 명령을 사용할 수 있습니다.
killall -<signal> gunicorn
-v를 사용하여 수행 중인 작업에 대한 자세한 정보를 출력할 수도 있습니다.
killall -v -<signal> gunicorn
또는 이전과 같은 스크립트를 사용하여 다음을 수행할 수 있습니다.
#!/bin/bash
for pid in `pidof gunicorn`; do
kill -<signal> $pid;
echo "killed gunicorn [$pid]";
done
<신호>:
답변3
이를 수행하는 방법은 여러 가지가 있지만 제가 아는 주요 두 가지 방법에 중점을 두겠습니다.
사용 ps
및xargs
그리고 grep
:
ps -ef | grep '<pattern>' | grep -v grep | awk '{print $2}' | xargs -r kill -9
그리고 awk
:
ps -ef | awk '/<pattern>/ && !/awk/ {print $2}' | xargs -r kill -9
이 명령은 명령과 일치하는 모든 프로세스를 종료합니다.<pattern>
따라서 스크립트는 다음과 같습니다.
#!/bin/bash
ps -ef | grep 'gunicorn' | grep -v grep | awk '{print $2}' | xargs -r kill -9
[ $? -eq 0 ] && echo 'killed gunicorn'
또는,
#!/bin/bash
ps -ef | awk '/gunicorn/ && !/awk/ {print $2}' | xargs -r kill -9
[ $? -eq 0 ] && echo 'killed gunicorn'
사용 ps
및for
for pid in `ps ax | grep '<pattern>' | awk ' { print $1;}'`; do
kill -9 $pid
done
이것은 또한 관련된 모든 것을 죽일 것입니다<pattern>
따라서 스크립트는 다음과 같습니다.
#!/bin/bash
for pid in `ps ax | grep 'gunicorn' | awk ' { print $1;}'`; do
kill -9 $pid
done
[ $? -eq 0 ] && echo 'killed gunicorn'