2016-03-17 4 views
1

кронтаба был один пункт работает нормально, но один день после запуска его удалил свой файл в /var/spool/cron/crontabsкронтаба не работает PHP скрипт

# DO NOT EDIT THIS FILE - edit the master and reinstall. 
# (/tmp/crontab.DYqvRY/crontab installed on Thu Mar 17 14:50:32 2016) 
# (Cron version -- $Id: crontab.c,v 2.13 1994/01/17 03:20:37 vixie Exp $) 
# Edit this file to introduce tasks to be run by cron. 
# 
# Each task to run has to be defined through a single line 
# indicating with different fields when the task will be run 
# and what command to run for the task 
# 
# To define the time you can provide concrete values for 
# minute (m), hour (h), day of month (dom), month (mon), 
# and day of week (dow) or use '*' in these fields (for 'any').# 
# Notice that tasks will be started based on the cron's system 
# daemon's notion of time and timezones. 
# 
# Output of the crontab jobs (including errors) is sent through 
# email to the user the crontab file belongs to (unless redirected). 
# 
# For example, you can run a backup of all your user accounts 
# at 5 a.m every week with: 
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/ 
# 
# For more information see the manual pages of crontab(5) and cron(8) 
# 
# m h dom mon dow command 

0 0 1 * * /var/www/html/mail.php 

0 0 16 * * /var/www/html/mail.php 

0 13 2 * * /var/www/html/mailcheck.php 

0 13 17 * * /var/www/html/mailcheck.php 

0 13 2 * * /var/www/html/mailcheckadmin.php 

0 13 17 * * /var/www/html/mailcheckadmin.php 

0 0 1 * * /var/www/html/PaymentPeriod_Create.php 

0 0 16 * * /var/www/html/PaymentPeriod_Create.php 

* * * * * /var/www/html/testsession.php > /var/www/html/log 

Я использую # crontab -e редактировать этот файл, то когда я делаюсь жму^XY ENTER Есть ли какой-нибудь дополнительный шаг, который мне не хватает * * * * * /var/www/html/testsession.php > /var/www/html/log Это должно работать каждую минуту?

+0

Это выполняется каждую минуту: '*/1 * * * * /var/www/html/testsession.php>/var/www/html/log' – Daan

+0

@Daan Я изменил эту строку, но скрипт не работает –

+0

@Daan, почему '*/1 * * * *' а не '* * * * *'? Они эквивалентны? Я всегда использую '* * * * *', чтобы запускать что-то каждую минуту – jDo

ответ

3

Синтаксис * * * * * /var/www/html/testsession.php > /var/www/html/log действителен.

Скорее всего, поскольку это окончательная строка в crontab, она пропускает новую строку. Cron требует новой строки в конце каждой записи; другими словами, ваш crontab должен заканчиваться пустой строкой.

В разделе «Диагностика» в man crontab:

хроны требует, чтобы каждая запись в кронтабе конце символа новой строки. Если в последней записи в crontab отсутствует новая строка, cron рассмотрит crontab (по крайней мере частично) и откажется его установить.

Вы можете заменить > с >>, так что новый контент добавляется в лог-файл, а не перезаписывать его каждую минуту, т.е. * * * * * /var/www/html/testsession.php >> /var/www/html/log. Это все равно будет создавать файл журнала, если он еще не присутствует.

Ваш PHP-файл также потребуется установить бит выполнения и должен начинаться с #!/usr/bin/php (или пути к PHP в вашей системе) в первой строке. В качестве альтернативы вы можете заменить линию cron на * * * * * /usr/bin/php /var/www/html/testsession.php >> /var/www/html/log, чтобы явно использовать интерпретатор PHP для выполнения сценария.

Смежные вопросы