मैं एक स्क्रिप्ट बना रहा हूं और अगर यह मौजूद है तो इसे किसी अन्य फाइल पर लिखना चाहेंगे?
traceroute google.com > trace.log
किसी भी सहायता की सराहना की जाएगी।
इसके अलावा, मैं एक नौसिखिया हूं, इसलिए एक उदाहरण सहायक होगा।
धन्यवाद।
मैं एक स्क्रिप्ट बना रहा हूं और अगर यह मौजूद है तो इसे किसी अन्य फाइल पर लिखना चाहेंगे?
traceroute google.com > trace.log
किसी भी सहायता की सराहना की जाएगी।
इसके अलावा, मैं एक नौसिखिया हूं, इसलिए एक उदाहरण सहायक होगा।
धन्यवाद।
जवाबों:
यहाँ एक दृष्टिकोण है:
#!/bin/sh
n=
while true
do
fname="trace$n.log"
[ -f "$fname" ] || break
n=$(($n+1))
done
traceroute google.com >"$fname"
बदले में प्रत्येक संभावित नाम के माध्यम से उपरोक्त छोरों, trace.log
, trace1.log
, trace2.log
, आदि पहली बार जब यह एक ऐसा नाम पाता है जो मौजूद नहीं है, तो यह लूप से बाहर निकल जाता है और आपका चलता है traceroute
आदेश।
कैविएट: यह स्क्रिप्ट दौड़ की स्थितियों को संभालने का प्रयास नहीं करती है। विशेष रूप से, किसी फ़ाइल के अस्तित्व के लिए स्क्रिप्ट की जाँच के बाद समय में एक पल होता है लेकिन इससे पहले कि यह स्क्रिप्ट लिखने के लिए उस फ़ाइल को खोलता है। उस झटपट में, कोई अन्य चल रहा प्रोग्राम फ़ाइल बनाने की कोशिश कर सकता है। अप्रत्याशित घटना में कि यह आपके लिए चिंता का विषय है, अधिक जटिल दृष्टिकोण के लिए कहा जाएगा।
cron
। आपको शायद क्रोन के बारे में पढ़ना चाहिए। फिर भागो crontab -e
अपनी क्रोन फ़ाइल को संपादित / बनाने के लिए। इसमें एक लाइन जोड़ें जो दिखता है 5 * * * * /path/to/script
। वह चलेगा script
एक घंटे में एक बार घंटे से पांच मिनट पहले।
*/4 * * * * /path/to/script >$HOME/script.log 2>&1
। वह दो काम करता है। पहले */4
भाग का मतलब है कि यह एक घंटे के बजाय हर चार मिनट में स्क्रिप्ट चलाएगा। इससे प्रतीक्षा समय कम हो जाएगा। दूसरा, अंतिम भाग, >>$HOME/script.log 2>&1
, यह फ़ाइल में सभी त्रुटि संदेशों को सहेजने का कारण होगा script.log
अपने घर निर्देशिका में। उम्मीद है, उस लॉग फ़ाइल में कुछ आपको बताएगा कि क्या गलत हुआ।