Hallo. In order to migrate my SistemV to Runit, I'm writing the service scripts, but I'm having a problem I can't solve.
First, lest see an example that works well. The run file for the touchpad mouse: #!/bin/bash [ -f /etc/sysconfig/mouse ] && . /etc/sysconfig/mouse echo -e "Mouse working (ratonpad)..." exec /usr/sbin/gpm -D -m "${MDEVICE}" -t "${PROTOCOL}" ${GPMOPTS} > /dev/null 2>&1 An this is how the processes and PID's look like. # ps -fx 1 ? Ss 0:00 runit 192 ? Ss 0:00 runsvdir -P /service log: .................. ..................................................................... 194 ? Ss 0:00 \_ runsv ratonpad 198 ? S 0:00 | \_ /usr/sbin/gpm -D -m /dev/input/mice -t imps2 This kind of run file seems to work fine with daemons like gpm, sysklogd syslogd... But when I try to make the same with other services like udev, something goes wrong. This is the run file: #!/bin/bash -e echo "daemon udevd" exec 2>&1 exec /sbin/udevd --daemon And this is what happens: 466 ? Ss 0:00 /sbin/udevd --daemon 470 ? Ss 0:00 /sbin/udevd --daemon 474 ? Ss 0:00 /sbin/udevd --daemon 478 ? Ss 0:00 /sbin/udevd --daemon 484 ? Ss 0:00 /sbin/udevd --daemon 488 ? Ss 0:00 /sbin/udevd --daemon 492 ? Ss 0:00 /sbin/udevd --daemon 496 ? Ss 0:00 /sbin/udevd --daemon The processes doesn't fit into the typical runsv tree, and every one second a new PID is created on and on. What can be wrong? With other more elaborated run files, for services different than daemons, it happens more or less the same. Let see the behaviour of this interesting template I have found. This is the run file. #!/bin/bash -e echo -e "-------------" exec 2>&1 exec /opt/example2/foo-service.sh This is the script for the foo-service.sh #!/bin/bash -e echo "Empieza el servicio...root (service begins)" for i in {1..2} do echo "haciendo cosas...root (making things...)" sleep 1 done It doesn't matter if you end the script with exit 1 o 0, the result, regarding the uncontrolled creation of PID's is the same. This is the output of ps -fx 197 ? Ss 0:00 \_ runsv example2 820 ? S 0:00 \_ /bin/bash -e /opt/example2/foo-service.sh 821 ? S 0:00 \_ sleep 1 It looks nice, but after a while: 197 ? Ss 0:00 \_ runsv example2 989 ? S 0:00 \_ /bin/bash -e /opt/example2/foo-service.sh 991 ? S 0:00 \_ sleep 1 Old processes are killed, and new ones created every second 820 - 821 --> 989 - 991. Another view with pstree. |-runsvdir-+-runsv---login---bash--- | | | |-runsv---gpm | |-runsv---syslogd | |-runsv-+-klogd | | `-run---svlogd | `-runsv---foo-service.sh---sleep Well, I think I've missed something... It seems that every time the service is controlled, at the same time the process is recreated again and again with increasing PIDs. What am I doing wrong? I'm very interested in using runit for controlling other services different than daemons, so any help will be welcomed. Thank you in advance for your help. -- ------------------------- Daniel Gutiérrez San José