como dizer ao crontab para executar o comando a partir de agora instantaneamente

1

Eu tenho um comando em "/ etc / crontab" que executa um programa de banco de dados a cada 7 dias. Agora, vejo que esse comando foi comentado por outro usuário por duas semanas. Eu imediatamente descomentei a linha, e hoje vejo que este comando não foi executado pelo crontab.

Por quê? Eu acho que depois de reiniciar o /etc/init.d/cron restart, o crontab iria reiniciar e ver a linha de comando, que diz para executar um comando a cada 7 dias. Então quando é que vai começar esse programa! não é imediatamente no início da reinicialização do serviço crond? parece que não.

Eu não posso esperar 7 dias pelo programa agora, quero que o crontab inicie os 7 dias desta noite. como posso fazer isso?

o script é:

0 0 */7 * *        root  source /opt/db_maintain/run.sh
    
por Saman 27.05.2015 / 13:48

3 respostas

1

* / 7 não significa "a cada 7 dias a partir de agora". Significa "todos os dias que são múltiplos de 7". Então ele roda o comando if #day modulo 7 == 0 → 7, 14, 21, 28 do mês.

A página wiki francesa do Cron fornece muitos exemplos: link

Você pode querer usar o Fcron: link

    
por 27.05.2015 / 13:58
1

Hoje é quarta-feira. Se você quiser que o cron execute um comando à meia-noite toda quinta-feira, aqui está o que você colocou no seu crontab:

0 0 * * 4    root /path/to/command
    
por 27.05.2015 / 15:19
0

Você também pode instalar o serviço at service / daemon que otimiza tarefas com base em recursos de tempo como "now + 7 days". Primeiro, inicie atd (através dos scripts init ou systemd ou upstart etc). Em seguida, faça fila no seu trabalho com

at -f /path/to/command now + 7 days

para iniciá-lo 7 dias a partir de agora, ou

at 2am tomorrow

e leia os comandos que serão executados amanhã às 2 da manhã. Você vai querer fazer um teste ou dois antes de esperar 7 dias para descobrir que não funcionou. Experimente now + 1 minutes

Uma forma de executá-lo a cada 7 dias é prefixar o lote com outro comando at :

cat >~/bin/weekly-job.sh << AT
at -f ~/bin/weekly-job.sh now + 7 days
~/bin/database-job.sh
AT
    
por 27.05.2015 / 17:02