उपयोगकर्ता crontab कहाँ संग्रहीत है?


249

मेरे उपयोगकर्ता के क्रॉएब को अपग्रेड करने के बाद से मिटा दिया गया है। इस साल ऐसा पहली बार नहीं हुआ है और यह हर बार इसे बहाल करने वाला दर्द है।

मैं अपने उपयोगकर्ता के लिए कॉन्टैब का बैकअप लेने में सक्षम होना चाहता हूं, लेकिन इसके लिए मुझे यह जानना होगा कि यह कहाँ संग्रहीत है।


4
यह अच्छा होगा यदि कोई व्यक्ति भी इसका कारण बता सकता है, तो उसका सफाया क्यों किया जाता है
Walter Tross

1
@WalterTross हाँ, यह काफी कष्टप्रद है। मुझे लगता है कि यह cronपैकेज को अपडेट करने का एक साइड-इफेक्ट होगा, लेकिन मैं सहमत हूं - यह ऐसा कुछ नहीं है जो होना चाहिए।
ओली

उह, मुझे नहीं लगता कि उपयोगकर्ता क्रोन प्रति क्रोन पैकेज अपग्रेड के लिए मिटा दिया गया है!
pl1nk

@ pl1nk मुझे नहीं पता कि यह क्या मिटा रहा है लेकिन यह हो रहा है। मशीन में भूत, मुझे लगता है।
ओली

उपयोगकर्ता तालिकाओं को एक अस्थायी क्षेत्र / var / spool / cron / crontabs / $ USER पर संग्रहीत किया जाता है, जैसे कि आपके अगले बूट या अपग्रेड पर हटाया जा सकता है।
fcm

जवाबों:


325

दरअसल, उन फाइलों को हाथ से संभालने की सिफारिश नहीं की जाती है। प्रति crontabआदमी पृष्ठ:

प्रत्येक उपयोगकर्ता का अपना कॉन्टैब हो सकता है, और हालांकि
ये फाइलें हैं /var/spool/cron/crontabs, लेकिन उन्हें
सीधे संपादित करने का इरादा नहीं है ।

के तहत फाइलें /var/spoolअस्थायी / काम करने वाली मानी जाती हैं, इसीलिए वे शायद अपग्रेड के दौरान डिलीट हो जाती हैं, हालांकि cronपैकेज की अपग्रेड स्क्रिप्ट पर करीब से नजर डालने से इस पर कुछ प्रकाश डाला जा सकता है।

वैसे भी, हमेशा अपनी क्रोन प्रविष्टियों का बैकअप लेना या उन्हें अपने होम डायरेक्टरी में फ़ाइल में रखना एक अच्छा अभ्यास है।

मुझे लगता है कि तुम crontab -eमक्खी पर crontab फ़ाइलें बनाने के लिए उपयोग कर रहे हैं। यदि ऐसा है, तो आप अपने crontab फ़ाइल की "कॉपी" प्राप्त कर सकते हैं crontab -l। "बैकअप" प्राप्त करने के लिए एक फ़ाइल पर पाइप:

crontab -l > my-crontab

फिर आप प्रविष्टियों को जोड़ने या संशोधित करने के लिए उस my-crontab फ़ाइल को संपादित कर सकते हैं, और फिर इसे crabab में देकर "इंस्टॉल" कर सकते हैं:

crontab my-crontab

यह उसी तरह के वाक्यविन्यास की जाँच करता है crontab -e


7
crontab -l/var/spool/cron/crontabs/$USERउस फ़ाइल पर विचित्र अनुमतियों के कारण अधिकतर गुजरना आसान है ।
ओली

1
iptables-saveक्रॉन की। अच्छा ...
पार्थियन

4
शायद हमें एक कॉन्टैब को स्वतः ही अपने आप वापस ऊपर ले जाना चाहिए :)?
पास्कलवूटन

4
के माध्यम से poking /var/spool/cron/crontabsआसान है जब आप को क्यूरेट या वास्तव में कई प्रयोक्ताओं crontabs की जांच करना चाहते है।
धसानन

1
जब एक सर्वर पर रहस्यों की जांच कर आप से परिचित नहीं हैं, यह आम है sudo grep -rHin "$string" /etc/cron*(जहां स्ट्रिंग की तरह एक आदेश हो सकता है docker, lftp, iptables, आदि यह भी उपयोगकर्ता crontabs जाँच करने के लिए एक अच्छा विचार है यही कारण है कि मुझे इस क्यू एंड ए के लिए नेतृत्व sudo grep -rHin "$string" /etc/cron* /var/spool/cron*
ब्रूनो ब्रोंकोस्की


30

मुझे अंत में पता चला कि बूट के बाद मेरे कॉन्टैब्स और पोस्टफिक्स इंस्टॉलेशन क्यों टूटते रहे। यह वास्तव में मूर्खतापूर्ण कारण है लेकिन ...

मैंने रैम-ड्राइव के /var/spoolरूप में घुड़सवार किया था tmpfs

मुहावरेदार लगता है और यह है, लेकिन मैं अपने SSD के जीवन को लंबा करने के लिए पुराने SSD-tweaks में से एक का पालन किया था। ऐसा करने में, मैं आँख बंद करके /tmp, /var/tmpऔर विचार के बिना के /var/spoolरूप में मुहिम शुरू की tmpfs। मैंने सोचा था कि /var/spoolजैसा था /proc/या /run/और यह सत्र की अवधि के लिए उपयोगी था। मैं स्पष्ट रूप से गलत था।


8
यह /tmptmpfs के रूप में माउंट करने के लिए सुरक्षित होना चाहिए , लेकिन नहीं /var/tmpया नहीं /var/spool/tmpअस्थायी भंडारण के लिए उपयोग किया जाता है जिसे रिबूट पर खो दिया जा सकता है। /var/tmpअस्थायी भंडारण के लिए उपयोग किया जाता है जो रिबूट के बाद रहेगा। और जैसा कि आपने खोजा है, /var/spoolसंसाधित होने वाले डेटा के लिए है, जो रिबूट के बाद भी रहेगा।
थोमसट्रेटर


2
यह भी ध्यान दें कि लेखन गणना अब आधुनिक एसएसडी के साथ कोई समस्या नहीं है।
थोमसट्रेटर

17

अपने सिस्टम के सभी उपयोगकर्ताओं की सभी क्रोन नौकरियों की सूची बनाने के लिए:

for user in $(cut -f1 -d: /etc/passwd)
do
  echo $user
  crontab -u $user -l
done

आपके समस्या का एक विकल्प उन्हें cron.d फ़ोल्डर में रखना होगा और उदाहरण के लिए क्रोन प्रति उपयुक्त उपयोगकर्ता निर्दिष्ट करना होगा:

00 01 * * * user /home/user/user-script.sh

यदि आप किसी अन्य ड्राइव से क्रेस्टब को पुनर्प्राप्त कर रहे हैं, तो यह काम नहीं करेगा क्योंकि crontab -uआपके वर्तमान सिस्टम से चल रहा है।
JVE999

जबकि मुझे लगता है कि यह एक-लाइनर है कि यह 80 से कम वर्णों में फिट बैठता है और कुछ हद तक पठनीय है, मैं आमतौर पर कोड को एक प्रारूप में रखना पसंद करता हूं जैसे कि कोई व्यक्ति कॉपी-पेस्ट कर सकता है या इसे स्क्रिप्ट में डाल सकता है (और, एक स्क्रिप्ट में, यह कोड की एक पंक्ति नहीं होगी )। एडिटिंग का सुझाव ...
पार्थियन ने

इसके अलावा, मैं इसे एक while read userलूप में बदलने वाला था , इस मामले को संभालने के लिए जहां उपयोगकर्ता नाम में रिक्त स्थान है, लेकिन जाहिर है कि यह कोई मुद्दा नहीं है। उपयोगकर्ता नाम वर्णों का बहुत सीमित सेट।
पार्थियन ने
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.