Cú pháp cho mục crontab có vẻ đúng. Thật vậy, nếu bạn chỉnh sửa crontab của mình bằng cách sử dụng " crontab -e
" (như bạn muốn), bạn sẽ gặp lỗi nếu bạn chỉ định một mục nhập crontab không hợp lệ về mặt cú pháp.
Thứ nhất, có /path_to_my_php_script/info.php
chạy đúng từ dòng lệnh không?
Nếu vậy, nó cũng chạy chính xác như thế này?:
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null)"
Nếu nó hoạt động, nó hoạt động như thế này?
/bin/sh -c "(export PATH=/usr/bin:/bin; /path_to_my_php_script/info.php </dev/null >/dev/null 2>&1)"
Bước (3) tương tự như cách cron sẽ chạy chương trình của bạn (như được ghi trong "man 5 cron".
Vấn đề rất có thể bạn gặp phải là cron PATH đang sử dụng để chạy chương trình của bạn quá hạn chế. Do đó, bạn có thể muốn thêm một cái gì đó như sau vào đầu mục crontab của bạn (bạn sẽ cần thêm vào bất kỳ thư mục nào mà tập lệnh của bạn sẽ cần):
PATH=~/bin:/usr/bin/:/bin
Cũng lưu ý rằng cron sẽ sử dụng theo mặc định /bin/sh
, không phải bash. Nếu bạn cần bash, hãy thêm phần này vào phần bắt đầu của tệp crontab của bạn:
SHELL=/bin/bash
Lưu ý rằng cả hai thay đổi này sẽ ảnh hưởng đến tất cả các mục crontab. Nếu bạn chỉ muốn sửa đổi các giá trị này cho info.php
chương trình của mình , bạn có thể làm một cái gì đó như thế này:
*/2 * * * * /bin/bash -c ". ~/.bashrc; /path_to_my_php_script/info.php"
Điều đáng nói là trên một hệ thống được cấu hình cho "mail" (nói cách khác, một hệ thống có MTA được định cấu hình [sendmail / postfix / etc]), tất cả đầu ra từ các chương trình crontab sẽ tự động được gửi đến bạn qua email. Một hệ thống máy tính để bàn Ubuntu mặc định sẽ không được cấu hình thư cục bộ, nhưng nếu bạn đang làm việc trên máy chủ, bạn chỉ cần nhập "thư" trong một thiết bị đầu cuối để xem tất cả các thư điện tử đó. Điều này cũng áp dụng cho at
lệnh "".