Eu li 20 perguntas sobre cron jobs e o que você não precisa definir e fiz tudo isso, não marque isso como duplicado. Então meu script é este:
#!/bin/bash
openRTSP_process_ids=(`/bin/ps -fu $USER | /bin/grep "openRTSP" | /bin/grep -v "grep" | /bin/grep -v $0 | /usr/bin/awk '{print $2}'`)
echo $openRTSP_process_ids
for i in "${openRTSP_process_ids[@]}"
do
if [ -n "$i" ]; then
echo $i
kill -1 $i
fi
done
e meu crontab fica assim:
#SHELL=/bin/bash
PATH=/home/username/bin:/home/username/.local/bin:/opt/OpenPrinting-Gutenprint/sbin:/opt/OpenPrinting-Gutenprint/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/snap$
43,41,26,21,16,12,1,7,48,46,33,49,54,57,59,4,9,14,19,24,27,29,32,34,39,44 * * * * bash /home/username/Documents/stop_openRTSP &>> /home/username/stop.log
50,55,0,5,10,15,20,25,30,35,40,45 * * * * /home/username/Documents/start_openRTSP
Eu tentei com o shell sh padrão e o shell bash não funciona. Tentei redirecionar a saída para um bot de arquivo de log usando o redirecionamento &>> bash e o redirecionamento 2>&1 sh, mas o arquivo de log está vazio. Eu tentei um monte de coisas, mas o processo nunca foi encerrado, mas sim quando eu faço isso via linha de comando.
Além de adicionar caminho e shell, escrevi todos os comandos com seu caminho completo. Eu verifico se funcionou olhando ps aux | grep openRTPS e olhando os processos abertos. Quando executo o script na linha de comando, os processos são fechados, mas por meio do cron job eles permanecem abertos.
Em algumas versões tive um toque bla no início, então sei que este script específico ESTÁ sendo executado, mas nem todos os comandos.
Responder1
Se os trabalhos ou scripts não estiverem fazendo o que você espera, uma dica de solução de problemas muito útil é adicionar set -x
ao topo do script e inspecionar a saída para garantir que o script esteja fazendo o que vocêpensarestá fazendo. É bem possível que você esteja fazendo algumas suposições ou suposições sobre seu ambiente de tempo de execução que não são confirmadas em campo.