The scope of this blog entry is to give you a quick and dirty demo for start-stop-daemon
together with a short use case on Gearman (all on Ubuntu). In this example, I’m using the start-stop-daemon
to handle my Gearman workers through an init.d
script.
Gearman
Gearman is a queue! But unlike for example most of the backends to Zend_Queue
, Gearman provides a little more than just a message queue to send — well — messages from sender to receiver. With Gearman it’s trivial to register functions (tasks) on the server to make in order to start a job and to get stuff done.
For me the biggest advantages of Gearman are that it’s easy to scale (add a server, start more workers) and that you can get work done in another language without building an API of some sort in between. Gearman is that API.
Back to start-stop-daemon
start-stop-daemon is a facility to start and stop programs on system start and shutdown. On recent Ubuntus most of the scripts located in /etc/init.d/
make use of it already. It provides a simple high-level API to system calls — such as stopping a process, starting it in a background, running it under a user and the glue, such as writing a pid file.
My gearman start script
Once adjusted, register it with the rc-system: update-rc.d script defaults
. This will take care of the script being run during the boot process and before shutdown is completed.
A little more detail
The script may be called with /etc/init.d/script start|stop|restart
(the pipes designated “or”).
Upon start, we write a pidfile to /var/run
and start the process. The same pidfile is used on stop — simple as that. The rest of it is hidden behind start-stop-daemon
which takes care of the ugly rest for us.