GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Führen Sie das Bash-Skript als Daemon aus

Sie können zu /etc/init.d/ gehen – dort sehen Sie ein Daemon-Template namens skeleton.

Sie können es duplizieren und dann Ihr Skript unter der Startfunktion eingeben.


Ein Daemon ist einfach ein Programm, das als Hintergrundprozess läuft, anstatt unter der direkten Kontrolle eines interaktiven Benutzers zu stehen...

[Der folgende Bash-Code ist für Debian-Systeme – Ubuntu, Linux Mint-Distributionen usw.]

Der einfache Weg:

Der einfache Weg wäre, Ihre Datei /etc/rc.local zu bearbeiten und dann Ihr Skript einfach von dort aus auszuführen (d. h. jedes Mal, wenn Sie das System hochfahren):

sudo nano /etc/rc.local

Fügen Sie Folgendes hinzu und speichern Sie:

#For a BASH script
/bin/sh TheNameOfYourScript.sh > /dev/null &

Der bessere Weg, dies zu tun, wäre, einen Daemon über Upstart zu erstellen:

sudo nano /etc/init/TheNameOfYourDaemon.conf

Folgendes hinzufügen:

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 &

Speichern.

Bestätigen Sie, dass alles in Ordnung aussieht:

init-checkconf /etc/init/TheNameOfYourDaemon.conf

Starten Sie nun die Maschine neu:

sudo reboot

Wenn Sie jetzt Ihr System hochfahren, können Sie die Protokolldatei sehen, die besagt, dass Ihr Daemon läuft:

cat  /var/log/TheNameOfYourDaemonJobLog.log

• Jetzt können Sie Ihren Daemon starten/stoppen/neu starten/den Status abrufen über:

Neustart:Dies wird stoppen und dann einen Dienst starten

sudo service TheNameOfYourDaemonrestart restart

start:Dies startet einen Dienst, falls er nicht läuft

sudo service TheNameOfYourDaemonstart start

stop:Dies stoppt einen Dienst, falls er läuft

sudo service TheNameOfYourDaemonstop stop

Status:Dies zeigt den Status eines Dienstes an

sudo service TheNameOfYourDaemonstatus status

Um es als vollständigen Daemon von einer Shell auszuführen, müssen Sie setsid verwenden und seine Ausgabe umleiten. Sie können die Ausgabe in eine Protokolldatei oder an /dev/null umleiten es zu verwerfen. Angenommen, Ihr Skript heißt myscript.sh, verwenden Sie den folgenden Befehl:

setsid myscript.sh >/dev/null 2>&1 < /dev/null &

Dadurch wird der Prozess vollständig von Ihrer aktuellen Shell (stdin, stdout und stderr) getrennt. Wenn Sie die Ausgabe in einer Protokolldatei behalten möchten, ersetzen Sie die erste /dev/null mit Ihrem /path/to/logfile.

Sie müssen die Ausgabe umleiten, sonst läuft sie nicht als echter Daemon (es hängt von Ihrer Shell ab, ob sie die Ausgabe liest und schreibt).


Linux
  1. Wie führe ich Linux-Bash-Befehle in einem PERL-Skript aus?

  2. Führen Sie das PHP-Skript als Daemon-Prozess aus

  3. Wie lässt sich ein Python-Skript als Dienst ausführen?

  4. Berechtigung zum Ausführen von cron mit bash.sh verweigert

  5. Wie führe ich ein Bash-Skript über einen absoluten Pfad aus?

So führen Sie ein Bash-Skript aus {7 Methoden}

35 Bash-Skriptbeispiele

So führen Sie Shell-Skript als SystemD-Dienst in Linux aus

idmapd-Daemon

So führen Sie ein Bash-Skript aus

Skript beim Start?