Tôi sẽ khuyên bạn nên sử dụng lệnh run-one - đơn giản hơn nhiều so với xử lý các khóa. Từ các tài liệu:
run-one là một tập lệnh bao bọc chạy không quá một phiên bản duy nhất của một số lệnh với một bộ đối số duy nhất. Điều này thường hữu ích với cronjobs, khi bạn muốn không có nhiều hơn một bản sao chạy cùng một lúc.
run-this-one giống hệt như run-one, ngoại trừ việc nó sẽ sử dụng pgrep và kill để tìm và giết bất kỳ tiến trình đang chạy nào do người dùng sở hữu và khớp với các lệnh và đối số đích. Lưu ý rằng run-this-one này sẽ chặn trong khi cố gắng giết các quy trình khớp, cho đến khi tất cả các quy trình khớp đều chết.
run-one-liên tục hoạt động chính xác như run-one ngoại trừ việc nó phản hồi lại "LỰA CHỌN [ARGS]" bất cứ khi nào thoát ra (không hoặc không bằng 0).
keep-one-running là một bí danh cho run-one-liên tục.
run-one-Until-thành công hoạt động chính xác như run-one-liên tục ngoại trừ việc nó phản hồi lại "LỰA CHỌN [ARGS]" cho đến khi thoát ra thành công (nghĩa là thoát không).
run-one-Until-fail hoạt động chính xác như run-one-liên tục ngoại trừ việc nó phản hồi lại "LỰA CHỌN [ARGS]" cho đến khi thoát ra với thất bại (nghĩa là thoát ra khác không).