View previous topic :: View next topic |
Author |
Message |
anaksimandr n00b

Joined: 04 Mar 2010 Posts: 10
|
Posted: Mon Oct 08, 2018 8:01 pm Post subject: igmpproxy 0.2.1 don't creates pid |
|
|
Hello.
I have a problem with running igmpproxy as daemon.
If run igmpproxy -v -d -n /etc/igmpproxy.conf everything looks norm (without pid ofc).
When I execute /etc/init.d/igmpproxy start, it starts and works to, but the pidfile does not creates.
Why? And how solve this problem?
It became so after update to 0.2.1.
In init script pidfile set like pidfile="/run/${RC_SVCNAME}.pid"
but there is nothing in /run like igmpproxy.pid
Code: | # ls /run
agetty.reload hostapd mysqld openldap php-fpm.socket sudo teaserver
crond.pid hostapd.pid named openrc proftpd svnserve.pid udev
dhcpcd lock nginx.pid php-fpm samba syslog-ng.ctl utmp
dhcpcd-enp1s0.pid mount ntpd.pid php-fpm-php7.1.pid sshd.pid syslog-ng.pid xtables.lock |
Code: | # ps -A | grep igm
8596 ? 00:00:00 igmpproxy |
command /etc/init.d/igmpproxy start -d shows this
Code: | * Starting igmpproxy ... [ ok ]
+ sourcex -e /etc/rc.conf
+ '[' -e = -e ']'
+ shift
+ '[' -e /etc/rc.conf ']'
+ . /etc/rc.conf
++ rc_shell=/sbin/sulogin
++ unicode=YES
++ rc_tty_number=12
+ '[' -d /etc/rc.conf.d ']'
+ _conf_d=/etc/init.d/../conf.d
+ _c=igmpproxy
+ '[' -n igmpproxy -a igmpproxy '!=' igmpproxy ']'
+ unset _c
+ sourcex -e /etc/init.d/../conf.d/igmpproxy.default
+ '[' -e = -e ']'
+ shift
+ '[' -e /etc/init.d/../conf.d/igmpproxy.default ']'
+ return 1
+ sourcex -e /etc/init.d/../conf.d/igmpproxy
+ '[' -e = -e ']'
+ shift
+ '[' -e /etc/init.d/../conf.d/igmpproxy ']'
+ . /etc/init.d/../conf.d/igmpproxy
++ IGMPPROXY_OPTS=
+ unset _conf_d
+ sourcex /lib/rc/sh/runit.sh
+ '[' /lib/rc/sh/runit.sh = -e ']'
+ . /lib/rc/sh/runit.sh
+ sourcex /lib/rc/sh/s6.sh
+ '[' /lib/rc/sh/s6.sh = -e ']'
+ . /lib/rc/sh/s6.sh
++ '[' -z '' ']'
++ s6_service_path=/var/svc.d/igmpproxy
+ sourcex /lib/rc/sh/start-stop-daemon.sh
+ '[' /lib/rc/sh/start-stop-daemon.sh = -e ']'
+ . /lib/rc/sh/start-stop-daemon.sh
+ sourcex /lib/rc/sh/supervise-daemon.sh
+ '[' /lib/rc/sh/supervise-daemon.sh = -e ']'
+ . /lib/rc/sh/supervise-daemon.sh
+ sourcex /etc/init.d/igmpproxy
+ '[' /etc/init.d/igmpproxy = -e ']'
+ . /etc/init.d/igmpproxy
++ config=/etc/igmpproxy.conf
++ name=igmpproxy
++ pidfile=/run/igmpproxy.pid
++ command=igmpproxy
++ command_args=' /etc/igmpproxy.conf'
++ procname=igmpproxy
+ yesno ''
+ '[' -z '' ']'
+ return 1
+ for _cmd in "$@"
+ '[' start '!=' status -a start '!=' describe ']'
+ '[' -n '' ']'
++ command -v cgroup_add_service
+ '[' cgroup_add_service = cgroup_add_service ']'
+ grep -qs /sys/fs/cgroup /proc/1/mountinfo
+ '[' -d /sys/fs/cgroup -a '!' -w /sys/fs/cgroup ']'
+ cgroup_add_service
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/cpu/tasks ']'
+ printf %d 0
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/cpuacct/tasks ']'
+ printf %d 0
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/cpuset/tasks ']'
+ printf %d 0
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/freezer/tasks ']'
+ printf %d 0
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/openrc/tasks ']'
+ printf %d 0
+ for d in /sys/fs/cgroup/*
+ '[' -w /sys/fs/cgroup/unified/tasks ']'
+ openrc_cgroup=/sys/fs/cgroup/openrc
+ '[' -d /sys/fs/cgroup/openrc ']'
+ cgroup=/sys/fs/cgroup/openrc/igmpproxy
+ mkdir -p /sys/fs/cgroup/openrc/igmpproxy
+ '[' -w /sys/fs/cgroup/openrc/igmpproxy/tasks ']'
+ printf %d 0
++ command -v cgroup_set_limits
+ '[' cgroup_set_limits = cgroup_set_limits ']'
+ cgroup_set_limits
+ local blkio=
+ '[' -n '' ']'
+ local cpu=
+ '[' -n '' ']'
+ local cpuacct=
+ '[' -n '' ']'
+ local cpuset=
+ '[' -n '' ']'
+ local devices=
+ '[' -n '' ']'
+ local hugetlb=
+ '[' -n '' ']'
+ local memory=
+ '[' -n '' ']'
+ local net_cls=
+ '[' -n '' ']'
+ local net_prio=
+ '[' -n '' ']'
+ local pids=
+ '[' -n '' ']'
+ return 0
++ command -v cgroup2_set_limits
+ '[' cgroup2_set_limits = cgroup2_set_limits ']'
+ '[' start = start ']'
+ cgroup2_set_limits
+ local cgroup_path
++ cgroup2_find_path
++ grep -qw cgroup2 /proc/filesystems
++ case "${rc_cgroup_mode:-hybrid}" in
++ printf /sys/fs/cgroup/unified
++ return 0
+ cgroup_path=/sys/fs/cgroup/unified
+ '[' -d /sys/fs/cgroup/unified ']'
+ rc_cgroup_path=/sys/fs/cgroup/unified/igmpproxy
+ '[' '!' -d /sys/fs/cgroup/unified/igmpproxy ']'
+ mkdir /sys/fs/cgroup/unified/igmpproxy
+ '[' -f /sys/fs/cgroup/unified/igmpproxy/cgroup.procs ']'
+ printf 0
+ '[' -z '' ']'
+ return 0
+ break
+ eval 'printf '\''%s\n'\'' '
++ printf '%s\n'
+ read _d
+ '[' -n '' ']'
+ read _d
+ '[' 0 -ne 0 ']'
+ unset _d
+ eval 'printf '\''%s\n'\'' '
++ printf '%s\n'
+ read _f
+ '[' -n '' ']'
+ read _f
+ '[' 0 -ne 0 ']'
+ unset _f
+ '[' -n '' ']'
+ '[' -n start ']'
+ '[' start = depend ']'
+ for _cmd in describe start stop status ${extra_commands:-$opts} $extra_started_commands $extra_stopped_commands
+ '[' describe = start ']'
+ for _cmd in describe start stop status ${extra_commands:-$opts} $extra_started_commands $extra_stopped_commands
+ '[' start = start ']'
++ command -v start
+ '[' start = start ']'
+ yesno
+ '[' -z '' ']'
+ return 1
+ for _cmd in $extra_stopped_commands
+ '[' cgroup_cleanup = start ']'
+ unset _cmd
+ case $1 in
+ verify_boot
+ '[' '!' -e /run/openrc/softlevel ']'
+ return 0
++ command -v start_pre
+ '[' start_pre = start_pre ']'
+ start_pre
+ '[' '!' -f /etc/igmpproxy.conf ']'
+ return 0
+ start
+ default_start
+ local func=ssd_start
+ case "$supervisor" in
+ ssd_start
+ '[' -z igmpproxy ']'
+ local _background=
+ ebegin 'Starting igmpproxy'
+ local _r
+ command ebegin 'Starting igmpproxy'
+ ebegin 'Starting igmpproxy'
* Starting igmpproxy ...+ _r=0
+ EINFO_LASTCMD=ebegin
+ export EINFO_LASTCMD
+ return 0
+ yesno ''
+ '[' -z '' ']'
+ return 1
+ yesno ''
+ '[' -z '' ']'
+ return 1
+ '[' -n '' ']'
+ '[' -n '' ']'
+ eval start-stop-daemon --start --exec igmpproxy --name igmpproxy --pidfile /run/igmpproxy.pid -- /etc/igmpproxy.conf
++ start-stop-daemon --start --exec igmpproxy --name igmpproxy --pidfile /run/igmpproxy.pid -- /etc/igmpproxy.conf
+ eend 0 'Failed to start igmpproxy'
+ local _r
+ command eend 0 'Failed to start igmpproxy'
+ eend 0 'Failed to start igmpproxy'
[ ok ]
+ _r=0
+ EINFO_LASTCMD=eend
+ export EINFO_LASTCMD
+ return 0
+ service_set_value command igmpproxy
+ '[' -n '' ']'
+ '[' -n /run/igmpproxy.pid ']'
+ service_set_value pidfile /run/igmpproxy.pid
+ '[' -n igmpproxy ']'
+ service_set_value procname igmpproxy
+ return 0
++ command -v start_post
+ '[' '' = start_post ']'
++ command -v cgroup_cleanup
+ '[' cgroup_cleanup = cgroup_cleanup ']'
+ '[' start = stop ']'
++ command -v cgroup2_remove
+ '[' cgroup2_remove = cgroup2_remove ']'
+ '[' start = stop ']'
+ '[' -z igmpproxy ']'
+ shift
+ continue 2
+ '[' -n '' ']'
+ exit 0 |
|
|
Back to top |
|
 |
SkyBeam n00b

Joined: 27 Nov 2006 Posts: 17 Location: Switzerland
|
Posted: Tue Dec 18, 2018 12:29 pm Post subject: Re: igmpproxy 0.2.1 don't creates pid |
|
|
anaksimandr wrote: | Hello.
In init script pidfile set like pidfile="/run/${RC_SVCNAME}.pid"
but there is nothing in /run like igmpproxy.pid
|
I think this is the culprit. As written here we should use procname instead of pidfile if the process backgrounds itself but does not write a PID file:
Quote: |
If the daemon backgrounds itself and does not create a PID file, use procname instead of pidfile. But, if your daemon has the option to run in the foreground, then you should do that instead (that would be the case in the previous item).
|
I think openrc is looking for the process name (procname) in the process table if no PID file can be found. But if the pidfile variable exists it will look for it and igmpproxy does not seem to write one. Actually the PID file is not needed so I even prefer not using one.
The solution is simply to comment the pidfile line in /etc/init.d/igmpproxy:
Code: |
#!/sbin/openrc-run
# Copyright 1999-2018 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
config="/etc/${RC_SVCNAME}.conf"
name="IGMPproxy"
# pidfile="/run/${RC_SVCNAME}.pid"
command="igmpproxy"
command_args="${IGMPPROXY_OPTS} ${config}"
procname="${RC_SVCNAME}"
start_pre() {
if [ ! -f "${config}" ]; then
eerror "Please create ${config} before starting ${name}!"
return 1
else
return 0
fi
}
|
Works just fine for me. _________________ SkyBeam :: the sky isn't the limit |
|
Back to top |
|
 |
|
|
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum
|
|