pkill -P variável não funciona ao executar .sh sob cron

0

Eu tenho um script .sh muito simples para matar um processo. Os processos salvam seu PID para pid2.txt .

pkill -e -P $(cat pid2.txt)
exit

Quando executo isso como sudo ./myscript.sh da linha de comando, tudo funciona bem.

Quando executado pelo cron como */2 * * * * /etc/mylocation/myscript.sh , ele gera um erro:

cat: pid2.txt: No such file or directory pkill: option requires an argument -- 'P'

O que estou fazendo de errado?

    
por sjaak 21.06.2018 / 07:29

2 respostas

1

A tarefa cron não está necessariamente executando com o mesmo diretório de trabalho que você possui na sessão interativa. Isso significa que o arquivo pid2.txt pode não estar disponível onde você acha que está. Altere o script para que ele use um caminho absoluto para o arquivo pid2.txt .

Você também pode remover exit do final do script. Não serve para nada.

    
por 21.06.2018 / 07:56
0

Adicione o caminho completo de pid2.txt no seu script, então ele funcionará

Explicação: As tarefas do cron são executadas em um ambiente mínimo e, como são executadas diretamente pelo crond sem um shell (a menos que você force a criação), a configuração normal do shell nunca acontece. Portanto, você precisa especificar explicitamente o caminho de todos os arquivos, sendo os scripts chamados pelo cron

    
por 21.06.2018 / 08:09

Tags