Tài liệu
Bắt đầu nhanh + mô tả chức năng của từng phần, từng thiết bị (đang tiếp tục cập nhật)
Tác vụ định kỳ (Cron)
Bài viết này giới thiệu cách quản lý tác vụ định kỳ trên máy chủ đích.
Trước tiên tìm hiểu: Cron là gì
Cron là công cụ「lập lịch định kỳ」có sẵn của Linux. Bạn có thể để nó「tự động sao lưu cơ sở dữ liệu lúc 3 giờ sáng mỗi ngày」「dọn log mỗi giờ」「khởi động lại một dịch vụ vào mỗi thứ Hai」— đến giờ là tự động chạy, không cần người canh.
Giới thiệu chức năng
Xem, thêm, xóa tác vụ định kỳ Cron trên máy chủ đích.
Tình huống áp dụng
- Sao lưu cơ sở dữ liệu định kỳ, dọn log
- Chạy script giám sát định kỳ
- Khởi động lại dịch vụ định kỳ, cập nhật chứng chỉ
Cách sử dụng
Vào「Bảng quản lý hệ thống → Tác vụ định kỳ」của một máy chủ, là thấy được tất cả tác vụ Cron hiện có của máy chủ đó.
Thêm tác vụ
Điền biểu thức Cron và lệnh cần chạy:
| Trường | Mô tả |
|---|---|
| Biểu thức thời gian | Dạng 5 đoạn, như 0 3 * * * (3 giờ sáng mỗi ngày) |
| Lệnh | Lệnh shell cần chạy |
Định dạng biểu thức Cron (phút giờ ngày tháng thứ):
* * * * * lệnh │ │ │ │ │ │ │ │ │ └── thứ (0-7, 0/7=Chủ nhật) │ │ │ └──── tháng (1-12) │ │ └────── ngày (1-31) │ └──────── giờ (0-23) └────────── phút (0-59)
Ví dụ thường dùng:
| Biểu thức | Ý nghĩa |
|---|---|
*/5 * * * * | mỗi 5 phút |
0 * * * * | mỗi giờ |
0 3 * * * | 3 giờ sáng mỗi ngày |
0 3 * * 1 | 3 giờ sáng mỗi thứ Hai |
0 3 1 * * | 3 giờ sáng ngày 1 mỗi tháng |
0 3 * * 0 | 3 giờ sáng mỗi Chủ nhật |
30 2 * * * | 2 giờ 30 sáng mỗi ngày |
Ví dụ lệnh thực dụng:
# Sao lưu cơ sở dữ liệu lúc 3 giờ sáng mỗi ngày (ví dụ) 0 3 * * * docker exec sshe-mysql mariadb-dump -uroot -p'<mật-khẩu>' tên-cơ-sở-dữ-liệu > /opt/backup/db-$(date +\%F).sql # Dọn tệp tạm mỗi 6 giờ 0 */6 * * * find /tmp -type f -mtime +7 -delete # Khởi động lại một dịch vụ lúc 4 giờ sáng mỗi thứ Hai 0 4 * * 1 systemctl restart my-app
Lưu ý
1. Tác vụ Cron chạy dưới danh nghĩa người dùng hiện tại của máy chủ đích, hãy đảm bảo người dùng đó có quyền chạy lệnh.
2. Nên ghi đường dẫn tuyệt đối trong lệnh (môi trường Cron có ít biến, đường dẫn tương đối có thể không tìm thấy chương trình).
3. Dùng % trong lệnh phải escape thành \% (Cron coi % là ký tự đặc biệt).
4. Xóa tác vụ Cron có hiệu lực ngay lập tức.
5. Sửa Cron cấp hệ thống (/etc/crontab) có thể cần thao tác ngoài bảng điều khiển; bảng điều khiển mặc định quản lý crontab -l của người dùng hiện tại.