это - Индивидуалист Ubuntu 10.10.
У меня есть следующий сценарий оболочки в init.d, который я хочу выполнить как "демон" (фоновый сервис с запускаются/останавливают/перезапускают действительно) при системном запуске. В rc3.d существует символьная ссылка. Я попробовал 4 и 5 также. (Идеально это инициализировало бы, прежде чем графический вход в систему происходит и прежде чем пользователь войдет в систему.)
ВАЖНЫЙ: работы сценария 100% как ожидалось и требуемый при тестировании этого с сервисом MetaLeapDaemon запускаются и сервисная остановка MetaLeapDaemon. (Этот сценарий оболочки называет программу Python, которая удостоверяется, что соответствующие .pid файлы и созданы при запуске и удалены в выходе.)
Так обычно это хорошо работает, но теперь моя единственная проблема - то, почему это не будет выполнено ни на одном из уровней выполнения, которые я попробовал. Я знаю наверняка, что это не выполняется, потому что файл журнала, который это обычно создает, не становится созданным.
Как Вы видите (отсутствием какого-либо uid:gid args в командах start-stop-daemon), это в настоящее время работало бы только под корнем, это запрещается в установке по умолчанию?
Вот сценарий, в значительной степени Ваш run-off-the-mill сценарий демона действительно:
#! /bin/sh
DAEMON=/opt/metaleap/_core/daemon/MetaLeapDaemon.py
NAME=MetaLeapDaemon
DESC="MetaLeapDaemon"
test -f $DAEMON || exit 0
set -e
case "$1" in
start)
start-stop-daemon --start --pidfile /var/run/$NAME.pid --exec $DAEMON
;;
stop)
start-stop-daemon --stop --pidfile /var/run/$NAME.pid
;;
restart)
start-stop-daemon --stop --pidfile /var/run/$NAME.pid
sleep 1
start-stop-daemon --start --pidfile /var/run/$NAME.pid --exec $DAEMON
;;
*)
N=/etc/init.d/$NAME
echo "Usage: $N {start|stop|restart}" >&2
exit 1
;;
esac
exit 0
Я отвечаю на это для полноты, даже если вы уже пошли на работу в Upstart (и что - это путь, я не предлагаю вам вернуться) .... [[ 112]
Я думаю, что ключевым моментом, который ты пропустил в первый раз, был уровень запуска. Я догадываюсь, что вы привыкли к RPM-дистрибутивам, где обычно используется уровень запуска 3 для многопользовательского режима и уровень запуска 5 для графического интерфейса?
В Debian и Ubuntu на самом деле есть только один пользователь (1) и многопользовательский (с GUI, если установлен). И многопользовательский - уровень запуска 2. Таким образом, ваши символические ссылки потерпели неудачу, потому что вы никогда не доходили до RL 3.
Использование команды update-rc.d
упрощает управление символическими ссылками.
В любом случае, я пишу это для всех, кому это может понадобиться. Хотя я бы посоветовал им конвертировать скрипт в Upstart!
Используйте следующую команду для запуска вашего скрипта при запуске.
Добавьте его в автозагрузку приложений.
sudo -u USERNAME COMMAND
Кстати, кто-то сказал мне использовать NOPASSWORD, иначе он не будет работать:
Вам лучше запустить sudo visudo, чтобы отредактировать файл / etc / sudoers и добавить NOPASSWD для команды вместо записи пароля в сценарии. - Лекенштейн
blockquote>Надеюсь, это помогло вам,
Даниил