Sử dụng crontab để thực thi tập lệnh mỗi phút và cứ sau 24 giờ [đóng]


316

Tôi cần một cú pháp crontab để thực thi một tập lệnh PHP cụ thể /var/www/html/a.phpmỗi phút. Việc thực hiện vào mỗi phút phải bắt đầu lúc 00:00. Nhiệm vụ khác phải thực thi một tập lệnh lúc 00:00 /var/www/html/reset.php(cứ sau 24 giờ một lần).

Câu trả lời:


586

mỗi phút:

* * * * * /path/to/php /var/www/html/a.php

cứ sau 24 giờ (mỗi nửa đêm):

0 0 * * * /path/to/php /var/www/html/reset.php

Xem tài liệu tham khảo này để biết cách hoạt động của crontab: http://adminschoice.com/crontab-quick-reference và công cụ tiện dụng này để xây dựng cron jobx: http://www.htmlbasix.com/crontab.shtml


3
Tháng 1 thân mến! Câu trả lời chính xác. Làm thế nào về việc chạy một cron cứ sau 30 giây? Có phải như thế này? * * * * * / 30 / đường dẫn / đến / php /var/www/html/a.php?
flaab

26
Thật không may, bạn không thể chạy các công việc định kỳ thường xuyên hơn mỗi phút. Bạn sẽ phải sử dụng một cái gì đó khác cho điều đó.
Jan Hančič

9
Jan Hančič, bạn có thể làm điều này. Bạn chỉ cần sử dụng một mẹo đơn giản được mô tả ở đây: stackoverflow.com/a/1034304/1580615
Ruben

Có phải là thông lệ để thực thi tập lệnh .php mỗi phút với cron không? Nó có thể làm giảm năng suất máy chủ? Có tác dụng phụ xấu nào khác không?
Andrew

@flaab cứ sau 30 giây bạn có thể thử một cái gì đó như thế này: - * * * * * curl --silent URL> / dev / null 2> & 1 * * * * * ngủ 30; curl --silent URL> / dev / null 2> & 1
Shashank Shah

375

Đây là định dạng của / etc / crontab:

# .---------------- minute (0 - 59)
# |  .------------- hour (0 - 23)
# |  |  .---------- day of month (1 - 31)
# |  |  |  .------- month (1 - 12) OR jan,feb,mar,apr ...
# |  |  |  |  .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# |  |  |  |  |
# *  *  *  *  * user-name  command to be executed

Tôi khuyên bạn nên sao chép và dán nó vào đầu tập tin crontab của bạn để bạn luôn có tài liệu tham khảo tiện dụng. Các hệ thống RedHat được thiết lập theo cách đó theo mặc định.

Để chạy một cái gì đó mỗi phút:

* * * * * username /var/www/html/a.php

Để chạy một cái gì đó vào nửa đêm mỗi ngày:

0 0 * * * username /var/www/html/reset.php

Bạn có thể bao gồm / usr / bin / php trong lệnh để chạy hoặc bạn có thể làm cho các tập lệnh php trực tiếp thực thi:

chmod +x file.php

Bắt đầu tệp php của bạn với một shebang để trình bao của bạn biết nên sử dụng trình thông dịch nào:

#!/usr/bin/php
<?php
// your code here

42
Đó là định dạng của /etc/crontab, đó là một tệp crontab hệ thống . Một crontab người dùng có định dạng khác, không bao gồm trường tên người dùng, vì nó chạy như người dùng đã gửi nó. Nếu bạn muốn chạy một công việc định kỳ với tư cách là người dùng không phải root, bạn nên sử dụng crontablệnh để gửi nó (và không phải lo lắng về nơi crontab được lưu trữ). Đừng lộn xộn /etc/crontabtrừ khi bạn thực sự cần.
Keith Thompson

umm ... không, vẫn không hoạt động
Madeo
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.