Vấn đề không thực sự xảy ra với cron - đó là với công việc của bạn.
Bạn sẽ cần phải có công việc của bạn tương tác với một số mô tả. Cách dễ nhất để làm điều này là cố gắng tạo một thư mục và nếu tiếp tục thành công, nếu không thoát. Khi công việc của bạn đã kết thúc và thoát, nó sẽ xóa thư mục sẵn sàng cho lần chạy tiếp theo. Đây là một kịch bản để minh họa.
#!/bin/bash
function cleanup {
echo "Cleanup"
rmdir /tmp/myjob.lck
}
mkdir /tmp/myjob.lck || exit 1
trap cleanup EXIT
echo 'Job Running'
sleep 60
exit 0
Chạy cái này trong một thiết bị đầu cuối sau đó trước khi hết 60 giây, nó chạy trong thiết bị đầu cuối khác, nó sẽ thoát với trạng thái 1. Khi quá trình đầu tiên thoát ra, bạn có thể chạy nó từ thiết bị đầu cuối thứ hai ...
BIÊN TẬP:
Khi tôi vừa tìm hiểu về đàn, tôi nghĩ tôi sẽ cập nhật câu trả lời này.
đàn (1) có thể dễ sử dụng hơn. Trong trường hợp flock -n
này có vẻ thích hợp, vd
* * * * * /usr/bin/flock -n /tmp/myAppLock.lck /path/to/your/job
Sẽ điều hành công việc của bạn mỗi phút nhưng sẽ thất bại nếu đàn không thể có được khóa trên tệp.