Como iniciar um trabalho cron sem reiniciar?

11

Eu uso um trabalho cron para chamar a offlineimapcada 2 minutos:

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

Eu precisava matar o trabalho cron para corrigir um problema. Como posso então reiniciar o trabalho cron (sem reiniciar)? 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?

Marius Hofert
fonte
Qual trabalho você não consegue ver?
Spack
1
Abra o seu crontab, comentário que trabalho, realizar a sua manutenção e, em seguida, uncomment-lo ...
jasonwryan

Respostas:

12

Abordagem Cron

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

Dependendo da distribuição do Linux que você está usando, você pode executar estes comandos:

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

Ou execute estes comandos:

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

Bloquear abordagem de tipo de arquivo

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

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

touch /tmp/dontrunofflineimap

O trabalho cron seria modificado da seguinte maneira:

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

Enquanto esse arquivo existir, ele basicamente impedirá a offlineimapexecução do aplicativo. Quando você quiser continuar, basta excluir o /tmp/dontrunofflineimaparquivo.

slm
fonte
4

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

O seguinte comando ajuda:

crontab -e

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

sudo crontab -e

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

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