Crontab हटा दिया गया?


11

"Crontab -e" टाइप करने के बजाय मैंने गलती से "crontab" टाइप किया और एक प्रक्रिया के बीच में अटक गया था इसलिए मैंने प्रक्रिया को निरस्त कर दिया। अब जब मैं crontab पर जाता हूं-तो यह पूरी तरह से खाली है। यह बिल्कुल अच्छा नहीं है। अगर मैं इसे वापस नहीं पा सकता हूं तो मुझे इसे फिर से लिखना होगा।

क्या कोई रास्ता है:

  1. मेरी कोंट्राब नौकरियां वापस पाओ? वे स्मृति में कहीं हैं? Linux में खाता विशिष्ट crontab फाइलें कहाँ स्थित हैं? या
  2. सभी चीजों का एक लॉग प्राप्त करें जो क्रोन ने किया है, इसलिए मैं इंजीनियर को अपने क्रॉस्टैब फ़ाइल को उल्टा कर सकता हूं। मैंने इसे लंबे समय में नहीं देखा था?

3
बस इसे अपने सबसे हालिया सिस्टम बैकअप से पुनर्स्थापित करें।
डेविड हेफर्नन

यदि आपने crontab -r टाइप किया है, जैसे मैंने किया और यह थ्रेड पाया, तो आप लॉग / / लॉग से रीडिंग कमांड को पुनर्प्राप्त कर सकते हैं। मेरे मामले syslog.1 में सब कुछ है कि मैं जरूरत थी
StackUnder

जवाबों:


14

crontabकोई तर्क के साथ मानक इनपुट से एक crontab फ़ाइल पढ़ता है। उदाहरण के लिए, आप उपयोग कर सकते हैं:

 echo "* * * * *  run-this-every-minute" | crontab

एक बार जब आप अपने क्रॉटाब को बंद कर देते हैं (यानी, crontab -lकुछ नहीं दिखाता है), तो इसे वापस पाने का कोई अच्छा तरीका नहीं है।

मेरे सिस्टम पर (उबंटू 11.04), व्यक्तिगत crontabs /var/spool/cron/crontabs/<USER>- में संग्रहीत किया जाता है , लेकिन यह है कि आप क्या कर रहे हैं, ताकि आप किसी भी अच्छा नहीं करेंगे। (आपके सिस्टम पर पथ भिन्न हो सकता है।)

मैं /var/log/syslogद्वारा निष्पादित कमांड के लिए प्रविष्टियां देखता हूं cron; आप उस (या आपके सिस्टम के समकक्ष, यदि कोई हो) से अपने कॉन्टैब को फिर से संगठित करने में सक्षम हो सकते हैं, लेकिन यह थकाऊ होने वाला है।

यहाँ मैं इस तरह की समस्या से बचने के लिए क्या करूँ:

मैं अपने कॉन्टैब को एक अलग फाइल में रखता हूं, जो एक सोर्स कंट्रोल सिस्टम में बना रहता है। मैं इसे केवल चलाने के द्वारा स्थापित करता हूं

crontab filename

मैं कभी उपयोग नहीं करता crontab -e। अगर मैं गलती से अपने crontab को हटा देता हूं, तो मैं इसे फ़ाइल से पुनः लोड कर सकता हूं। (ठीक है, शायद ही कभी; मैं कभी-कभी crontab -eअस्थायी परिवर्तन करने के लिए उपयोग करता हूं, यह जानते हुए कि मैं बाद में वर्तमान संस्करण को पुनर्स्थापित कर सकता हूं।)


@mountainclimber: मैं असहमत हूं। अपने crontab को बचाने के लिए, का उपयोग करें crontab -l > filename। इसे फिर से स्थापित करने के लिए, crontab filename। सिस्टम-प्रदान इंटरफ़ेस का उपयोग करें; अपनी पीठ के पीछे मत जाओ और सिस्टम फ़ाइलों में हेरफेर करें। एक बात के लिए, फ़ाइल को अपडेट करने से सिस्टम को इसे फिर से पढ़ना जरूरी नहीं होगा; crontabआदेश होगा। दूसरे के लिए, फ़ाइल और आउटपुट के बीच क्या अंतर हो सकता है crontab -l; उबंटू पर, फ़ाइल में कुछ अतिरिक्त टिप्पणी लाइनें हैं जो आपको इसे संपादित नहीं करने की सलाह देती हैं।
कीथ थॉम्पसन

मैं अपनी अन्य टिप्पणी हटा दूंगा। नई टिप्पणी: कीथ ने पथ का उल्लेख किया /var/spool/cron/crontabs/<USER>। SUSE पर, मेरा पथ थोड़ा अलग है (नोट अतिरिक्त स्लैश) /var/spool/cron/cron/tabs/<USER>:। सोचा था कि मैं इसका उल्लेख मेरे जैसे क्रोन और लिनेक्स के लिए नए शौक के लिए करूंगा। कीथ का जवाब सही है।
पर्वतीय

5

पूर्ण crontab वसूली के लिए स्क्रिप्ट

मैंने एक PHP स्क्रिप्ट बनाई जो लॉग के आधार पर आपके कॉन्टैब की पूरी रिकवरी करती है।

यह अंतिम सप्ताह के लिए उपयोगकर्ता द्वारा चलाए जाने वाले हर क्रोन कमांड के एक एकल उदाहरण को आउटपुट करता है।

मैंने इसे यहां रखा है

https://github.com/dangreenisrael/recover_crontab

यहाँ एक नमूना आउटपुट है:

perl ~/sorttv/sorttv.pl

/usr/local/bin/flexget

bash ~/scripts/sort_sports.sh

~/scripts/play_recently_added.sh

1

मुझे खेद है, लेकिन मैं स्पष्ट पूछने में मदद नहीं कर सकता: क्यों इसे बैकअप से बहाल नहीं किया गया?

एर, सॉरी, मुझे लगता है कि पहले से ही सुझाव दिया गया था।


0

यदि आपका EDITOR envrionment variable EDITOR = vi है, तो प्रयास करें

vi -r

सत्र को पुनर्प्राप्त करने के लिए। सहेजे गए सत्र को सीधे न लिखें, यदि आप अपने क्रॉस्टैब निर्देशिका में एक प्राप्त करते हैं। एक गाइड के रूप में अपने crontab का उपयोग कर इसे फिर से उपयोग करें

crontab -e

नोट: चूँकि आपने OS, Solaris और अन्य UNIX OS को निर्दिष्ट नहीं किया था, इसलिए crontab -e के माध्यम से बनाए गए को छोड़कर crontab फ़ाइलों में परिवर्तन को नहीं पहचानते हैं। अगर मुझे ठीक से याद है, तो लिनक्स करता है।


पुनर्प्राप्त करने के लिए कोई सत्र नहीं है; ओपी के crontabबजाय टाइप किया crontab -e। मेरे जवाब को और बेहतर (IMHO) तरीके से अपने crontab बनाए रखने के लिए देखें।
कीथ थॉम्पसन

0

@Keith थॉम्पसन से महान जवाब - अच्छा विचार / var / log / syslog से पुनर्निर्माण!

मैंने अपने उपयोगकर्ता crontab को गलती से बंद कर दिया था, लेकिन निम्नलिखित स्क्रिप्ट-फू के साथ इसे फिर से बनाने में सक्षम था

mkdir ~/syslog
sudo cp /var/log/syslog* ~/syslog/
sudo chmod 777 ~/syslog/*
cat ~/syslog/* | grep "(username)" | grep -o "CMD.*" | sort | uniq

उपयोगकर्ता नाम को उस उपयोगकर्ता के साथ बदल दिया जाना चाहिए, जिसका कॉस्ट्रैब आप फिर से संगठित करना चाहते हैं।

ध्यान दें कि यदि लॉग्स को संकुचित कर दिया गया है तो आपको अपनी /var/log/syslog.x.gz फ़ाइलों की सामग्री को गनजिप करना होगा (ubuntu zips up syslog.2 +)

यह भी केवल उन कमांड को प्राप्त करेगा जो अभी भी लॉग में हैं, जो पिछले 7 दिनों के बारे में होगा ... इसलिए यदि आपके पास एक मासिक कार्य है जो नहीं चला ... तो वह शायद चला गया है

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.