Como posso ver / parar as tarefas atuais do crontab em execução?

20
  1. Como posso ver as tarefas do crontab em andamento?
  2. Como posso parar manualmente as tarefas do crontab que estão em andamento?

Esta [pergunta] é sobre os processos cron atuais em execução?

sim

Para matar um processo manualmente, uma maneira é usar o pkill

Eu tinha pensado em pkill / killall, mas alguns dos meus comandos no arquivo crontab são respectivamente! isso significa que, após concluir 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 wget, o computador será desligado !!! -> Eu quero matar uma tarefa cron completamente, não faz parte dela!

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

mini
fonte
Sua pergunta é sobre os processos cron atuais em execução? ou a lista de cron-jobs? Edite sua pergunta para ser mais claro sobre isso. Para interromper o cron-job em execução, vá ( askubuntu.com/q/272419/66980 )
Mohammad Etemaddar
Editado; 1. sim, assistindo os processos cron em execução no momento? (Eu quero trazer os processos para o primeiro plano); 2. Então, eu quero parar manualmente ?! (não da programação do crontab)
mini
A melhor maneira de adicionar informações adicionais à sua pergunta é editando-a, com o botão editar . É melhor visível dessa maneira, e os comentários são principalmente para fins secundários e temporários. Os comentários são removidos sob várias circunstâncias. Qualquer coisa importante para sua pergunta deve estar na própria pergunta.
guntbert

Respostas:

42

Primeiro, use apenas um comando por linha no crontab. Mude esta linha do crontab:

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

assim parece:

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

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

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

Obviamente, não 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 em execução do crontab, em um formato útil e legível, na saída de:

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

Eles aparecerão nas primeiras linhas, algo como isto:

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 matar o ID da sessão 4289:

pkill -s 4289
Eric Carvalho
fonte
11
Eu recebo isso ao executar o comando "executando tarefas do crontab":sh ps: cmd: keyword not found ps: illegal argument: afx
AlecRust
então o cron não fornece uma maneira "útil" de mostrar seus processos?
precisa saber é o seguinte
@alecrust: Tente istops -o pid,sess,cmd -afx | egrep "( |/)cron( -f)?$"
Bulrush
0

Matar um processo manualmente de uma maneira é usar pkill. O pkill interromperá todos os processos que possuem o seguinte padrão em seu nome. por exemplo, para parar todos os processos wget, use:

sudo pkill wget
Mohammad Etemaddar
fonte
Eu tinha pensado em pkill / killall, mas alguns dos meus comandos no arquivo crontab são respectivamente! isso significa que, após concluir 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 completamente, não faz parte dela! o próximo problema do pkill: E os scripts? (Importei alguns scripts do bash para crontab -e) ->sudo pkill ???
mini
0

mude seu cronjob assim

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

Isso deve funcionar, porque &&significa que o segundo comando é executado apenas quando o primeiro foi finalizado corretamente (retornando o status 0 ao console / sistema), o que não deve ser o caso (porque o processo foi interrompido pelo usuário e ele deve retornar outro valor que 0).

s1mmel
fonte