cron.daily नौकरियां नहीं चल रही हैं


19

मैंने चलाने के लिए 3 दैनिक क्रोन नौकरियां बनाईं।

नीचे तीन / etc / cron.daily में रखे गए हैं

rkhunter.sh

#!/bin/sh
(
rkhunter --versioncheck
rkhunter --update
rkhunter --cronjob --report-warnings-only
) | mail -s 'rkhunter Daily Run (my server)' me@email.com

chkrootkit.sh

#!/bin/bash
chkrootkit | mail -s "chkrootkit Daily Run (my server)" me@email.com

logwatch.sh

#!/bin/sh
(
logwatch
) | mail -s 'logwatch Daily Log (my server)' me@email.com

मैंने अपने ईमेल से me@email.comcourse को बदल दिया।

अगर मैं इस क्रोनजॉब को मैन्युअल रूप से चलाता हूं तो यह ठीक काम करता है ./nameoffile.sh

लेकिन यह दैनिक नहीं चलता है, इसका क्या कारण हो सकता है या मैं इसकी जांच कैसे कर सकता हूं?


2
सुनिश्चित करें कि आपके द्वारा cron.daily / साप्ताहिक / प्रति घंटा / आदि में बनाई गई फाइलें केवल निष्पादन योग्य हैं, बस एक chmod + x /etc/cron.daily/whatever
Turgut Kalfaoglu

जवाबों:


6

दो संभावित संदिग्ध हैं जो आमतौर पर cronनौकरियों को चलाने में सक्षम नहीं होते हैं।

पहली अनुमतियाँ समस्याएं हैं, जो एक उपयोगकर्ता स्क्रिप्ट / कमांड चला सकता है लेकिन क्रोन डेमॉन नहीं कर सकता क्योंकि नौकरी गलत उपयोगकर्ता की क्रोन नौकरियों में है। उदाहरण के लिए, उपयोगकर्ता एक स्क्रिप्ट बनाता है या उन्नत विशेषाधिकारों के साथ एक कमांड चलाता है sudo, अर्थात , तब परीक्षण की गई स्क्रिप्ट / कमांड को क्रोन जॉब्स ( crontab) में जोड़ता है । इसका परिणाम यह है कि उपयोगकर्ता की क्रॉन नौकरी तब तक नहीं चल पाएगी, जब तक कि उसे विशेषाधिकारों की आवश्यकता न हो।

  • वर्तमान उपयोगकर्ता के क्रॉस्टैब प्रकार में क्रोन जॉब लगाने के लिए crontab -e
  • रूट के क्रॉस्टैब प्रकार में क्रोन जॉब लगाने के लिए sudo crontab -e

दूसरा कारण पथ है, यह सुनिश्चित करने के लिए कि स्क्रिप्ट निष्पादित होगी, उपयोगकर्ता को स्क्रिप्ट में पूर्ण पथ को क्रैस्टैब में निष्पादित करने के लिए जोड़ना होगा। एक अन्य समाधान रूट यूजर्स PATH वैरिएबल का विस्तार करना होगा जो कि उनके क्रॉस्टैब फ़ाइल के शीर्ष पर निम्न पंक्ति लगाएगा:

PATH=/usr/sbin:/usr/bin:/sbin:/bin

जैसा कि समुदाय विकि का उल्लेख करता है

आप क्रोन के बारे में समुदाय विकी को पढ़ना चाह सकते हैं क्योंकि यह उपरोक्त के बारे में और विवरण प्रदान करता है।


तो क्या मैं सिर्फ वहाँ फ़ाइल नाम रख सकता हूँ?
sonicboom

यह वास्तव में कह रहा है कि रूट के लिए कोई पिछली क्रोन नौकरी नहीं है और आप अपना पहला लिखने जा रहे हैं और फिर यह आपको एक संपादक को चुनने के लिए कहता है ताकि क्रॉस्टेब को संशोधित किया जा सके। बस मेनू (1.bin / ed, आदि) से एक चुनें। नैनो को अपना आसान चुनें, बस निर्देशों पर ध्यान दें।
स्टिफ के

इसलिए 10PM पर दिन में एक बार दौड़ने के लिए मैं * 22 * ​​* * परीक्षण> rkhunter.sh सही डालूंगा?
सोनिकबोम

आह भयानक! बीमार अभी कोशिश करो!
सोनिकबोम

परीक्षण> rkhunter.sh के लिए क्या है?
सोनिकबोम

76

इस प्रतिक्रिया के अनुसार , समस्या .sh एक्सटेंशन के साथ है। निकालें (ताकि उदाहरण के लिए rkhunter.sh से rkhunter पर अपनी फ़ाइल का नाम बदलें।

निम्नलिखित कमांड चलाने की पुष्टि करने के लिए run-parts --test /etc/cron.daily

यदि आपकी स्क्रिप्ट (rkhunter) परिणामों में शामिल है, तो सब अच्छा है। रन-पार्ट्स कमांड के बारे में अधिक जानकारी के लिए, उस पर मैन पेज पढ़ेंman run-parts


1
यह वह उत्तर है जिसकी मैं तलाश कर रहा था, विभिन्न परीक्षण के बाद, मुझे एहसास हुआ कि बिना विस्तार के एक और स्क्रिप्ट फ़ाइल निष्पादित की जाती है
अल्बर्ट कैटला

5
जैसा कि @rharriso ने अपने जवाब में कहा। यह ".sh" के साथ एक मुद्दे के रूप में "।" के साथ इतना मुद्दा नहीं है। किसी भी एक्सटेंशन वाली कोई भी फाइल छूट जाएगी। man run-parts"से नाम सीधे उद्धृत करने के लिए " पूरी तरह से ASCII ऊपरी और निचले मामले पत्र, ASCII अंक, ASCII अंडरस्कोर, और ASCII माइनस-हाइफ़न शामिल होना चाहिए
उत्तरी-ब्रैडले

11

मेरे सिस्टम में यह इसलिए था क्योंकि एनाक्रॉन स्थापित नहीं था।

grep run-parts /etc/crontab

17 *    * * *   root    cd / && run-parts --report /etc/cron.hourly
25 6    * * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6    * * 7   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6    1 * *   root    test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )

तो या तो एनाक्रॉन स्थापित करें या टेस्ट -x / usr / sbin / anacron को हटा दें


1
+1 डिफ़ॉल्ट रूप से एनाक्रॉन स्थापित नहीं है? मुझे उम्मीद होगी कि। मुझे लगता है कि यह मेरे लिए इसे हल करेगा। धन्यवाद।
लेप

यकीन है कि पर्याप्त नहीं था, यह मेरा नहीं था .. FFS, मुझे यकीन है कि यह WAS था, क्योंकि कुछ महीने पहले स्क्रिप्ट निष्पादित हो रही थी !: dpkg --get-selections | grep cron.. <शपथ>
Grizly

हां, मुझे नहीं पता कि या तो क्या हुआ क्योंकि यह एक पैकेज है जो आमतौर पर स्टार्टअप पर स्थापित होता है।
नटिम

10
यह वास्तव में सही नहीं है। anacronआवश्यक नहीं है; ||crontab में ऑपरेटर कार्यान्वित कमांड run-partsजब anacron स्थापित नहीं है। जब anacronस्थापित किया जाता है, तो यह उन दैनिक / साप्ताहिक / मासिक run-partsआदेशों को निरर्थक बनाता है ।
TalkLittle

तो शायद यह था क्योंकि रन-पार्ट्स काम नहीं करते थे? किसी भी एनाक्रॉन को स्थापित करने में यह मेरे लिए तय है।
नटिम

10

मुझे लगता है कि एक्सटेंशन वाली फाइलें नजरअंदाज कर दी जाती हैं।

Daud:

 run-parts --test /etc/cron.daily

यदि आप अपनी स्क्रिप्ट को सूचीबद्ध नहीं देखते हैं, तो .sh एक्सटेंशन हटा दें और फिर से प्रयास करें।


5

Stef जवाब में जोड़ते हुए, आपको यह भी सुनिश्चित करना चाहिए कि उनके पास निष्पादन योग्य बिट है:

$ ls -l
-rwxr-xr-x  1 root root   268 Jun  1 08:06 00logwatch
-rwxr-xr-x  1 root root   311 May 22  2012 0anacron
-rwxr-xr-x  1 root root 15007 Jun  6 14:08 apt

आप का उपयोग करके उन्हें चलाने में सक्षम होना चाहिए chmod +x filename


ये कौन सी फाइलें हैं? क्या यह /etc/logrotate.d फ़ोल्डर की सामग्री है?
realtebo

4

.Sh एक्सटेंशन नहीं करने के लिए अपनी फ़ाइल का नाम बदलें

सत्यापित करने के लिए यह समस्या है, प्रयास करें

sudo run-parts --list /etc/cron.daily 

आप देखेंगे कि यह सूचीबद्ध नहीं है। तो चलाएं:

mv script.sh script

और फिर से लिस्टिंग का प्रयास करें। इसे सूचीबद्ध किया जाना चाहिए।


यह समस्या किसी भी निष्पादन योग्य प्रभाव का विस्तार करने वाली लगती है। मेरे पास एक फ़ाइल का नाम "filename.ca" था और इसे तब तक सूचीबद्ध नहीं किया जाता जब तक मैंने इसका नाम "फ़ाइल नाम" नहीं रखा
kiwicomb123

0

मैं इसे एनाक्रॉन के साथ नहीं चला सकता, मैंने एनाक्रॉन को हटा दिया /etc/crontabऔर निष्पादित किया apt remove --purge anacronऔर यह तुरंत काम करता है।

मुझे समझ नहीं आता कि हमें दो अनुसूचक की आवश्यकता क्यों है।


0

आज भी वही स्थिति है

मैंने किया

sudo journalctl -u cron -b | grep -i error

और मिल गया

cron[815]: Error: bad hour; while reading /etc/crontab
cron[815]: (*system*) ERROR (Syntax error, this crontab file will be ignored)

मुझे पता चला कि किसी ने (मुझे !!!!) एक लाइन के साथ शुरू किया

20 38 ...

और जाहिर है 38 वें घंटे मौजूद नहीं है!

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