
Linux에는 시작할 때 실행되는 프로그램을 추가하기 위해 수정할 수 있는 파일이 많이 있습니다(/etc/rc.local, bashrc, bash_profile, $HOME/.config/autostart, ...). 이제 반대 질문이 생겼습니다. 프로그램이 있습니다. 시작하는 동안 이 프로그램이 실행되었는지 확인할 수 있습니까?
**참고: 프로그램은 시작 및 종료 시 한 번만 실행될 수 있습니다.
답변1
당신은 볼 수 있습니다액세스 시간스크립트를 위해. 이는 100% 신뢰할 수 없습니다(일부 파일 시스템이 noatime
설정되었을 수 있으므로). 그러나 이는 일반적으로 init-scripts에 유용합니다. 예:
find /etc -type f -atime -1
나는 그것이 유용하다고 생각했습니다.꽤 오래.
답변2
pstree
트리 형식으로 실행되는 프로세스의 자세한 출력을 제공합니다.
여기에서 샘플 출력
init─┬─auditd───{auditd} ├─crond ├─docker─┬─10*[bash] │ ├─docker───5*[{docker}] │ ├─docker───4*[{docker}] │ ├─2*[docker───3*[{docker}]] │ ├─start-app.sh─┬─java───40*[{java}] │ │ └─tail │ ├─start-app.sh─┬─java───81*[{java}] │ │ └─tail
답변3
다음 명령을 실행할 수 있습니다.
ps aux | grep PROCESS_NAME
예를 들어 프로세스의 ping
결과는 다음과 같습니다.
user 9639 0.0 0.0 6508 732 pts/16 S+ 08:44 0:00 ping 192.168.0.1
user 9641 0.0 0.1 12972 2420 pts/15 R+ 08:44 0:00 grep --colour=auto ping
두 번째 줄만 표시되면 프로세스가 실행되고 있지 않음을 의미합니다.
프로세스가 충돌하는 것으로 의심되는 경우 를 사용할 수 있습니다 atop
. 에 대한 다른 질문을 찾을 수 있습니다.atop
여기.
답변4
초기화 위치를 보고 프로그램이 실행되도록 설정되어 있는지 확인합니다.
솔직히 프로그램이 어떻게든 되면~할 수 있었다실행하지만 실행되었는지 여부는 알 수 없습니다. 실행되었는지 확인할 수 있는 유일한 기회는 실행 방법이 있는지(예: 일부 등에 등록되었는지 local.rc
) 확인하거나 결과를 확인하는 것입니다( 예를 들어 프로그램은 항상 file 을 건드리고 /home/someuser/a
다른 어떤 것도 건드리지 않아야 합니다.
위의 내용에서는 로그가 없다고 가정합니다.