काम करते हुए लेकिन हटाए जाने के दौरान मैं एक 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} आपकी प्रक्रिया की आईडी है और /tmp/fileइसकी सामग्री होगी। यदि आप इसे संरक्षित करना चाहते हैं तो किसी अन्य स्थान और नाम का उपयोग करें।

  • {pid} प्रक्रिया की आईडी है।
  • {fd} फाइल डिस्क्रिप्टर है। lsofएफडी दिखाना चाहिए। lsofसंभावना है grepकि आप लाइन पर "हटाए गए" दिखाने जा रहे हैं ताकि आप भी ऐसा कर सकें । lsof -nP +L11 से कम लिंक वाली सभी फ़ाइलों को सूचीबद्ध करेगा, हटाई गई फ़ाइल में 0. होगा | grep {pid}केवल अपने PID के लिए खोज करने के लिए जोड़ें ।
  • मिठाई से: lsof -p 22664 | sed -E '$!d;s/.*\s([0-9]+)[a-z]\s.*/\1/'सिर्फ एफडी पाने के लिए।
  • टिप्पणियों से: आप उपयोग कर सकते हैं less, catया cpभी। मैं बड़ा हुआ tail:)

"मैं पूंछ पर बड़ा हुआ हूं!" * X के साथ कुछ भी करने के लिए एक मूल्यवान अंतर्दृष्टि।
श्री
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.