Como posso ver / parar as tarefas atuais do crontab?

19
  1. Como posso ver as tarefas do crontab que estão em andamento?
  2. Como posso interromper as tarefas do crontab que estão em andamento, manualmente?

Is [this] question about see the current running cron processes?

Sim

To kill a process manually one way is to use pkill

Eu tinha pensado em pkill / killall, mas alguns dos meus comandos no arquivo crontab são respectivamente! isso significa que depois de terminar um comando, o próximo será iniciado! por exemplo:

sudo crontab -e

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

Então, se eu matar o wget, o computador será desligado !!! - > Eu quero matar uma tarefa cron totalmente, não uma parte dela!

o próximo problema de pkill: E os scripts? (Eu importei alguns scripts bash para crontab -e) - > sudo pkill ???

    
por mini 26.06.2013 / 19:31

2 respostas

38

Primeiramente, use apenas um comando por linha no crontab. Altere esta linha de crontab:

00 10 * * * /usr/bin/wget LINK ; shutdown -h now

, então parece:

00 10 * * * /path/to/my/crontab/script1.sh

e crie /path/to/my/crontab/script1.sh com este conteúdo:

#!/bin/bash
/usr/bin/wget LINK
shutdown -h now

Claro, não se esqueça de dar permissão de execução:

chmod +x /path/to/my/crontab/script1.sh

Em segundo lugar, você pode ver as tarefas do crontab em execução, em um formato útil e legível, na saída de:

ps -o pid,sess,cmd afx | egrep "( |/)cron( -f)?$"

Eles aparecerão nas primeiras linhas, algo assim:

1108  1108 cron
4288  1108 \_ CRON
4289  4289     \_ /bin/sh -c /path/to/my/crontab/script1.sh
4290  4289         \_ /bin/bash /path/to/my/crontab/script1.sh
4295  4289             \_ /usr/bin/wget LINK

A primeira coluna é PID, a segunda é a ID da sessão e a terceira é o comando iniciado pelo cron. Você pode matar todos os processos relacionados a uma tarefa Cron específica usando o ID da sessão, portanto, no exemplo acima, você deve eliminar o ID da sessão 4289:

pkill -s 4289
    
por Eric Carvalho 29.06.2013 / 15:05
0

Para eliminar um processo manualmente, uma maneira é usar pkill . pkill irá parar todos os processos que possuem o seguinte padrão em seu nome. por exemplo, para interromper o uso de todos os processos do wget:

sudo pkill wget
    
por Mohammad Etemaddar 26.06.2013 / 21:21

Tags