O programa não é iniciado na função que é chamada por um sinal trap

1

Eu tenho um script Bash que requer que alguns comandos de limpeza aconteçam quando ele é fechado no console.

Basicamente, a limpeza é um comando de reinicialização no programa do daemon do Python (vamos chamar isso de P ), que interrompe o processo atual e inicia um novo. O script Bash é usado para monitorar o aplicativo daemon do Python.

No entanto, o problema é que, por algum motivo, ele não está iniciando o programa para reiniciar o programa Python.

O script Bash está localizado na área de trabalho do meu Raspberry Pi usando o Raspbian. Eu devo começar isso clicando duas vezes nele e selecionando Executar no Terminal .

Aqui está a essência do meu código.

function clean_up {
    python3 A restart & #stops the python Deamon if running, then start it. (will start if it wasn't running to begin with)
    disown
    quit    
}

trap clean_up SIGINT 
trap clean_up SIGTERM
trap clean_up SIGHUP
trap clean_up SIGCHLD
trap clean_up SIGCONT
python3 A stop
... (code to start monitor)
python3 A start ArgumentToHookToMonistor 
    
por user3346931 08.10.2015 / 22:27

1 resposta

0

Não tenho certeza se isso fará o que você quer, mas ajudará a depurar um pouco o problema:

  • No início do seu script: ative o controle do trabalho (desativado por padrão nos scripts) com: set -m

  • Em seguida, dentro da função clean_up, altere disown para disown %1 2>&1 | tee /path/to/logfile.log

  • Também nessa função, adicione um sleep 3 antes da linha quit , se você quiser ter tempo para ver as mensagens enquanto executa o script manualmente.

por 06.01.2017 / 14:43