İşte yinelemeleri önleyen tek satırlık başka bir yol
(crontab -l 2>/dev/null | fgrep -v "*/1 * * * * your_command"; echo "*/1 * * * * your_command") | crontab -
Ve burada JohnZ'un cevabını yapmanın ve mesajdan kaçınmanın bir yolu var veya bir yazım ortamında çalışmanız no crontab for user
gerekiyorsa set -eu
ve herhangi bir şeyin hata vermesini sağlayamıyorsanız (bu durumda 2>/dev/null
parça isteğe bağlıdır):
( (crontab -l 2>/dev/null || echo "") ; echo "0 * * * * your_command") | sort -u - | crontab -
Veya her şeyi daha okunaklı olacak şekilde bölmek istiyorsanız:
new_job="0 * * * * your_command"
preceding_cron_jobs=$(crontab -l || echo "")
(echo "$preceding_cron_jobs" ; echo "$new_job") | sort - | uniq - | crontab -
Veya isteğe bağlı olarak your_command ile ilgili tüm referansları kaldırın (örn: program değiştiyse, yalnızca bir kez cron'lanmasını istersiniz). Bu durumda artık ihtiyacımız yok uniq
(ek bonus, kampanya siparişi de korunur):
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 -