바보 같을 수도 있지만 매우 빨리 완료되는 명령을 실행하고 있기 때문에 다른 창에서 명령을 찾아 어떤 파일이 열려 있는지 확인할 시간이 부족합니다. 명령을 실행하고 즉시 lsof를 추가하는 확실한 방법이 있습니까? (완료될 때까지 어떤 파일이 열리는지 추적하는 것이 더 좋습니다)
편집 - 프로세스가 닫힌 후 프로세스에 lsof를 추가하면 좋을 수도 있습니다. 실시간으로 어떤 파일이 열리는지 확인할 필요가 없습니다.
답변1
아마도 이 상황에서 lsof
가장 실용적인 도구는 아닐 것입니다 . strace
이 경우에 사용 하겠습니다 . 예를 들어, ls
명령이 실행되는 짧은 시간 동안 어떤 파일이 열렸는지 확인하세요.
strace -e trace=open ls
답변2
예를 들어, 창에서 이 명령을 사용할 수 있습니다 watch
.
watch -d 'lsof| `fgrep cron`'
이 명령은 2초마다 창을 새로 고칩니다. -n 옵션을 사용하면 시간을 줄일 수 있습니다. 자세한 내용은 를 참조하세요 man watch
.
파이프를 사용하면 | fgrep cron
검색 중인 결과만 볼 수 있습니다.
다른 창에서 명령을 사용하면 이 경우 cron 명령과 관련된 파일 및 사용자가 표시됩니다. 특정 명령이나 프로그램으로 cron 명령을 변경하십시오.
답변3
"strace" 사용을 고려할 수 있습니다. 이는 파일 열기를 포함하여 실행 시작부터 시스템 호출을 표시합니다.
답변4
다음 명령을 사용하면 열려 있는 모든 파일을 실시간으로 모니터링할 수 있습니다.
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open
특정 프로세스/명령 이름(스크립트 아님)에 대해 다음을 수행할 수 있습니다. (apache2의 예)
sudo sysdig -p "%12user.name %6proc.pid %12proc.name %3fd.num %fd.typechar %fd.name" evt.type=open and proc.name=apache2