Giới thiệu
Trong lab này, chúng ta sẽ khám phá dịch vụ cron trong Linux, là một trình lên lịch công việc dựa trên thời gian. Chúng ta sẽ học cách xem và chỉnh sửa crontab, lên lịch một cron job đơn giản và cấu hình thông báo và ghi log của cron. Dịch vụ cron là một tính năng tích hợp sẵn của Linux và các lệnh được sử dụng trong lab này được hỗ trợ rộng rãi trên các bản phân phối Linux khác nhau. Đến cuối lab này, bạn sẽ có hiểu biết vững chắc về cách quản lý và lên lịch tác vụ hiệu quả bằng dịch vụ cron.
Tìm hiểu về Dịch vụ cron và Crontab
Trong bước này, chúng ta sẽ khám phá dịch vụ cron trong Linux, là một trình lên lịch công việc dựa trên thời gian. Chúng ta sẽ học cách xem và chỉnh sửa crontab, là tệp cấu hình cho cron jobs.
Đầu tiên, hãy kiểm tra trạng thái của dịch vụ cron:
sudo systemctl status cron
Ví dụ đầu ra:
● cron.service - Regular background program processing daemon
Loaded: loaded (/lib/systemd/system/cron.service; enabled; vendor preset: enabled)
Active: active (running) since Fri 2023-04-28 12:34:56 UTC; 1 day 2h ago
Main PID: 589 (cron)
Tasks: 1 (limit: 4915)
Memory: 1.3M
CPU: 1ms
CGroup: /system.slice/cron.service
└─589 /usr/sbin/cron -f
Đầu ra cho thấy dịch vụ cron đang hoạt động (active) và đang chạy (running).
Tiếp theo, hãy xem crontab hiện tại cho người dùng labex
:
crontab -l
Lệnh này sẽ liệt kê tất cả các cron jobs đã lên lịch cho người dùng hiện tại. Vì đây là một môi trường mới, crontab sẽ trống.
Để chỉnh sửa crontab, hãy chạy:
crontab -e
Lệnh này sẽ mở trình soạn thảo crontab, nơi bạn có thể thêm, sửa đổi hoặc xóa các mục cron job. Tệp crontab sử dụng một định dạng cụ thể để xác định thời điểm một job nên chạy:
* * * * * /path/to/script.sh
Năm dấu hoa thị đại diện cho các giá trị sau:
- Phút (0-59)
- Giờ (0-23)
- Ngày trong tháng (1-31)
- Tháng (1-12)
- Ngày trong tuần (0-6, trong đó 0 là Chủ nhật)
Bạn có thể tùy chỉnh các giá trị này để lên lịch cron jobs của mình theo nhu cầu.
Lên lịch một Cron Job Đơn giản
Trong bước này, chúng ta sẽ tạo một cron job đơn giản chạy một script mỗi phút.
Đầu tiên, hãy tạo một script mẫu mà chúng ta sẽ lên lịch bằng cron:
nano ~/project/cron_job.sh
Thêm nội dung sau vào tệp:
#!/bin/bash
echo "Cron job ran at $(date)" >> ~/project/cron_output.log
Lưu và thoát tệp.
Bây giờ, hãy thêm cron job vào crontab của người dùng labex
:
crontab -e
Thêm dòng sau vào crontab:
* * * * * /home/labex/project/cron_job.sh
Lệnh này sẽ chạy script cron_job.sh
mỗi phút.
Lưu và thoát trình soạn thảo crontab.
Để xác minh rằng cron job đang chạy, hãy đợi một phút và kiểm tra tệp cron_output.log
:
cat ~/project/cron_output.log
Bạn sẽ thấy đầu ra hiển thị ngày và giờ hiện tại khi cron job chạy.
Cấu hình Thông báo và Ghi Log Cron
Trong bước cuối cùng này, chúng ta sẽ cấu hình cron để gửi thông báo email cho đầu ra của cron job và bật ghi log chi tiết.
Đầu tiên, hãy cài đặt gói cần thiết để bật thông báo email:
sudo apt-get update
sudo apt-get install -y mailutils
Tiếp theo, chúng ta cần cấu hình cài đặt email cho người dùng labex
. Mở trình soạn thảo crontab:
crontab -e
Thêm dòng sau vào đầu tệp:
[email protected]
Lệnh này sẽ gửi đầu ra của bất kỳ cron jobs nào đến địa chỉ email được chỉ định.
Bây giờ, hãy bật ghi log chi tiết cho dịch vụ cron. Chỉnh sửa tệp cấu hình cron:
sudo nano /etc/crontab
Tìm dòng sau:
#EXTRA_OPTS=""
Bỏ comment và thay đổi nó thành:
EXTRA_OPTS="-l 7"
Lệnh này sẽ đặt mức log thành 7, là mức chi tiết nhất. Lưu và thoát tệp.
Khởi động lại dịch vụ cron để áp dụng các thay đổi:
sudo systemctl restart cron
Bây giờ, bất kỳ đầu ra hoặc lỗi nào của cron job sẽ được ghi vào tệp /var/log/cron.log
, bạn có thể xem bằng lệnh sau:
sudo tail -n 20 /var/log/cron.log
Tóm tắt
Trong lab này, bạn đã tìm hiểu về dịch vụ cron trong Linux, là một trình lên lịch công việc dựa trên thời gian. Bạn đã khám phá cách xem và chỉnh sửa crontab, tệp cấu hình cho cron jobs, và cách lên lịch một cron job đơn giản chạy một script mỗi phút. Bạn cũng đã tìm hiểu về định dạng của tệp crontab và các trường khác nhau xác định thời điểm một job nên chạy. Cuối cùng, bạn đã cấu hình thông báo và ghi log của cron để theo dõi việc thực thi các tác vụ đã lên lịch của mình.