(मेरे पास टिप्पणी करने के लिए पर्याप्त प्रतिष्ठा नहीं है, इसलिए मैं एक उत्तर के रूप में जोड़ रहा हूं: अपने उत्तर के रूप में टिप्पणी के रूप में इसे जोड़ने के लिए स्वतंत्र महसूस करें)
जो कैसडोनेट का वन-लाइनर एकदम सही है, सिवाय इसके कि अगर आप साथ चलते हैं set -e
, यानी यदि आपकी स्क्रिप्ट त्रुटि पर विफल है, और अगर कोई क्रोनॉजर अभी तक नहीं है। उस स्थिति में, वन-लाइनर क्रोनजॉब नहीं बनाएगा, लेकिन स्क्रिप्ट को बंद नहीं करेगा। मूक विफलता बहुत भ्रामक हो सकती है।
कारण यह है कि crontab -l
रिटर्न 1
कोड के साथ रिटर्न होता है , जिससे बाद की कमांड ( ए echo
) निष्पादित नहीं होती है ... इस प्रकार क्रोनजोब नहीं बनाया जाता है। लेकिन जब से उन्हें एक उपप्रकार के रूप में निष्पादित किया जाता है (क्योंकि कोष्ठक के कारण) वे स्क्रिप्ट को रोकते नहीं हैं।
(दिलचस्प है, यदि आप एक ही आदेश को फिर से चलाने के लिए, यह काम करेगा: एक बार आप निष्पादित crontab -
एक बार, crontab -l
अभी भी आउटपुट कुछ भी नहीं है, लेकिन यह एक त्रुटि अब और वापस नहीं करता है (यदि आप नहीं मिलता no crontab for <user>
संदेश अब और) तो बाद में। echo
क्रियान्वित किया जाता है और क्रेस्टब बनाया गया है)
किसी भी स्थिति में, यदि आप साथ चलते हैं set -e
, तो लाइन होनी चाहिए:
(crontab -l 2>/dev/null || true; echo "*/5 * * * * /path/to/job -with args") | crontab -