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=myDaemongeändert -
schreiben Sie
update-rc.d myDaemon defaultim Terminal -
und es fügte symbolische Links zu
rc#.dhinzu 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