Sto scrivendo una semplice applicazione demone usando C/C++ e voglio che si avvii all'avvio di Linux.
Ho provato a modificare /etc/init.d/skeleton
per aggiungere uno script nella directory init.d come segue
-
aggiunto la mia applicazione demone in
/usr/sbin/
directory e modificatoNAME=myDaemon
-
scrivi
update-rc.d myDaemon default
nel Terminale -
e ha aggiunto collegamenti simbolici a
rc#.d
directory
Ma non ha funzionato.
Il mio secondo tentativo è stato quello di modificare rc.local
come
/usr/sbin/myDaemon start
Ma neanche questo ha funzionato.
Come posso far partire il mio demone con il sistema operativo? Voglio fare tutto in modo programmatico.
Uso Ubuntu 10.10 ma se esiste una soluzione generale per tutte le distribuzioni, sarebbe fantastico!
Risposta accettata:
Non modificare il /etc/init.d/skeleton
file. copia in un nuovo file /etc/init.d/mamoudservice
(sostituisci mamoudservice
con un nome più adatto) e quindi modifica quel nuovo file in modo appropriato.
Quindi aggiungi un collegamento simbolico da /etc/rc2.d/S99mamoudservice
a /etc/init.d/mamoudservice
ecc.
Usa ad es.
/bin/bash -vx /etc/init.d/mamoudservice start
per capire come il bash
shell sta interpretando il tuo script.
Se il tuo programma demone /usr/sbin/mamouddaemon
è codificato in C o in C++, suggerisco di usare openlog e syslog
all'interno, almeno per ottenere messaggi di debug (non inviare in output a stderr
o stdout
in un demone, non potrebbe andare da nessuna parte).
Un'alternativa all'avere il tuo /etc/init.d/mamoudservice
lo script potrebbe essere quello di inserire un @reboot
voce nel tuo crontab