É possível usar o PHP para criar, editar e excluir jobs do crontab?
Eu sei como listar os jobs crontab atuais do usuário Apache:
$output = shell_exec('crontab -l');
echo $output;
Mas como adicionar um cron job com PHP? 'crontab -e' apenas abriria um editor de texto e você terá que editar manualmente as entradas antes de salvar o arquivo.
E como deletar um cron job com PHP? Novamente, você terá que fazer isso manualmente com 'crontab -e'.
Com uma string de trabalho como esta:
$job = '0 */2 * * * /usr/bin/php5 /home/user1/work.php';
Como faço para adicioná-lo à lista de jobs crontab com PHP?
Respostas:
uso do comando crontab
Assim,
O acima pode ser usado para criar e editar / anexar, desde que o usuário tenha a permissão de gravação de arquivo adequada.
Para excluir trabalhos:
Além disso, observe que o apache está sendo executado como um usuário específico e geralmente não é root, o que significa que os cron jobs só podem ser alterados para o usuário apache, a menos que seja concedido
crontab -u
privilégio ao usuário apache.fonte
shell_exec('crontab -l')
retornará apenas a última linha. Eu useiexec('crontab -l', $output)
. Então implode o array $ output em uma string (com \ n como cola).system()
,passthru()
,shell_exec()
eexec()
, tente usar o painel de controle que vem com a hospedagem, tais como cPanel ou Plesk.Recentemente, preparamos um miniprojeto (PHP> = 5.3) para gerenciar os arquivos cron para tarefas privadas e individuais. Esta ferramenta conecta e gerencia os arquivos cron para que você possa usá-los, por exemplo, por projeto. Testes de unidade disponíveis :-)
Amostra da linha de comando:
Amostra da API:
Gerenciando tarefas individuais da API:
github: php-crontab-manager
fonte
Verifique um cronjob
Anexar um cronjob
Remova um crontab
Exemplo
fonte
crontab -l
\ n'. $ command. '" | crontab -', $ output); está correto. Não estou recebendo crontab para www-data "-": 0: erros de minuto incorreto no arquivo crontab, não é possível instalar.Isso deve servir
fonte
Eu tentei a solução abaixo
}
créditos para: Crontab Class para adicionar, editar e remover Cron Jobs
fonte
Você pode tentar substituir a
EDITOR
variável de ambiente com algo como oed
qual pode receber uma sequência de comandos de edição sobre a entrada padrão.fonte
Depende de onde você armazena seu crontab:
fonte
Você pode colocar seu arquivo em /etc/cron.d/ no formato cron. Adicione algum prefixo exclusivo ao nome do arquivo Para listar tarefas cron específicas de script, simplesmente trabalhe com uma lista de arquivos com um prefixo exclusivo. Exclua o arquivo quando quiser desativar o trabalho.
fonte
Legal ...
Tente isso para remover um cron job específico (testado).
fonte
exit;
depoisheader('Location: ...');
. Além disso, este formulário é realmente muito perigoso, pois pode adicionar cron job para "destruir" o servidor.A maneira mais fácil é usar o comando shell_exec para executar um script bash, passando os valores como parâmetros. A partir daí, você pode manipular crontabs como faria em qualquer outro script não interativo e também garantir que tenha as permissões corretas usando sudo etc.
Veja isto, Crontab sem crontab -e , para mais informações.
fonte
Em vez do crontab, você também pode usar a fila de tarefas do Google App Engine . Possui uma cota gratuita generosa, é rápido, escalonável e modificável.
fonte
É simples, você pode fazer o curl para fazer isso, certifique-se de que o curl está instalado no servidor:
para acionar a cada minuto: * * * * * curl --request POST ' https://glassdoor.com/admin/sendBdayNotification '
minuto hora dia mês semana
Digamos que você queira enviar esta notificação 14h15 todos os dias. Você pode alterar POST / GET com base em sua API:
15 14 * * * curl --request POST 'url de sua API'
fonte