कैसे एक क्रोनजोब ईमेल विषय को संशोधित करने के लिए


49

मैं Hostmonster.com पर अपनी होस्टिंग से आधा दर्जन अलग-अलग क्रॉन जॉब्स चला रहा हूं। जब एक क्रोनजोब निष्पादित किया गया है तो मुझे स्क्रिप्ट के आउटपुट के साथ एक ईमेल प्राप्त होता है।

ईमेल के प्रारूप में आता है:

प्रेषक: क्रोन डेमन
विषय: क्रोन / रैमडिस्क / बिन / php5 -c /home5/username/scheduled/optimize_mysql.bash

इसके साथ समस्या यह है कि ईमेल का विषय यह पढ़ना बहुत कठिन बनाता है कि ईमेल किस क्रॉन्जोब से संबंधित है।

क्या क्रोनजोब ईमेल के विषय को संशोधित करने का कोई तरीका है ताकि इसे पढ़ना आसान हो?

उदाहरण के लिए:

प्रेषक: क्रोन डेमन
विषय: MySQL डाटाबेस का अनुकूलन

जवाबों:


11

मेरे सिस्टम पर (सबसे डेबियन) सभी आउटपुट, स्क्रिप्ट / प्रोग्राम से जिसे क्रॉस्टैब-एंट्री कहा जाता है, ईमेल द्वारा भेजा जाता है जिसने account@localhostक्रोन की शुरुआत की। इन ईमेल में आपका जैसा विषय है।

यदि आप एक ईमेल प्राप्त करना चाहते हैं, तो एक ऐसी स्क्रिप्ट लिखें जिसका स्वयं कोई आउटपुट न हो। लेकिन इसके बजाय एक textfile में सभी आउटपुट डालें।

और साथ

mail -s 'your subject' adress@where < textfile

आप इसे अपनी इच्छानुसार प्राप्त करते हैं।


धन्यवाद माइकल। मैं Hostmonster की स्वचालित ईमेल प्रणाली का उपयोग करने की उम्मीद कर रहा था, लेकिन ऐसा लगता है कि इस समाधान के साथ मैं जाऊंगा। मेरे होस्टिंग द्वारा नियंत्रित स्वचालित क्रोन ईमेल को पुनः प्राप्त करने के बजाय मैं सिर्फ अपने ईमेल भेजूंगा।
जस्टिनल

53

या श नूप कमांड का उपयोग करें (:)

0 9-17 * * 1-5    : Queue Summary; PATH=/usr/sbin qshape

इस विषय पर अभी भी कीचड़ लग रहा है, लेकिन कम से कम यह वर्णनात्मक है और इसके लिए कोई बाहरी स्क्रिप्ट की आवश्यकता नहीं है।


4
अब यह एक हैक है! (मुझे यह पसंद है।)
मैक्सी-बी

8
ध्यान दें कि बृहदान्त्र के बाद अंतरिक्ष महत्वपूर्ण है।
पैट्रिक

1
क्या शीर्षक "कतार सारांश" होने जा रहा है? और क्या इस मामले में कमांड "क्षेप" है?
प्रतिक खडलोय

लगता है कि qshape एक पोस्टफ़िक्स कमांड है। मेरी यूनिक्स मशीन "मेल" कमांड का उपयोग करती है। लेकिन क्या qshape कमांड यहां प्रासंगिक है?
प्रतीक खडलो

1
FYI करें, ईमेल का विषय होगाQueue Summary; PATH=/usr/sbin qshape
Akom

20

अपने क्रॉन जॉब आउटपुट को सीधे मेल करने के लिए पाइप करें, और फिर आप विषय पंक्ति में भर सकते हैं। 2>&1वाक्य रचना किसी भी त्रुटि उत्पादन जो अन्यथा गायब हो जाते हैं भेजता है।

mycmd 2>&1 | mail -s "mycmd output" myname

2
मैं यह कर रहा हूं, लेकिन स्क्रिप्ट क्रोन कॉल करने के लिए आंतरिक है क्योंकि मैं चाहता हूं कि विषय स्क्रिप्ट की सफलता या असफलता को दर्शाता है।
टॉम बैरन

13

कमांड आउटपुट (या यदि कोई नहीं है) भेजने के लिए crond की जिम्मेदारी को 'mailx -E' में आउटपुट और stderr पाइपिंग द्वारा लें। उदाहरण के लिए:

0 * * * * your-command 2>&1 | mailx -E -s "Descriptive Subject" $LOGNAME

Mailx का Mail -E ’विकल्प अच्छा है, क्योंकि क्रोंड की तरह ही, यह मेल नहीं भेजेगा यदि भेजने के लिए कोई आउटपुट नहीं है।


1
यहाँ $ LOGNAME वैरिएबल क्या है?
प्रतिक खडलो

क्या केवल ईमेल का एक तरीका है जब कमांड का निकास कोड गैर शून्य है?
प्रतिक खडलो

1
@PratikKhadloya, crontab (5) से: Several environment variables are set up automatically by the cron(8) daemon. SHELL is set to /bin/sh, and LOGNAME and HOME are set from the /etc/passwd line of the crontab's owner. PATH is set to "/usr/bin:/bin". HOME, SHELL, and PATH may be overridden by settings in the crontab; LOGNAME is the user that the job is running from, and may not be changed.
लिंगफिश

2
कई mailxकार्यान्वयन हैं; उनमें से कुछ ही इस -Eविकल्प की पेशकश करते हैं । उबंटू पर आप bsd-mailxया heirloom-mailxपैकेज चाहते हैं; mailutilsपैकेज एक जीएनयू शामिल mailxएक अलग से आदेश -E
स्माइलर्स

2

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

#Optimize_MySQL_Database.sh

/ramdisk/bin/php5 -c /home5/username/scheduled/optimize_mysql.bash

आप अपने बिन निर्देशिका को पथ में crontab फ़ाइल में सेट करके शामिल कर सकते हैं।


0

TRY THIS - कमांड लाइन में निम्नलिखित कोड लागू करें ---

/usr/local/bin/php -q /path /hostname/foldername/Page-You-want-to-execute \
   | **mail -s "*SUBJECT*" YOUR@MAIL.COM.**
  • यह केवल आपका मार्गदर्शन करने के लिए एक संदर्भ है
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.