2009-05-28 43 views
9

Nếu tôi có lệnh cron chạy 10 phút một lần và vì lý do nào đó trong một thời gian cần 12 phút để chạy lệnh, cron sẽ bắt đầu một phiên bản mã khác trong khi mã trước đó vẫn đang chạy? nếu vậy làm thế nào bạn có thể ngăn chặn điều này trên Linux?Chạy một công việc Cron

Trả lời

10

Có, nó sẽ.

Bạn nên tạo chương trình của mình tạo tệp .pid (ví dụ:/var/run /). Khi nó bắt đầu, nó nên kiểm tra xem tập tin đó đã tồn tại chưa và nếu có thì thoát.

Bạn đang chạy chương trình/tập lệnh nào?

+0

Tôi đang chạy một kịch bản php để gửi thư. –

+0

Một cái gì đó như thế này sẽ làm các trick sau đó http://www.dreamincode.net/code/snippet2407.htm – MartinodF

+0

Bạn có thể cho chúng tôi một snipet về cách làm điều này? – oneofakind

3

Có. Cron sẽ kích hoạt một tiến trình tại khoảng thời gian đã lên lịch, bất kể một tiến trình nào chưa hoàn thành.

Bạn có thể touch một tệp, như được nêu trong câu trả lời khác và kiểm tra sự tồn tại trước khi tham gia quy trình của bạn.

Hoặc bạn có thể kiểm tra danh sách quá trình để xem nếu một "dụ" vẫn đang chạy:

ps -ef | grep *your_script_name* | grep -v grep | wc -l 
Các vấn đề liên quan