2013-02-15 58 views
5

मैं जो इस तरह समय स्टाम्प साथ लॉग फाइल उत्पन्न करने के लिए हर 30 मिनट चलाता है एक क्रॉन जॉब है पुश करने के लिए:खोल स्क्रिप्ट समय स्टाम्प के साथ दैनिक फ़ोल्डर बना सकते हैं और समय स्टाम्प उत्पन्न लॉग

test20130215100531.log, 
test20130215102031.log 

मैं करूंगा जेनरेट होने पर संबंधित दिनांक फ़ोल्डर में डेट टाइम-स्टैम्प और पुश लॉग फ़ाइलों के साथ प्रतिदिन एक फ़ोल्डर बनाना पसंद है।

मुझे इसे AIX सर्वर पर बैश के साथ प्राप्त करने की आवश्यकता है।

+0

क्या एक cronjob कि हर रात 00.00 पर निर्देशिका बनाता है के बारे में? और फिर इस निर्देशिका में फ़ाइलों को धक्का देने के लिए वास्तविक cronjob संशोधित करें। – fedorqui

+0

मैं शिकायत किए बिना हर बार गायब निर्देशिका बनाने के लिए 'mkdir -p' की सिफारिश करता हूं यदि यह पहले से मौजूद है। क्या होगा यदि 00:00 नौकरी कुछ कारणों से चलने में विफल रहता है (सिस्टम नीचे जा रहा है), क्या हम चाहते हैं कि सभी दैनिक नौकरियां विफल हो जाएं? –

+0

हां, आप सही हैं। मैं आपका विकल्प पसंद करता हूं। – fedorqui

उत्तर

8

हो सकता है कि आप इस तरह से एक स्क्रिप्ट की तलाश में हैं:

#!/bin/bash 

shopt -s nullglob # this line is so that it does not compain when no logfiles are found 
for filename in test*.log; do # Files considered are the ones startign with test and ending in .log 
    foldername=$(echo "$filename" | awk '{print (substr($0, 5, 8));}'); # The foldername is characters 5 to 13 from the filename (if they exist) 
    mkdir -p "$foldername" # -p so that we dont get "folder exists" warning 
    mv "$filename" "$foldername" 
    echo "$filename $foldername" ; 
done 

मैं केवल अपने नमूना के साथ परीक्षण किया, तो एक निर्देशिका है कि महत्वपूर्ण सामग्री में शामिल है में उपयोग करने से पहले एक उचित परीक्षण करना। टिप्पणी के जवाब में

संपादित करें:

इस के लिए अपने मूल स्क्रिप्ट बदलें:

foldername=$(date +%Y%m%d) 
mkdir -p /home/app/logs/"$foldername" 
sh sample.sh > /home/app/logs/"$foldername"/test$(date +%Y%m%d%H%M%S).log 

या यह निर्देशिका कहीं और बनाया जाता है, सिर्फ इस कार्य करें:

sh sample.sh > /home/app/logs/$(date +%Y%m%d)/test$(date +%Y%m%d%H%M%S).log 
+0

बहुत बहुत धन्यवाद !! यह कैसे होगा यदि मैं एक बार निर्देशिका शुरू कर सकता हूं, जब दिन शुरू होता है और उसी दिन निर्देशिका में लॉग लिखता है। अभी .. मैं टाइमस्टैम्प के साथ एक स्थान में एक स्क्रिप्ट रखने के माध्यम से लॉग बना रहा हूँ। – user1746666

+0

क्या आप अपनी स्क्रिप्ट का हिस्सा पोस्ट कर सकते हैं जो टाइमस्टैम्प के साथ लॉग फ़ाइल बनाता है? उस से काम करना आसान है। _ (यदि आप अपना प्रश्न संपादित करते हैं, तो यहां एक टिप्पणी भी छोड़ दें, इसलिए मुझे अधिसूचित किया गया है) _ – user000001

+0

// यहां कुछ कॉन्फ़िगरेशन सामान कर रहा हूं, फिर नीचे फ़ाइल बनाने के लिए एक और स्क्रिप्ट निष्पादित कर रहा हूं। sh sample.sh>/home/app/logs/test $ (दिनांक +% वाई% एम% डी% एच% एम% एस) .log उपरोक्त प्रत्येक 30 मिनट में चलता है, जो दिन में 48 लॉग उत्पन्न करेगा – user1746666

1

आपको लॉग्रोटेट का उपयोग करना चाहिए! यह आपके लिए पहले से ही ऐसा कर सकता है, और आप केवल उसी लॉग फ़ाइल में लिख सकते हैं।

जानकारी के लिए उनके आदमी पृष्ठों की जाँच करें: http://linuxcommand.org/man_pages/logrotate8.html