
Я пытаюсь настроить свою систему так, чтобы демон emacs запускался после загрузки машины. Я создал файл /etc/init.d с командами, которые я хочу выполнить, но при выполнении update-rc.d он игнорирует порядковые номера, которые я предоставляю.
[host /etc/init.d]$ sudo update-rc.d -n emacs defaults 10 02
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc0.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc1.d/K01emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc2.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc3.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc4.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc5.d/S02emacs
insserv: enable service ../init.d/emacs -> /etc/init.d/../rc6.d/K01emacs
insserv: dryrun, not creating .depend.boot, .depend.start, and .depend.stop
[host /etc/init.d]$
Я не понимаю, почему игнорируются последние два аргумента команды и могу ли я игнорировать тот факт, что я устанавливаю начальный порядковый номер на такое низкое значение.
решение1
update-rc.d defaults
не обрабатывает никакие другие аргументы; он использует информацию из сценария инициализацииЗаголовки LSBдля определения приоритета использования (порядкового номера) и для определения уровней выполнения, на которых следует запускать и останавливать службу.
Если ваш скрипт зависит только от $local_fs
, то нормально, что он в итоге будет иметь низкий порядковый номер; если вы посмотрите, то /etc/rc2.d
увидите довольно много ссылок start с низкими порядковыми номерами. Если ваш скрипт не указывает собственные уровни выполнения, используются значения по умолчанию: start на уровнях 2—5, stop на уровнях 0, 1 и 6. Чтобы определить собственные значения, вы обычно используете заголовок, такой как
### BEGIN INIT INFO
# Provides: emacs
# Required-Start: $local_fs $network $remote_fs
# Required-Stop: $local_fs $network $remote_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: start and stop the Emacs daemon
### END INIT INFO
(при необходимости корректируя различные значения).
Вы также можете использовать update-rc.d enable
и update-rc.d disable
для включения и отключения скрипта на определенном уровне выполнения (например update-rc.d emacs disable 3
).