นี่เป็นอีกวิธีหนึ่งที่หลีกเลี่ยงการทำซ้ำ
(crontab -l 2>/dev/null | fgrep -v "*/1 * * * * your_command"; echo "*/1 * * * * your_command") | crontab -
ต่อไปนี้เป็นวิธีตอบและหลีกเลี่ยงno crontab for user
ข้อความของ JohnZ หรือหากคุณจำเป็นต้องใช้งานใน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 -