Ngoài các câu trả lời khác, đặc biệt là liên kết được đăng bởi @souldding: Nếu bạn lên lịch một lệnh chạy dài với khoảng thời gian quá ngắn, cron sẽ vui vẻ thực hiện lệnh thứ hai trước khi lệnh đầu tiên hoàn thành (trừ khi có một loại mutex nào đó được thực hiện trong lệnh) .
Điều đó thường làm chậm lệnh gốc hơn nữa, dẫn đến một trường hợp khác được chạy trước khi các lệnh trước hoàn thành, v.v. Hoặc nó có thể không mong muốn vì những lý do khác.
Cách chung để ngăn chặn là điều kiện chạy lệnh với một người bảo vệ để đảm bảo rằng lệnh trước đó không chạy. Ví dụ:
10 * * * * pgrep my_slow_command >/dev/null || /usr/local/bin/my_slow_command
Đảm bảo rằng pgrep khớp với tên của lệnh khi nó chạy, ví dụ tập lệnh python có python là tên của tệp thực thi, có lẽ không đủ cụ thể và bạn cũng sẽ phải khớp với tên tập lệnh của python.
10 * * * * pgrep -f my_script.py || /usr/local/bin/my_script.py
(pgrep không có tùy chọn '-f' khớp với tên tập lệnh bash)
Nếu bạn không thể sử dụng pgrep vì một số lý do:
10 * * * * ps ax | grep [m]y_command || /usr/local/bin/my_command
Dấu ngoặc được sử dụng để tránh khớp lệnh grep.