Como iniciar um trabalho cron sem reiniciar?

11

Eu uso um cron job para chamar offlineimap a cada 2 minutos:

*/2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1

Eu precisava matar o cron job para corrigir um problema. Como posso reiniciar o trabalho cron (sem reinicializar)? Eu encontrei esta 'solução' online:

mylogin@myhost:~$ sudo /etc/init.d/cron restart
Rather than invoking init scripts through /etc/init.d, use the service(8)
utility, e.g. service cron restart

Since the script you are attempting to invoke has been converted to an
Upstart job, you may also use the stop(8) and then start(8) utilities,
e.g. stop cron ; start cron. The restart(8) utility is also available.
cron stop/waiting
cron start/running, process 26958

No entanto, usando ps -ef | grep ... , não vejo o trabalho ... O que há de errado?

    
por Marius Hofert 05.05.2013 / 00:21

3 respostas

12

abordagem Cron

Se você tiver privilégios sudo, poderá parar / iniciar o serviço cron. Eu acredito que é isso que a solução que você encontrou online estava explicando.

Dependendo de qual distro Linux você está usando, você pode fazer estes comandos:

# redhat distros
$ sudo /etc/init.d/crond stop
... do your work ...
$ sudo /etc/init.d/crond start

Ou faça estes comandos:

# Debian/Ubuntu distros
$ sudo service cron stop
... do your work ...
$ sudo service cron start

Abordagem do tipo de arquivo de bloqueio

Você também pode colocar um arquivo "dontrunofflineimap" no diretório / tmp quando quiser que a tarefa offlineimap seja interrompida e não seja executada por algum tempo.

O processo funcionaria assim. Você toca em um arquivo em / tmp assim:

touch /tmp/dontrunofflineimap

A tarefa cron seria modificada da seguinte forma:

*/2 * * * * [ -f /tmp/dontrunofflineimap ] || /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1

Enquanto esse arquivo existir, ele essencialmente bloqueará a execução do aplicativo offlineimap . Quando quiser que ele seja retomado, basta excluir o arquivo /tmp/dontrunofflineimap .

    
por 05.05.2013 / 01:27
4

Outra solução é editar o crontab e comentar o trabalho para desativá-lo. Isso é um pouco melhor porque cron pode estar agendando outros trabalhos também.

O seguinte comando ajuda:

crontab -e

Se é o crontab do root e não o usuário:

sudo crontab -e

Para comentar o trabalho, adicione um # no início da linha. Assim:

# */2 * * * * /usr/bin/offlineimap > ~/Maildir/offlineimap.log 2>&1
    
por 28.08.2013 / 15:09
-1

Você pode ler o link para obter mais informações sobre o crontab.

    
por 01.12.2014 / 11:46

Tags