Đây là một cách khác, tránh trùng lặp
(crontab -l 2>/dev/null | fgrep -v "*/1 * * * * your_command"; echo "*/1 * * * * your_command") | crontab -
Và đây là một cách để thực hiện câu trả lời của JohnZ và tránh no crontab for user
tin nhắn, hoặc nếu bạn cần phải hoạt động trong một set -eu
môi trường loại và không thể có bất cứ điều gì trả lại thất bại (trong trường hợp đó là 2>/dev/null
phần tùy chọn):
( (crontab -l 2>/dev/null || echo "") ; echo "0 * * * * your_command") | sort -u - | crontab -
Hoặc nếu bạn muốn chia nhỏ mọi thứ để chúng dễ đọc hơn:
new_job="0 * * * * your_command"
preceding_cron_jobs=$(crontab -l || echo "")
(echo "$preceding_cron_jobs" ; echo "$new_job") | sort - | uniq - | crontab -
Hoặc tùy ý xóa mọi tham chiếu đến your_command (ví dụ: nếu lịch biểu đã thay đổi, bạn chỉ muốn nó được ghi lại một lần). Trong trường hợp này, chúng tôi không còn cần uniq
(thêm tiền thưởng, thứ tự chèn cũng được giữ nguyên):
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 -