Ich schreibe eine einfache Daemon-Anwendung mit C/C++ und möchte, dass sie beim Start von Linux gestartet wird.
Ich habe versucht, /etc/init.d/skeleton
zu ändern wie folgt ein Skript in das Verzeichnis init.d einzufügen
-
meine Daemon-Anwendung in
/usr/sbin/
hinzugefügt Verzeichnis undNAME=myDaemon
geändert -
schreiben Sie
update-rc.d myDaemon default
im Terminal -
und es fügte symbolische Links zu
rc#.d
hinzu Verzeichnisse
Aber es hat nicht funktioniert.
Mein zweiter Versuch war, rc.local
zu modifizieren als
/usr/sbin/myDaemon start
Aber auch das hat nicht funktioniert.
Wie kann ich meinen Daemon dazu bringen, mit dem Betriebssystem zu starten? Ich möchte alles programmgesteuert erledigen.
Ich verwende Ubuntu 10.10, aber wenn es eine allgemeine Lösung für alle Distributionen gäbe, wäre das großartig!
Akzeptierte Antwort:
Sie ändern nichts /etc/init.d/skeleton
Datei. Sie kopieren es in eine neue Datei /etc/init.d/mamoudservice
(ersetzen Sie mamoudservice
mit einem passenderen Namen) und dann bearbeiten diese neue Datei entsprechend.
Dann fügen Sie einen Symlink von /etc/rc2.d/S99mamoudservice
hinzu nach /etc/init.d/mamoudservice
usw.
Verwenden Sie z. B.
/bin/bash -vx /etc/init.d/mamoudservice start
um zu verstehen, wie die bash
Shell interpretiert Ihr Skript.
Wenn Ihr Daemon-Programm /usr/sbin/mamouddaemon
in C oder in C++ kodiert ist, empfehle ich die Verwendung von openlog und syslog
innen, zumindest um Debugging-Meldungen zu erhalten (nicht an stderr
ausgeben oder stdout
in einem Daemon könnte es nirgendwo hingehen).
Eine Alternative zu Ihrem /etc/init.d/mamoudservice
Skript könnte darin bestehen, ein @reboot
einzufügen Eintrag in Ihrem crontab