Como terminar um script iniciado pelo cron?

1

Eu inicio um script via cron que funciona bem. Mas quando eu tento terminar esse script via cron ( killall / pkill / pgrep funciona) nada acontece.

Se eu deixar o cron tentar matá-lo ou experimentá-lo, não fará diferença. A única maneira de pará-lo parece ser htop e, em seguida, F9 (sigterm).

Então, como terminar um script iniciado pelo cron?

Meus scripts começam com #!bin/bash e o cron inicia por ./path/script.sh .

Alguma idéia?

    
por tuxaddict 23.12.2014 / 12:17

1 resposta

2

O que deve funcionar de qualquer forma é matá-lo pelo seu pid:

  • execute ps -ef (ou ps -efww se as linhas forem muito longas para ler o final)
  • encontre o scriptname e você terá seu pid
  • mate-o com:

    kill <pid>
    

    (lembre-se: não pkill , que é usado como pkill <application> , não como pkill <pid> )

Nota:

Usando o comando:

ps -ef | grep testscript

listará dois processos; o que você está procurando e o próprio processo de pesquisa que você está executando, por exemplo:

jacob     4183  3647  0 11:22 pts/10   00:00:00 python3 /home/jacob/Bureaublad/testscript.py
jacob     4202  4189  0 11:22 pts/25   00:00:00 grep --color=auto testscript

, o que significa que você teria que usar, por exemplo:

ps -ef | grep <scriptname> | grep -v grep
> jacob     4183  3647  0 11:22 pts/10   00:00:00 python3 /home/jacob/Bureaublad/testscript.py

Para encontrar apenas a linha de que você precisa.

Ao contrário do comando pgrep , que se filtra fora da lista, como apontado aqui ::

pgrep -f testscript
> 4183

Isso significa que usar pgrep -f <scrptname> como sugerido por @muru é a melhor maneira, por mais de uma razão.

    
por Jacob Vlijm 23.12.2014 / 12:50