2012-06-07 1 views
2

나는 NAS가 Redhat Linux로 보이는 제한된 버전으로 실행되고 있습니다. 나는 그것을 해킹하기위한 지시를 따라 쉘 접근을 할 수 있었기 때문에 커다란 도움이되었습니다. 나는 또한 몇 가지 수정을했는데, 다른 것들은 한 가지 문제 외에는 모두 잘 작동하는 것처럼 보인다.어떤 프로그램이 실행 중인지 찾기

아무튼, 매 22 일마다 시스템이 종료됩니다. ps를 실행하는 스크립트를 사용하여 종료 사실을 알았지 만 어떤 프로그램이 종료를 호출하는지 알지 못합니다.

/sbin/shutdown의 이름을 바꾸면 대신 스크립트를 작성하여 바꿀 수 있습니다. 그러나 내가 원하는 가장 중요한 정보는 어떤 프로그램이 종료를 호출하는지입니다.

프로그램이 내 스크립트 (phony/sbin/shutdown)를 실행하는 경우 내 스크립트라는 프로그램을 어떻게 찾을 수 있습니까? 스크립트 내에서 스크립트를 처음부터 호출 한 프로그램을 결정할 수 있기를 원합니다. 쉽게 만들 수 있다면, 필자는 항상 bash 스크립트 대신 Perl 스크립트를 사용할 수 있습니다.

답변

3

배시 있음, ps -p $$ -o ppid=. 출력은 부모 프로세스 (호출 프로세스)의 PID입니다. 부모 pid를 사용하면 /proc/<pid>/cmdline (more on procfs)에서 명령 줄을 읽을 수 있습니다.

3

가장 간단한 것은 스크립트가 호출 될 때 ps afx의 전체 출력을 덤프하는 것입니다. 그러면 모든 프로세스 (스크립트 포함) 목록이 트리 형식으로 표시되어 스크립트를 호출 한 것뿐만 아니라 이고 무엇이 실행되고 있는지를 알 수 있습니다.