![최신 프로그램을 제외하고 실행 중인 프로그램의 모든 인스턴스를 종료하는 방법](https://linux55.com/image/148410/%EC%B5%9C%EC%8B%A0%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%84%20%EC%A0%9C%EC%99%B8%ED%95%98%EA%B3%A0%20%EC%8B%A4%ED%96%89%20%EC%A4%91%EC%9D%B8%20%ED%94%84%EB%A1%9C%EA%B7%B8%EB%9E%A8%EC%9D%98%20%EB%AA%A8%EB%93%A0%20%EC%9D%B8%EC%8A%A4%ED%84%B4%EC%8A%A4%EB%A5%BC%20%EC%A2%85%EB%A3%8C%ED%95%98%EB%8A%94%20%EB%B0%A9%EB%B2%95.png)
내 스크립트가 계속해서 새로운 SSH 프로세스를 생성하는 문제가 있습니다. 이런 일이 있어서는 안 된다는 걸 알지만, 가끔 오래된 것을 청소하는 걸 좋아합니다.
만약 내가한다면:
ps -ef | grep "ssh" | awk '{print $2}'
실행 중인 SSH 프로세스의 모든 PID 목록을 얻습니다.
마지막으로 생성된 프로세스(PID 번호가 가장 높은 프로세스)를 제외한 모든 프로세스를 종료하고 싶습니다.
어떻게 해야 하나요?
답변1
while [ $(pgrep -c ssh) -gt 1 ]
do
pkill --oldest -f ssh
done
프로세스가 여러 개 있을 때마다 ssh
가장 오래된("가장 최근에 시작된") 프로세스를 종료합니다. PID 공간이 둘러싸이거나 임의의 PID를 사용하는 경우 가장 최근 시작이 "최저 PID"보다 더 나은 측정 기준일 수 있습니다.