Bagaimana saya bisa membaca file sh saat sedang bekerja tetapi dihapus?


20

Dalam sebuah wawancara mereka menanyakan pertanyaan ini kepada saya.

Ada file sh yang sudah berjalan, tetapi sudah dihapus sejak memulai eksekusi.

Mereka ingin saya menemukan proses dan membaca file.

Saya berhasil menemukan proses dengan

ps -ef | grep test.sh

dan mencoba membacanya dengan menggunakan

cat /proc/PID/cmdline test.sh

tapi katanya

no such file or directory

Saya tidak tahu apa yang harus saya lakukan selanjutnya jadi saya harus melewati ini.

Mungkin itu adalah pertanyaan yang mudah tetapi itu benar-benar pertanyaan yang bagus untuk saya dan saya benar-benar ingin tahu jawabannya. Bisakah kalian membantu?

Jawaban:


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

di mana {pid} adalah id dari proses Anda dan /tmp/fileakan memiliki isinya. Gunakan lokasi dan nama lain jika Anda ingin melestarikannya.

  • {pid} adalah id dari proses.
  • {fd} adalah deskriptor file. lsofharus menunjukkan fd. lsofkemungkinan juga akan menampilkan "dihapus" di telepon sehingga Anda bisa melakukannya grepjuga. lsof -nP +L1akan mencantumkan semua file dengan tautan kurang dari 1, file yang terhapus akan memiliki 0. Tambahkan | grep {pid}untuk mencari PID Anda saja.
  • dari hidangan penutup: lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'untuk mendapatkan fd.
  • dari komentar: Anda dapat menggunakan less, catatau cpjuga. Saya dibesarkan pada tail:)

"Aku dibesarkan dengan ekor!" Wawasan berharga bagi siapa pun yang harus melakukan apa pun dengan * x
Sri
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.