Linux + Solaris 프로세스 목록에서 마지막으로 실행된 프로세스를 확인하는 방법

Linux + Solaris 프로세스 목록에서 마지막으로 실행된 프로세스를 확인하는 방법

조언이 필요합니다:

내 Linux 또는 Solaris에서 실행 중인 마지막 scan_sys.sh 프로세스가 무엇인지 어떻게 확인할 수 있습니까?

내 목표는 최신 scan_sys.sh를 제외한 모든 scan_sys.sh 프로세스를 종료하는 것입니다(마지막 /usr/scan_sys.sh 스크립트가 실행됨).

ps -ef | grep scan_sys.sh

.

root   367     1   0   Nov 08 ?           0:21 /usr/scan_sys.sh
root 27517 27515   0 17:27:18 ?           0:01 /usr/scan_sys.sh
root 18939   367   0   Nov 15 ?           0:00 /usr/scan_sys.sh
root 18940 18939   0   Nov 15 ?           0:01 /usr/scan_sys.sh
root 27515   367   0 17:27:18 ?           0:00 /usr/scan_sys.sh

답변1

ps옵션을 사용하여 -o프로세스 pid, 시작 시간 및 명령 이름을 표시하기 위해 표시할 필드를 선택하고, 선택적으로 지금 관심 있는 프로세스를 선택하고( -C), 시작 시간별로 정렬하고, 마지막 프로세스를 제외한 모두 종료합니다.

명령줄 옵션은 지옥으로 악명이 높기 때문에 ps구현 내용을 이해하려면 매뉴얼 페이지를 확인해야 합니다. 나에게는 Linux에서 다음과 동등한 작업이 작동합니다(적절한 PID 나열).

ps -C scan_sys.sh -o pid --sort start | sed '$d'

$작은따옴표로 in sed스크립트(적어도 in )를 인용해야 합니다. bash그렇지 않으면 환경 변수로 확장됩니다 d. 예를 들어 xargs 또는 명령 대체( ``또는 $()in bash) 를 통해 PID를 보내 종료할 수 있습니다 .

관련 정보