Você não precisa de nada especial para fazer um daemon, na verdade. Qualquer programa em qualquer idioma pode "daemonizar" sozinho. Como alternativa, você pode daemonizar um programa existente com um pequeno wrapper de script de shell (por exemplo, o iniciador do programa /etc/init.d pode cuidar disso).
Normalmente, um daemon tem as seguintes propriedades:
- o diretório de trabalho deve ser /
- STDIN deve ser / dev / null
- STDOUT e STDERR devem ser / dev / null ou arquivos de log
- o ID pai deve ser init (1), facilmente obtido por bifurcação, deixando a saída pai.
Atualização 1
Monit basicamente cuida dos detalhes sangrentos que eu dei aqui. Para os detalhes sobre STDIN / STDOUT, / dev / null etc., esses são conceitos básicos do Unix, então acho que você precisará investigar isso mais cedo ou mais tarde. Veja por exemplo esta Introdução ao Unix .
Atualização 2
Um script de shell que daemoniza um programa seria semelhante ao seguinte. Observe que isso não funcionará para programas que permanecem em primeiro plano.
#!/bin/sh
DAEMON=/some/program/to/run
PARAMETERS="parameters to my program"
LOGFILE=/var/log/somefile.log
start() {
echo -n "starting up $DAEMON"
RUN='cd / && $DAEMON $PARAMETERS > $LOGFILE 2>&1'
if [ "$?" -eq 0 ]; then
echo "Done."
else
echo "FAILED."
fi
}
stop() {
killall $DAEMON
}
status() {
killall -0 $DAEMON
if [ "$?" -eq 0 ]; then
echo "Running."
else
echo "Not Running."
fi
}
case "$1" in
start)
start
;;
restart)
stop
sleep 2
start
;;
stop)
stop
;;
status)
status
;;
*)
echo "usage : $0 start|restart|stop|status"
;;
esac
exit 0