Çalışırken ancak silinirken sh dosyasını nasıl okuyabilirim?


20

Bir röportajda bana bu soruyu sordular.

Çalışmakta olan bir sh dosyası vardı, ancak yürütmeye başladığından beri silindi.

Süreci bulmamı ve dosyayı okumamı istiyorlar.

Süreci bulmayı başardım

ps -ef | grep test.sh

ve kullanarak okumaya çalıştı

cat /proc/PID/cmdline test.sh

ama diyor ki

no such file or directory

Bundan sonra ne yapmam gerektiğini bilmiyordum, bu yüzden bunu atlamak zorunda kaldım.

Belki de kolay bir soruydu ama bu benim için gerçekten iyi bir soruydu ve cevabı gerçekten bilmek istiyorum. Yardımcı olabilir misiniz?

Yanıtlar:


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

{pid} nerede işleminizin kimliğidir /tmp/fileve içeriği olacaktır. Korumak istiyorsanız başka bir konum ve ad kullanın.

  • {pid} işlemin kimliğidir.
  • {fd} dosya tanımlayıcısı. lsoffd göstermeli. lsofmuhtemelen satırda "silindi" ifadesini göstermesi muhtemeldir, böylece bunu da yapabilirsiniz grep. lsof -nP +L11'den az bağlantıya sahip tüm dosyaları listeleyecek, silinen bir dosya 0 olacaktır | grep {pid}.
  • tatlıdan: lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'sadece fd almak için.
  • yorumlardan: kullanabilirsiniz less, catya cpda. Ben büyüdüm tail:)

"Ben kuyrukta büyüdüm!" * X ile bir şeyler yapmak zorunda olan herkes için değerli bir içgörü.
Sri
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.