Назад | Перейти на главную страницу

Команда crontab сообщает, что в разрешении отказано

Я работаю на сервере 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 для каждого пользователя и выполнит что-нибудь, если придет время это сделать.