Почему мой скрипт работает при запуске из консоли, но не работает при запуске через upstart?

Я использую Ubuntu 12.04. Вот что я пытаюсь сделать:

Я скопировал и адаптировал скрипт оболочки здесь: http://yatse.leetzone.org/redmine/boards/2/topics/2088. Он слушает UDP-порт 9 для пакетов Wake-On-LAN. Когда он получает пакет, он должен запустить xbmc. Вот скрипт /home/myusername/.xbmc/autostarter:

#!/bin/bash
UDP_PORT=9          # Change this if you need to run this on a different port

START_PHRASE="E.....@"    
START_PHRASE_ESCAPED="E\.\.\.\.\.@"    

# The following block checks if the user running this script has the required      privileges to listen on the port specified above
WHO=`whoami`
if [ "$WHO" != "root" ]; then
     echo "Cannot start unless running as root." >> /var/log/xbmc-starter.log
  exit 1
fi

echo "Listening on port $UDP_PORT for start command" >> /var/log/xbmc-starter.log

while [ true ]; do
     # Wait for a packet to come in
     LISTEN=`tcpdump "udp port $UDP_PORT" -A -c 1 2>&1 | grep -o    "$START_PHRASE_ESCAPED"`
     # Make sure that we received the right command
     if [ "$LISTEN" = "$START_PHRASE" ]; then
        echo "Starting XBMC" >> /var/log/xbmc-starter.log
        /usr/bin/xbmc 
        echo "test log after command" >> /var/log/xbmc-starter.log
     fi
     # Sleep, to be nice, for unwanted rogue processes writing to our port
     sleep 1
done

Когда я запускаю этот скрипт из командной строки с помощью sudo и отправляю пакет WOL, он работает и запускает xbmc.

sudo ./autostarter

Вывод журнала:

Listening on port 9 for start command
Starting XBMC
test log after command

Но когда я запускаю его из сценария upstart, он создает тот же вывод журнала, но не запускает xbmc. Вот мой скрипт выскочки xbmc-starter.conf:

# Starts a listener that runs the xbmc start script when a WOL package is received
description     "start xbmc wol listener script"
# runlevels
start on runlevel [2345]
stop on runlevel [!2345]
exec /home/myusername/.xbmc/autostarter

И вывод журнала:

Listening on port 9 for start command
Starting XBMC
test log after command

Почему не запускается XBMC?

2 ответа

Решение

Возможно добавление env DISPLAY=:0 работа Upstart поможет? Я думаю, что XBMC должен знать, какой дисплей использовать, понимаете?

Я сделаю снимок, так как никто не предложил ответ.

Попробуйте изменить начальное условие на start on started tty1

Я понимаю системы инициализации, что они с радостью будут запускать программы в странные времена, если вы об этом попросите. Запрос на запуск уровней запуска может означать начало этих уровней запуска, прежде чем что-либо еще началось. Как и до того, как были смонтированы такие элементы, как любая часть файловой системы, и, конечно, до того, как станет доступно минимальное количество сетей.

запуск при запуске tty1 будет ожидать запуска первого терминала перед запуском программы, что в основном соответствует времени, когда вы сможете запускать / тестировать вещи вручную. Таким образом, ваша программа запускается позже в процессе загрузки, но вы должны получить более согласованные результаты.

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