Запуск скрипта на экране при запуске

У меня есть сценарий Python, который я хочу постоянно выполнять на компьютере с Ubuntu 12.04, и я делаю это, добавляя задание init, которое запускает короткий сценарий, который проверяет сеанс экрана и, если его нет, создает его .

/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

Проблема в том, что экран не создается при запуске /etc/init.d/my-script start. Он работает нормально, когда я выполняю ./start.sh и когда я отлаживаю его, он определенно выполняет оператор screen внутри оператора if, а код выхода с экрана равен 0.

Так почему же он не создает экран?

0
задан 9 December 2013 в 10:27

1 ответ

Я предполагаю, что произошел сбой при запуске сценария my-script.py, а не проблема с screen. Я вижу, что вы ссылаетесь на него из текущего каталога - который может не быть текущим каталогом при запуске из init и / или cron.

Можете ли вы попробовать использовать полный путь к сценарию в переменной INVOCATION?

0
ответ дан 9 December 2013 в 10:27

Другие вопросы по тегам:

Похожие вопросы: