सवाल क्रॉन में डबल कोट्स और प्रतिशत संकेत (%) से बचें


निम्न आदेश प्रॉम्प्ट से काम करता है लेकिन crontab से नहीं।

 grep abc  /var/log/messages | grep "`date '+%B %d'`" | mail -s"abc log of `hostname`" shantanu.oak+`hostname`@gmail.com

मुझे इसे दैनिक क्रॉन में जोड़ने की ज़रूरत है।


52
2018-05-27 12:27


मूल


आपका उदाहरण अद्भुत है,% डबल, सरल और पीछे उद्धरण से घिरा हुआ है। कोई उम्मीद नहीं छोड़ने से बचने का उद्धरण काम कर सकता है। - tuxayo


जवाब:


आपको बचाना है % संकेत। क्रॉन्टाब में उनका विशेष अर्थ है:

man (5) crontab:

Percent-signs (%) in the command, unless escaped with backslash (\), 
will be changed into newline characters, and all data after the 
first % will be sent to the command as standard input.

96
2018-05-27 12:33



+1 बहुत अंतरंग, मैं या तो नहीं जानता था। आश्चर्यचकित मैं इसमें भाग नहीं लिया है। - Kyle Smith
खैर मैंने अभी इसमें भाग लिया था। मैं उपयोग कर रहा था date +%F और कहीं नहीं मिल रहा था - adamo
क्या इस वाक्यविन्यास का कोई उपयोगी उपयोग है? साथ में SHELL=/bin/bash, मैं हमेशा फिर से लिख सकता हूं cat %Hello world जैसा cat <<<'Hello world'। मुझे विशेष वाक्यविन्यास की आवश्यकता नहीं दिख रही है। - Witiko
@Witiko यदि आप "विशेष वाक्यविन्यास" के बारे में पूछ रहे हैं, तो प्रतिशत से बचने के लिए बैकस्लैश है, तो ओपी का अपना प्रश्न एक उदाहरण है जहां इसकी आवश्यकता है: कमांड तर्क जो प्रतिशत की आवश्यकता है, विशेष रूप से डेट प्रोग्राम, जो कि काफी लोकप्रिय होगा crontab कमांड। यदि आप वास्तव में पूछ रहे हैं कि क्रॉन के पास पहली जगह क्यों है: यानी: प्रतिस्थापन प्रतिशत के स्थान पर लाइनफेड होता है, तो मुझे लगता है कि आप आपूर्ति कर सकते हैं ताकि एक लाइन पर क्रॉन्टाब की आवश्यकता हो, एक "कमांड" जिसमें दो होते हैं या अधिक सहायक आदेश। - gwideman
बाद वाला। और, जैसा कि मैंने उल्लेख किया है, कोई भी बैश के साथ ऐसा ही कर सकता है। क्रॉन के सिंटैक्स को कूड़ेदान की जरूरत नहीं है। - Witiko


यह सीधे आपके प्रश्न का उत्तर नहीं देता है, लेकिन मैं सुझाव दूंगा कि आप / usr / local / bin (या ~ / bin या जो भी उचित हो) में एक स्क्रिप्ट फ़ाइल बनाएं और क्रॉन से कॉल करें। परीक्षण और संपादित करना आसान है।


7
2018-05-27 12:48



मेरे अनुभव में, 50 छोटी फाइलों को बनाए रखने के लिए क्रोंटैब में 50 लाइनों को बनाए रखना बहुत आसान है। आप निश्चित रूप से स्क्रिप्ट फ़ाइलों में लंबी स्क्रिप्ट को चालू करना चाहते हैं, लेकिन एक-लाइनर के लिए ऐसा करना एक ओवरकिल हो सकता है। - Witiko