Myslím, že jsem si o tom něco přečetl, ale nemohu si vzpomenout, jak se to dělá. V podstatě mám službu v /etc/init.d
které bych chtěl spustit automaticky při spuštění. Pamatuji si, že to má něco společného se symlinking skriptem do /etc/rc.d
adresář, ale v současnosti si nepamatuji. Jaký je na to příkaz?
Věřím, že jsem na derivátu Fedora/CentOS.
Pokud jste na systému založeném na Red Hat, jak jste zmínil, můžete udělat následující:
/etc/init.d
(např. /etc/init.d/myscript
). Skript by měl mít následující formát:#!/bin/bash
# chkconfig: 2345 20 80
# description: Description comes here....
# Source function library.
. /etc/init.d/functions
start() {
# code to start app comes here
# example: daemon program_name &
}
stop() {
# code to stop app comes here
# example: killproc program_name
}
case "$1" in
start)
start
;;
stop)
stop
;;
restart)
stop
start
;;
status)
# code to check status of app comes here
# example: status program_name
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
esac
exit 0
Formát je dost standardní a stávající skripty si můžete prohlédnout v /etc/init.d
. Potom můžete použít skript takto /etc/init.d/myscript start
nebo chkconfig myscript start
. Manuální stránka ckconfig
vysvětluje záhlaví skriptu:
> This says that the script should be started in levels 2, 3, 4, and
> 5, that its start priority should be 20, and that its stop priority
> should be 80.
Příklad start, stop a stavový kód používá pomocné funkce definované v /etc/init.d/functions
Povolte skript
$ chkconfig --add myscript
$ chkconfig --level 2345 myscript on
Zkontrolujte, zda je skript skutečně povolený - u vybraných úrovní byste měli vidět „on“.
$ chkconfig --list | grep myscript
Vyzkoušíte, do jaké úrovně běhu se váš počítač obvykle dostane.
runlevel
Často se jedná o 5 nebo 2 - existují různé konvence, ale nic se nepodařilo, afaik. Ubuntu používá 2, zatímco dřívější distribuce, kterou jsem používal, vždy používal
Pak z vašeho init-skriptu uděláte symbolický odkaz, možná /etc/init.d/foobar
to /etc/rc2.d/SXYfoobar
S znamená 'Spusťte tento skript v tomto runlevelu (zde: 2). XY je dvoumístné desetinné číslo, které je relevantní pro posloupnost, spouštění skriptů.
Pokud závisíte na tom, že před vámi bude spuštěn skript S45barfoo, a S55foofoo závisí na vašem skriptu, zvolte xy mezi 45 a 55. Pro stejná čísla není pořadí bootování definováno.
Ubuntu se mezitím přepnul (přepíná) na jinou spouštěcí proceduru nazvanou upstart
.
A poznámka: Ne vždy odkazy odkazují na /etc/rcX.d
- někdy je to /etc/init/rcX.d
nebo něco podobného, ale mělo by být snadné je najít někde pod/atd.
Pokud chcete něco spustit na konci počátečních skriptů, /etc/rc.local
by byl hledaný soubor, ale pokud to záleží na již spuštěném systému X11, můžete hledat možnost automatického spuštění vašeho desktopového prostředí, nebo /etc/X11/Xsession.d/
s podobným vzorem, jak je popsáno výše.
Pokud záleží na existující síti, existuje samostatný adresář (if-up.d) a pro připojená zařízení, jako jsou externí jednotky USB /etc/udev/rules.d/
.
Jak se Naftuli Tzvi Kay zeptal na Debian výše: Počínaje Debianem 6 by váš skript měl obsahovat záhlaví LSB (Linux Standards Base), které uvádí jeho závislosti a schopnosti ( viz debianová wiki stránka ).
Je-li k dispozici záhlaví LSB, můžete pomocí skriptu insserv
zahrnout skript do spouštěcího procesu ( viz další stránka debian wiki ).