Сценарий init.d установлен правильно, и я написал его правильно. Но у меня очень странная ситуация. Скрипт выполняет многопоточную программу, написанную мной на c ++. Если я запускаю программу через терминал (я установил в / usr / sbin /) как: "MyProgram & amp;" все отлично. Но если эта программа выполняется сценарием init.d, один поток завершается неудачно. Другие потоки программы, как и другие функции спецификаций скрипта init.d, работают как положено. Я также должен упомянуть, что неработающий поток делает снимок рабочего стола каждые 30 секунд. Очевидно, что проблема должна быть в сценарии init.d. Я попытался запустить программу в этом сценарии следующим образом:
$DAEMON &
exec $DAEMON &
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON &
start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON & > /dev/null
Где $PIDFILE = /var/run/$NAME.pid ; $DAEMON = /usr/sbin/$NAME; $NAME = MyProgram
Во всех случаях у меня один и тот же результат: один поток завершается неудачно. Есть идеи?
Я нашел рабочее решение моей проблемы. Из-за конфигурации X-сервера вы не можете подключиться к нему в сценариях инициализации, хотя я попытался настроить X-сервер так, чтобы разрешить входящие подключения к порту tcp, но мне не удалось подключиться. Поэтому я запустил свою программу, когда X начинается с добавления display-setup-script=path_to_script
в /etc/lightdm/lightdm.conf
. Решение, которое я нашел здесь: Запустить программу при запуске X