Chạy một công việc định kỳ trên Linux cứ sau sáu giờ


Câu trả lời:


323

Bạn đã quên một *, và bạn có quá nhiều lĩnh vực. Đó là giờ bạn cần quan tâm

0 */6 * * * /path/to/mycommand

Điều này có nghĩa là cứ sau sáu giờ bắt đầu từ 0, tức là vào giờ 0, 6, 12 và 18 mà bạn có thể viết là

0 0,6,12,18 * * * /path/to/mycommand

cảm ơn bạn đã phản hồi, đây là cứ sau 6 giờ bắt đầu mấy giờ? thời điểm cron được tạo ra?
Gandalf StormCrow

cảm ơn, vậy nếu tôi muốn chạy nó bắt đầu từ 15:00 cứ sau 6 giờ thì 15 15,23,05,11 * * * /path/to/mycommandsao?
Gandalf StormCrow

5
Có, mặc dù trường đầu tiên là phút mà bạn đã đặt thành 15, do đó, điều đó có nghĩa là 15: 15,23: 15,05: 15 và 11:15. (không phải cứ sau 6 giờ btw, bạn có thể có ý đó 0 15,21,3,9 * * *)
nos

6

Bạn nên bao gồm một đường dẫn đến lệnh của bạn, vì cron chạy với môi trường cắt giảm rộng rãi. Bạn sẽ không có tất cả các biến môi trường bạn có trong phiên shell tương tác của bạn.

Đó là một ý tưởng tốt để chỉ định một đường dẫn tuyệt đối đến tập lệnh / nhị phân của bạn hoặc xác định PATH trong chính crontab. Để giúp gỡ lỗi mọi vấn đề, tôi cũng sẽ chuyển hướng thiết bị xuất chuẩn / err sang tệp nhật ký.


1
cảm ơn vì đã phản hồi, nhưng nếu tôi khai báo các biến môi trường trong tệp sh của mình như export variable=somethingtôi vẫn sử dụng chúng trong cùng một tập lệnh? và tôi sử dụng lệnh date rất nhiều trong kịch bản
Gandalf StormCrow

@Gandalf - Vâng. Bạn có thể xác định tất cả các biến env của bạn bên trong tập lệnh. Đó là một ý tưởng hay vì nó có nghĩa là tập lệnh của bạn là độc lập và tách biệt với những thứ khác mà bạn có thể muốn chạy trong cron
Brian Agnew

5
0 */6 * * * command

Đây sẽ là cách hoàn hảo để nói 6 giờ mỗi ngày.

Lệnh của bạn đặt trong sáu phút!


2
@ArsenArsen Tôi khá chắc chắn rằng đó là vì nó không thực sự thêm bất cứ điều gì vào câu trả lời được chấp nhận hiện tại, đã viết 4 năm trước khi nó.
Adinia

2

Hãy chú ý theo cú pháp này :

* */6 * * *

Điều này có nghĩa là 60 lần (mỗi phút) cứ sau 6 giờ,

không phải

một lần cứ sau 6 giờ.


0
0 */6 * * *

crontab cứ sau 6 giờ là một lịch trình cron thường được sử dụng.


4
Câu trả lời này thêm gì mà các câu trả lời khác không có? @rkoots đã đề cập đến lệnh chính xác này.
Tạm biệt StackExchange

"Thường dùng" ? Tại sao? Bạn có thể xây dựng?
Peter Mortensen

0

Bạn cần sử dụng *

0 */6 * * * /path/to/mycommand

Ngoài ra, bạn có thể tham khảo https://crontab.guru/ sẽ giúp bạn lên lịch tốt hơn ...


-2

Thử:

0 */6 * * * command

. * phải


1
Dòng cuối cùng ở đây không có nhiều ý nghĩa. Bạn sẽ xem xét mở rộng nó?
halfer

1
có vẻ như câu trả lời chưa đầy đủ
ajayramesh
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.