Я работаю на сервере Cent-OS. У меня есть два скрипта для запуска cron. Сценарии находятся на PHP, и у меня есть модуль Apache PHP, установленный на Cent-OS. Один сценарий должен запускаться ежедневно в 18:00, а другой - каждый четверг. Мои команды cron:
00 18 * * * lynx -dump http://domain/folder1/script1.php //every Day
00 02 * * 5 lynx -dump http://domain/folder1/script2.php //every Thursday at 2am
я написал обе строки в моем /etc/crontab
файл и попытался запустить его из
[root@domain ~]# /etc/crontab crontab
-bash: /etc/crontab: Permission denied
Искал в Интернете, но решений не было. Любые идеи, что мне не хватает?
crontab
не является исполняемым файлом. Он используется cron, чтобы узнать, когда следует запланировать задания.
/etc/crontab
не исполняемый (отсюда и ошибка)
Ваш файл crontab недействителен (комментарии в стиле C или Java не допускаются):
со страницы руководства:
Строки, в которых первым непробельным символом является знак решетки (#), являются комментариями и игнорируются. Обратите внимание, что комментарии не допускаются в одной строке с командами cron, так как они будут считаться частью команды. Точно так же комментарии не допускаются в той же строке, что и настройки переменных среды.
Вы должны написать что-то вроде:
# every day
0 18 * * * lynx -dump http://domain/folder1/script1.php > /tmp/somefilename
Заметь lynx -dump
просто распечатает страницу на стандартный вывод. Если вы хотите где-то его сохранить, вам нужно перенаправить вывод в файл (см. Пример)
Чтобы узнать, работает ли он, подождите до 00:18 или используйте более близкое время в будущем для целей тестирования.
Любые идеи, что мне не хватает?
Немного. Вы зашли не в ту дверь, в неправильном городе и поговорили не с тем человеком в неподходящий день. В остальном все прошло, как ожидалось. ;-)
1) Вы не должны комментировать свои строки crontab, добавляя //
в конце строки. Вместо этого сделайте это так:
# every day
00 18 * * * lynx -dump http://domain/folder1/script1.php
# every Thursday at 2am
00 02 * * 5 lynx -dump http://domain/folder1/script2.php //every Thursday at 2am
2) Вы запланировали запуск задач каждый день в 18:00 и каждый четверг в 2 часа ночи. Если вы попытаетесь запустить crontab за пределами этих временных окон, cron только проверит, есть ли у него что-то делать, а если нет, он просто завершит работу.
3) Вы проверяли с /var/log/cron
если cron пытался запустить ваши скрипты в запланированное время?
4) Cron разборчив в путях. Попробуйте указать полный путь к lynx
, скорее всего в вашем случае /usr/bin/lynx
.
5) Как упоминалось другими, /etc/crontab
это просто текстовый файл, а не исполняемый файл. Демон Cron проверит содержимое /etc/crontab
и файлы cron для каждого пользователя и выполнит что-нибудь, если придет время это сделать.