Colocar arquivos no cron.d é suficiente. No entanto, sua última entrada deve ser:
*/10 * * * * php /var/www/site1/helper post:update
Caso contrário, será executado uma vez por hora, no 10º minuto.
Eu coloquei dois arquivos no diretório /etc/cron.d/
:
O primeiro faz um novo post todos os dias às 00:00:
0 0 * * * php /var/www/site1/helper post:make
O segundo atualiza o post mais recente a cada 10 minutos
10 * * * * php /var/www/site1/helper post:update
Preciso fazer outra coisa para que esse trabalho seja executado com base no horário (por exemplo, a cada 10 minutos) ou eu tenho que fazer crontab job1
e crontab job2
?
EDITAR : também instalei o cronie.
Além disso, adicione
> /dev/null 2>&1
no final (após o comando) para que o cron não envie spam com as saídas:)
Os crontabs em /etc/cron.d/
exigem um nome de usuário no 6º campo, assim como /etc/crontab
. Crontabs baseados no usuário em /var/spool/crontabs/
e via crontab -e
não possuem um campo de nome de usuário.
A resposta de Halfgaar sobre o tempo do que corre a cada 10 minutos também está correta.
Atualmente, essas tarefas agendadas executam /var/www/site1/helper
como o usuário php
em vez de executar /usr/bin/php
e passar os argumentos /var/www/site1/helper post:make
. Esse trabalho funcionará se você tiver um usuário php
, o arquivo for executável e possuir um shebang apropriado. (ou seja, #!/usr/bin/php
como a primeira linha). Caso contrário, ele registrará um erro em /var/log/cron/log
.
O exemplo abaixo os executa como o usuário httpd
e tem um caminho explícito para o executável PHP. Você deve escolher um usuário apropriado.
0 0 * * * httpd /usr/bin/php /var/www/site1/helper post:make
*/10 * * * * httpd /usr/bin/php /var/www/site1/helper post:update
Isto:
10 * * * * php /var/www/site1/helper post:update
Não será executado a cada 10 minutos, ele será executado no minuto 10 de cada hora (00:10, 01:10, ...).
Isso será executado a cada 10 minutos:
*/10 * * * * php /var/www/site1/helper post:update
Tags cron linux centos scheduled-task