프로세스의 PID가 있고 부팅 프로세스 중에 init에 의해 시작되었다는 것을 알고 있다고 가정합니다. 이를 시작하는 스크립트의 이름을 어떻게 찾을 수 있나요?
한 가지 방법은 run 을 실행하는 것이지만 grep $PROCESS_NAME /etc/init.d/*
이 솔루션은 완벽하지도 않고 매우 우아하지도 않습니다.
service --status-all
또 다른 방법은 서비스 중 하나가 PID를 반환할 가능성이 가장 높은 를 실행하는 것입니다 . 그러나 이는 이전 솔루션보다 덜 우아합니다.
편집하다:
운영 체제는 RedHat/Ubuntu입니다.
다음과 같이 PID 2083으로 sshd가 실행되고 있다고 가정합니다.
UID PID PPID C STIME TTY TIME CMD
root 2083 1 0 2012 ? 00:00:00 /usr/sbin/sshd -D
그 부모가 init
나와 함께 있어추측하다시작하는 동안 명령을 사용하여 시작되지만 복잡한 시작 명령이나 난독화로 인한 스크립트 service sshd start
와 같이 추측하기 쉽지 않은 경우 PID만 알면 어떻게 스크립트를 찾을 수 있습니까?/etc/init.d/somedeamon
somedeamon
답변1
PPID 체인을 역으로 추적하는 쉬운 방법은 다음 pstree
도구를 사용하는 것입니다.
pstree -p PID
그러면 지정된 PID에 대한 모든 상위 프로세스가 표시됩니다. 예를 들면 다음과 같습니다.
$ pstree 42284
-+= 00001 root /sbin/launchd
\-+= 00199 jack /sbin/launchd
\-+= 00254 jack /Applications/iTerm.app/Contents/MacOS/iTerm -psn_0_90134
\-+= 00309 root login -fp jack
\-+= 00310 jack -bash
\--= 42284 jack vim site.txt
답변2
관심 있는 프로세스에서 역방향으로 PPID 체인을 추적할 수 있어야 합니다. 그러나 A가 B를 시작하고 B가 C를 시작하고 B가 완료되면 C의 상위 프로세스는 이제 init
(PID 1)입니다. 프로세스의 PID에 대한 정보에 액세스하려면 를 실행해야 합니다 ps -l -pPID
.