यहाँ एक और लाइनर तरीका है, जो डुप्लिकेट से बचा जाता है
(crontab -l 2>/dev/null | fgrep -v "*/1 * * * * your_command"; echo "*/1 * * * * your_command") | crontab -
और यहां जॉनज़ का उत्तर देने और no crontab for user
संदेश से बचने का एक तरीका है , या यदि आपको एक set -eu
प्रकार के वातावरण में काम करने की आवश्यकता है और इसमें कुछ भी विफलता नहीं हो सकती है (जिस स्थिति में 2>/dev/null
भाग वैकल्पिक है):
( (crontab -l 2>/dev/null || echo "") ; echo "0 * * * * your_command") | sort -u - | crontab -
या यदि आप चीजों को विभाजित करना चाहते हैं ताकि वे अधिक पठनीय हों:
new_job="0 * * * * your_command"
preceding_cron_jobs=$(crontab -l || echo "")
(echo "$preceding_cron_jobs" ; echo "$new_job") | sort - | uniq - | crontab -
या वैकल्पिक रूप से your_command के लिए किसी भी संदर्भ को हटा दें (उदा: यदि शेड्यूल बदल गया है, तो आप केवल यह चाहते हैं कि यह कभी भी क्रोन किया जाए)। इस मामले में हमें अब कोई ज़रूरत नहीं है uniq
(अतिरिक्त बोनस, सम्मिलन आदेश भी संरक्षित है):
new_job="0 * * * * your_command"
preceding_cron_jobs=$(crontab -l || echo "")
preceding_cron_jobs=$(echo "$preceding_cron_jobs" | grep -v your_command )
(echo "$preceding_cron_jobs" ; echo "$new_job") | crontab -