Kiểm tra xem Crontab có hoạt động hay không

Scheduling jobs là một công việc phổ biến khi quản lý hệ thống. Có thể là bạn đang lên lịch sao lưu tự động hoặc gửi email hoặc 1 tác vụ nào đó sẽ tự chạy mỗi X giờ hoặc Y ngày thì cần đặt lệnh crontab để chúng tự động chạy lặp lại hàng ngày hoặc hàng giờ …

Trong hướng dẫn này, cùng tìm hiểu các cách khác nhau để xác minh xem crontab của bạn có đang hoạt động hay không và cách khởi động nó nếu nó không chạy.

Cách xác minh xem Crontab có đang hoạt động không

Nếu crontab của bạn không hoạt động, bạn vẫn có thể lên lịch cho các công việc. Nhưng vấn đề là các công việc sẽ không thực thi. Để tránh trường hợp như vậy, bạn phải xác minh xem crontab có hoạt động trước hoặc sau khi lên lịch công việc hay không.

1. Cron không chạy

Quyền không hợp lệ có thể khiến các công việc định kỳ của bạn không thành công

1. Jobs được thêm dưới dạng tệp trong một /etc/cron.*/ phải được sở hữu bởi root. Các tệp do người dùng khác sở hữu sẽ bị bỏ qua và bạn có thể thấy một thông báo tương tự như WRONG FILE OWNER trong nhật ký hệ thống.

2. Tệp phải có quyền thực thi thì mới chạy được. Ví dụ để file backup-all-db.sh có thể chạy được bạn phải thay đổi và cấp quyền được thực thi file trên, lệnh bạn có thể sử dụng là chmod +x backup-all-db.sh

Khi thực thi lệnh này, file chmod +x backup-all-db.sh sẽ được phép thực thi như một chương trình hoặc tập lệnh (script).

3. Bạn có set đúng đường dẫn hoặc file sẽ chạy theo lịch trình hay chưa?

Ví dụ mình chạy bashscript backup-all-db.sh mỗi 24h 1 lần sẽ add code vào crontab bằng lênh crontab -e và thêm code phía dưới vào.

0 */24 * * * /home/backup-all-db.sh > /dev/null 2>&1

2. Kiểm tra trạng thái Cron

crontab là một dịch vụ cron; nếu bạn chưa khởi động cron vẫn không hoạt động. Sử dụng lệnh sau để kiểm tra trạng thái của nó:

sudo service cron status

Như hình trên service cron đang chạy ok nên bạn không phải lo lắng, nếu chúng bị inactive thì bạn hãy chạy lệnh service cron start để khởi chạy nhé.

3. Kiểm tra các tiến trình đang chạy

Nếu crontab đang hoạt động, dịch vụ cron sẽ là một trong những quy trình hiện đang chạy trên hệ thống của bạn. Tại đây, bạn có thể sử dụng lệnh ps để hiển thị tất cả các tiến trình đang chạy. Sau đó, kết hợp nó với lệnh grep để lọc “cron” đầu ra các tiến trình đang chạy.

Đây là lệnh để sử dụng: ps aux | grep cron

Nếu crontab đang hoạt động, lệnh sẽ trả về PID của dịch vụ cron dưới những người dùng khác nhau.

Để check xem crontab có những task nào đang được lên lịch bạn có thể sử dụng lệnh crontab -l

Như ảnh dưới bạn có thể thấy 1 task backup-all-db.sh sẽ tự động chạy mỗi 24h, cụ thể đây là script tự động sao lưu toàn bộ database trên VPS mỗi 24h.

Kiểm tra lịch sử cron nào đã chạy trước đó

Để xem danh sách các lịch trình đã được chạy trước đó bạn có thể xem syslog với lệnh dưới đây.

cat /var/log/syslog | grep -w 'cron'

Hoặc xem lịch sử của 1 file đã được chạy trước đó hay không với lệnh

grep backup-all-db.sh /var/log/syslog

daotiendung

Tiến Dũng Đào chuyên quản lý, vận hành các dịch vụ website. Anh có nhiều năm kinh nghiệm về VPS, Hosting, technical SEO, CMS. Đặc biệt yêu thích WordPress với hơn 5 năm phát triển theme và plugin. Sở thích của anh là đọc, viết blog, đi du lịch, tập võ và chia sẻ các kiến thức cho mọi người.

Bài viết liên quan