Crontab

De Wiki Hostnet
Ir para: navegação, pesquisa
Recurso disponível apenas para os planos de hospedagem Private Cloud.


Crontab1.png

O cron é um programa de agendamento de tarefas. Com ele você pode programar para ser executado qualquer coisa numa certa periodicidade ou até mesmo em um exato dia, numa exata hora. Um uso bem comum do cron é o agendamento de tarefas administrativas de manutenção do seu sistema, como por exemplo, procura por links simbólicos quebrados, análise de segurança do sistema, backup, entre outros. Estas tarefas são programadas para todo dia, toda semana ou todo mês, serem automaticamente executadas através do crontab e um script shell comum. A configuração do cron geralmente é chamada de crontab.


Disponível em quais planos?

Nos planos Start é possível utilizar um Cron externo como https://www.easycron.com/ . Nessa opção é obrigatório o uso da URL direta do arquivo (ex: www.example.com/cron.php)

Nos planos Private é possível utilizar o Cron da Hostnet.

Como acessar o Cron da Hostnet?

Dentro do Painel de Controle acesse o menu: Site >> Crontab


Cron6.png


Como criar?

Na página do Crontab, clique no botão Novo Comando:


Cron7.png


Entendendo o agendamento:

Horas = de 0 a 23)
Minutos = de 0 a 59
Dias = de 1 a 31
Meses = de 1 a 12
Dias da semana = de 0 a 6
Comando = caminho do arquivo a ser executado
E-mail = e-mail para receber a confirmação de agendamento


Observações:

  • Em Dias da semana, 0 refere-se a domingo; e 6, ao sábado.


  • Pode-se usar o * (asterisco) quando não se importar com o campo em questão.


  • O caractere / ( barra ) define o valor de intervalo entre os números especificados na hora e/ou na data.
    Ex: 0-23/2 no campo hora corresponde às seguintes horas: 0, 2, 4, 6, 8, 10, 12, 14, 16, 18, 20 e 22.


  • Pode-se utilizar intervalos nesses campos. O caracter para intervalo é o - (hifen).
    Ex: Dias 3-10 significa entre os dias 03 e 10.


  • Pode-se utilizar lista de valores nesses campos. O caracter para a lista é a , (vírgula).
    Ex: Dias 3,10 significa apenas para os dias 03 e 10


  • A criação ou remoção de um agendamento leva 30 minutos para entrar em funcionamento.




Removendo Agendamento

Na página do crontab, basta selecionar o que deseja excluir e clicar no botão desativar.


Exemplos de agendamentos:

Todo dia de hora em hora:

Minutos = 00
Horas = *
Dias = *
Meses = *
Dias da semana = *

Nas seguintes horas: 10, 12, 16, 18, 22 aos 15 minutos da hora

Minutos = 15
Horas = 10,12,16,18,22
Dias = *
Meses = *
Dias da semana = *

Nos primeiros cinco dias do mês às 19:25

Minutos = 25
Horas = 19
Dias = 01-05
Meses = *
Dias da semana = *

De segunda a sexta ao meio-dia e a meia-noite

Minutos = 00
Horas = 00,12
Dias = *
Meses = *
Dias da semana = 1-5


Erros frequentes

Caminho absoluto

Um script que roda pelo cron funciona de forma diferente de quando ele é executado pelo Apache. Quando acessamos um script PHP pelo navegador, o diretório corrente da execução será aquele onde se localiza o script, e portanto um require usando caminhos relativos, como por exemplo ../_funcoes/funcoes.php funciona sem problemas. Já quando um script é executado do cron, isso não ocorre: é preciso usar sempre caminhos absolutos.

No código abaixo citamos um exemplo de erro comum, a linha VERMELHA está errada e a linha AZUL é a correção.

$dirRoot = "../";
$dirRoot = __DIR__ . "/../";

$backupfile = 'dump/Autobackup_' . date("Y-m-d_H-i-s") . '.sql';
$backupdir = __DIR__ . '/dump';
$backupfile = 'Autobackup_' . date("Y-m-d_H-i-s") . '.sql';

system("mysqldump -h $host -u $user -p$pass --lock-tables $dbname > $backupfile");
system("tar -czvf $backupzip $backupfile");
system("mysqldump -h $host -u $user -p$pass --lock-tables $dbname > $backupdir/$backupfile");
system("tar -czvf $backupdir/$backupzip -C $backupdir $backupfile");

<strong>Clique <a href='http://www.dominio.com.br/backup-automatizado/".$backupzip."'>aqui</a> para baixar o arquivo de backup.</strong><br>
<strong>Clique <a href='http://www.dominio.com.br/backup-automatizado/dump/".basename($backupzip)."'>aqui</a> para baixar o arquivo de backup.</strong><br>

unlink($backupfile);
unlink($backupdir."/".$backupfile); 


Veja também:


Links úteis:


Painel.png