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 defaultnel Terminale -
e ha aggiunto collegamenti simbolici a
rc#.ddirectory
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