ट्रेस.लॉग, ट्रेस1.लॉग, आदि पर बैश राइट कैसे बनाएं?


2

मैं एक स्क्रिप्ट बना रहा हूं और अगर यह मौजूद है तो इसे किसी अन्य फाइल पर लिखना चाहेंगे?

traceroute google.com > trace.log

किसी भी सहायता की सराहना की जाएगी।
इसके अलावा, मैं एक नौसिखिया हूं, इसलिए एक उदाहरण सहायक होगा।
धन्यवाद।

जवाबों:


1

यहाँ एक दृष्टिकोण है:

#!/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 आदेश।

कैविएट: यह स्क्रिप्ट दौड़ की स्थितियों को संभालने का प्रयास नहीं करती है। विशेष रूप से, किसी फ़ाइल के अस्तित्व के लिए स्क्रिप्ट की जाँच के बाद समय में एक पल होता है लेकिन इससे पहले कि यह स्क्रिप्ट लिखने के लिए उस फ़ाइल को खोलता है। उस झटपट में, कोई अन्य चल रहा प्रोग्राम फ़ाइल बनाने की कोशिश कर सकता है। अप्रत्याशित घटना में कि यह आपके लिए चिंता का विषय है, अधिक जटिल दृष्टिकोण के लिए कहा जाएगा।


इसके अलावा, मुझे पता है कि यह सवाल नहीं है, लेकिन मैं हर घंटे फ़ाइल कैसे चलाऊं?
QuyNguyen2013

@ user285771 हर घंटे कुछ चलाने के लिए, उपयोग करें cron। आपको शायद क्रोन के बारे में पढ़ना चाहिए। फिर भागो crontab -e अपनी क्रोन फ़ाइल को संपादित / बनाने के लिए। इसमें एक लाइन जोड़ें जो दिखता है 5 * * * * /path/to/script। वह चलेगा script एक घंटे में एक बार घंटे से पांच मिनट पहले।
John1024

मैंने ऐसा किया था, लेकिन मेरे पास अभी भी 2 घंटे के इंतजार के बाद केवल 1 लॉग है। ?
QuyNguyen2013

@Autospamfighter अगर आपको एक मिला, तो शायद आपको थोड़ी देर इंतजार करना चाहिए। अन्यथा, क्रॉस्टैब लाइन को बदलने की कोशिश करें */4 * * * * /path/to/script >$HOME/script.log 2>&1। वह दो काम करता है। पहले */4 भाग का मतलब है कि यह एक घंटे के बजाय हर चार मिनट में स्क्रिप्ट चलाएगा। इससे प्रतीक्षा समय कम हो जाएगा। दूसरा, अंतिम भाग, >>$HOME/script.log 2>&1, यह फ़ाइल में सभी त्रुटि संदेशों को सहेजने का कारण होगा script.log अपने घर निर्देशिका में। उम्मीद है, उस लॉग फ़ाइल में कुछ आपको बताएगा कि क्या गलत हुआ।
John1024

मुझे इसका पता चला। मेरा नया प्रश्न यहाँ देखें: superuser.com/questions/789383/...
QuyNguyen2013
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.