최신 프로그램을 제외하고 실행 중인 프로그램의 모든 인스턴스를 종료하는 방법

최신 프로그램을 제외하고 실행 중인 프로그램의 모든 인스턴스를 종료하는 방법

내 스크립트가 계속해서 새로운 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"보다 더 나은 측정 기준일 수 있습니다.

관련 정보