Executando um script em uma tela ao iniciar

0

Eu tenho um script Python que desejo continuar rodando o tempo todo em uma máquina Ubuntu 12.04, e estou fazendo isso adicionando uma tarefa de inicialização que executa um script curto que verifica uma sessão de tela e, se não estiver presente, cria uma .

/etc/init.d/my-script :

PATH=/sbin:/bin:/usr/sbin:/usr/bin

case "$1" in
  start)
    /usr/local/bin/start.sh
    ;;
  stop|restart|force-reload)
    ;;
  *)
        ;;
esac

exit 0

/usr/local/bin/start.sh :

#!/bin/bash

PATH=/sbin:/bin:/usr/sbin:/usr/bin

SCREEN_NAME="my-script"
INVOCATION="./my-script.py"

# Make sure we are in the working directory.
cd /usr/local/bin

if ! screen -list | grep -q "${SCREEN_NAME}"; then
    screen -dmS "${SCREEN_NAME}" "${INVOCATION}"
fi

O problema é que a tela não está sendo criada quando eu executo /etc/init.d/my-script start . Ele roda bem quando eu executo ./start.sh e quando eu o depurei, ele definitivamente executa a instrução screen dentro da declaração if, e o código de saída da tela é 0.

Então, por que não cria a tela?

    
por DanielGibbs 09.12.2013 / 07:27

1 resposta

1

Eu acho que há uma falha ao executar o script my-script.py , em vez de um problema com screen . Vejo que você está fazendo referência a ele a partir do diretório atual - que pode não ser o diretório atual ao executar a partir do init e / ou cron.

Você pode tentar usar o caminho completo para o script na variável INVOCATION ?

    
por Jeremy Kerr 09.12.2013 / 08:24