sh 파일이 작동하지만 삭제되는 동안 어떻게 읽을 수 있습니까?


20

인터뷰에서 그들은이 질문을했습니다.

이미 실행중인 sh 파일이 있지만 실행을 시작한 이후 삭제되었습니다.

그들은 내가 프로세스를 찾고 파일을 읽길 원합니다.

나는 프로세스를 찾을 수 있었다

ps -ef | grep test.sh

사용하여 읽었습니다

cat /proc/PID/cmdline test.sh

그러나 그것은 말한다

no such file or directory

나는 다음에 무엇을해야할지 몰랐으므로 이것을 건너 뛰어야했다.

어쩌면 쉬운 질문 일 수도 있지만 정말 좋은 질문이었습니다. 정답을 알고 싶습니다. 도와 줄래?

답변:


24
tail -c +0 -f /proc/{pid}/fd/{fd} > /tmp/file

여기서 {pid}는 프로세스의 ID이며 /tmp/file그 내용을 갖습니다. 보존하려면 다른 위치와 이름을 사용하십시오.

  • {pid}는 프로세스의 ID입니다.
  • {fd}는 파일 디스크립터입니다. lsoffd를 보여 주어야합니다. lsof또한 줄에 "삭제됨"을 표시 할 수도 grep있습니다. lsof -nP +L1링크가 1 개 미만인 모든 파일을 나열합니다. 삭제 된 파일은 0을 갖습니다 | grep {pid}. PID 만 검색하려면 a 를 추가 하십시오.
  • 디저트에서 : lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'그냥 fd를 얻을 수 있습니다.
  • 댓글에서 : 당신이 사용할 수있는 less, cat또는 cp너무. 나는 자랐다 tail:)

"꼬리에 자랐다!" * x로 무엇이든해야하는 사람에게 유용한 통찰력.
Sri
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.