supervision - discussion about system services, daemon supervision, init, runlevel management, and tools such as s6 and runit
 help / color / mirror / Atom feed
* Uncontrolled generation of new processes
@ 2017-12-06 16:35 DGSJ
  2017-12-07  6:09 ` Colin Booth
  0 siblings, 1 reply; 4+ messages in thread
From: DGSJ @ 2017-12-06 16:35 UTC (permalink / raw)
  To: supervision

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é


^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2017-12-10 19:33 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-12-06 16:35 Uncontrolled generation of new processes DGSJ
2017-12-07  6:09 ` Colin Booth
2017-12-10 19:07   ` DGSJ
2017-12-10 19:33     ` Charles Duffy

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).