조언이 필요합니다:
내 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를 보내 종료할 수 있습니다 .