cron và crontab
cron là daemon Unix cổ điển dùng để chạy các lệnh theo lịch trình. Mỗi người dùng có một crontab, được chỉnh sửa bằng lệnh crontab -e, trong đó mỗi dòng có năm trường thời gian (phút, giờ, ngày trong tháng, tháng, ngày trong tuần) theo sau là lệnh cần thực thi. Các tác vụ hệ thống nằm trong /etc/crontab và /etc/cron.d/.
1Các trường thời gian
'30 2 * * *' nghĩa là 02:30 mỗi ngày; '*/10 * * * *' mỗi mười phút; '0 9 * * 1' 09:00 mỗi thứ Hai. Ngày trong tuần 0 và 7 là Chủ Nhật.
2Các tệp hệ thống
Các tệp trong /etc/cron.d/ và /etc/crontab có thêm một trường là tên người dùng, nằm giữa thời gian và lệnh. Các thư mục như /etc/cron.daily chứa các tập lệnh chạy mỗi ngày một lần.
3Những lỗi thường gặp
cron chạy với môi trường tối giản: hãy sử dụng đường dẫn đầy đủ hoặc thiết lập PATH trong crontab. Đầu ra sẽ được gửi qua email cho chủ sở hữu hoặc bị mất; hãy chuyển hướng nó vào một tệp nhật ký. Ký tự % có ý nghĩa đặc biệt trong các dòng crontab và phải được thoát bằng \%.
4systemd timers
Trên các bản phân phối sử dụng systemd, các đơn vị .timer là một giải pháp thay thế với khả năng ghi nhật ký vào journal, độ trễ ngẫu nhiên và khả năng thực thi lại các tác vụ bị bỏ lỡ (Persistent=true).
Cách thêm một tác vụ hàng ngày
- Mở crontab của bạn:
crontab -e - Thêm một dòng, ví dụ: 30 2 * * *
/usr/local/bin/backup.sh>>/var/log/backup.log2>&1 - Lưu và thoát; cron sẽ tự động cập nhật thay đổi.
- Liệt kê các tác vụ:
crontab -l
Lưu ý
crontab -rxóa toàn bộ crontab mà không cần xác nhận.- Hãy kiểm tra lệnh thủ công với cùng người dùng trước khi lên lịch cho nó.
Bài liên quan
- Các unit của systemd và systemctlUnit của systemd là gì, các loại unit phổ biến, và cách khởi động, dừng, kích hoạt cũng như kiểm tra các dịch vụ bằng systemctl.
- logrotateChức năng của logrotate, cách hoạt động của cấu hình trong /etc/logrotate.conf và /etc/logrotate.d, cũng như cách kiểm tra quy tắc một cách an toàn.
- journalctl và systemd journalCách đọc nhật ký bằng journalctl, kiểm tra dung lượng mà journal sử dụng và thu nhỏ nó một cách an toàn với các tùy chọn --vacuum.
Nguồn
- crontab(5) man7.org
- crontab(5) (Debian) manpages.debian.org
- systemd.timer(5) man7.org
Xem xét lần cuối: