Můžete přejít na /etc/init.d/ - uvidíte šablonu démona s názvem skeleton.
Můžete jej duplikovat a poté zadat svůj skript pod funkci start.
Démon je pouze program, který běží jako proces na pozadí, místo aby byl pod přímou kontrolou interaktivního uživatele...
[Níže uvedený bash kód je pro systémy Debian – Ubuntu, distribuce Linux Mint a tak dále]
Jednoduchý způsob:
Nejjednodušší způsob by byl upravit váš soubor /etc/rc.local a pak nechat skript spustit odtud (tj. pokaždé, když spouštíte systém):
sudo nano /etc/rc.local
Přidejte následující a uložte:
#For a BASH script
/bin/sh TheNameOfYourScript.sh > /dev/null &
Lepší způsob, jak to udělat, by bylo vytvořit démona prostřednictvím Upstart:
sudo nano /etc/init/TheNameOfYourDaemon.conf
přidejte následující:
description "My Daemon Job"
author "Your Name"
start on runlevel [2345]
pre-start script
echo "[`date`] My Daemon Starting" >> /var/log/TheNameOfYourDaemonJobLog.log
end script
exec /bin/sh TheNameOfYourScript.sh > /dev/null &
Uložte si to.
Potvrďte, že to vypadá dobře:
init-checkconf /etc/init/TheNameOfYourDaemon.conf
Nyní restartujte počítač:
sudo reboot
Nyní, když spouštíte svůj systém, můžete vidět soubor protokolu, který uvádí, že váš démon běží:
cat /var/log/TheNameOfYourDaemonJobLog.log
• Nyní můžete spustit/zastavit/restartovat/získat stav svého démona pomocí:
restartovat:tato akce se zastaví a poté spustí službu
sudo service TheNameOfYourDaemonrestart restart
start:toto spustí službu, pokud není spuštěna
sudo service TheNameOfYourDaemonstart start
stop:toto zastaví službu, pokud je spuštěna
sudo service TheNameOfYourDaemonstop stop
stav:zobrazí stav služby
sudo service TheNameOfYourDaemonstatus status
Chcete-li jej spustit jako úplného démona ze shellu, budete muset použít setsid
a přesměrovat jeho výstup. Výstup můžete přesměrovat do souboru protokolu nebo do /dev/null
zahodit to. Za předpokladu, že se váš skript jmenuje myscript.sh, použijte následující příkaz:
setsid myscript.sh >/dev/null 2>&1 < /dev/null &
Tím se proces zcela odpojí od vašeho aktuálního shellu (stdin, stdout a stderr). Pokud chcete zachovat výstup v souboru protokolu, nahraďte první /dev/null
s vaším /path/to/logfile.
Výstup musíte přesměrovat, jinak nepoběží jako skutečný démon (čtení a zápis výstupu bude záviset na vašem shellu).