
나는 특정 코드 조각이 ~84분마다 정기적으로 실행되는 젠투 파생물에서 실행되는 복잡한 임베디드 Linux 소프트웨어를 가지고 있습니다. 이 코드가 실행될 수 있는 위치를 찾기 위해 기본 코드를 샅샅이 뒤지는 것도 실패했고 crontab
설명할 수도 없는 것 같습니다.
내 질문: 문제의 코드를 수정하여 처음에 어떤 다른 프로세스/코드/파일/서비스가 시작되었는지 알아내는 것이 가능합니까? /proc
디렉토리에 제가 사용할 수 있는 정보가 있나요 ? 아니면 주어진 코드를 실행한 프로세스를 알아내는 것이 불가능합니까?
답변1
프로세스가 오래 지속되고 검사할 시간이 있으면 Chris의 답변이 효과가 있지만, 짧은 실행 명령인 경우 프로세스가 아직 살아있는 동안 이를 파악하기 어려울 수 있습니다.
이에 접근할 수 있는 또 다른 방법은 프로그램 주위에 '래퍼'를 두는 것입니다.
호출되는 프로그램이 이라고 가정해 보겠습니다 /usr/bin/someprog
.
/usr/bin/someprog
로 이동하세요/usr/bin/someprog.orig
./usr/bin/someprog
다음과 같은 스크립트로 생성합니다 .
#!/bin/sh
echo "My pid: $$" >> /tmp/someprog.log
ps -ef --forest >> /tmp/someprog.log
exec /usr/bin/someprog.orig
- 그런 다음
chmod a+x /usr/bin/someprog
그러면 프로세스 트리가 덤프되어 /tmp/someprog.log
. 그런 다음 나무를 보고 무엇이 그것을 생성하는지 찾을 수 있습니다.
답변2
상위 PID(PPID)를 찾고 있는 것 같습니다.
$ ps -o ppid -p 5743
PPID
219
당신은 또한 당신이 다음과 같은 것을 가지고 있다고 언급했기 때문에 /proc
:
$ awk '{ print $4 }' /proc/5743/stat
219