動作しているが削除されている間に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 +L11つ未満のリンクを持つすべてのファイルがリストされ、削除されたファイルには0が含まれ| grep {pid}ます。
  • デザートから:lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'fdを取得するだけです。
  • コメントから:lesscatまたはcpも使用できます。私は育ったtail:)

「私は尾で育った!」* xで何かをしなければならない人のための貴重な洞察。
スリ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.