On 02/03/2012 01:55 AM, Dean Takemori wrote:
> I'm trying to setup multiple instances of rsyslog (one for kernel
> messages) using lfs-bootscripts-20120116 and running into some
> problems.
>
> I'm using rsyslogd 5.8.6, which is designed with multiple instance
> support. I've set up one configuration file (/etc/rsysklog.conf)
> for the kernel logger and one for the system logger (/etc/rsyslog.conf)
>
> rsyslogd's
> -i flag specifies the pid file used and
> -f specifies the configuration file.
>
>> root:~# source /lib/lsb/init-functions
>>
>> root:~# start_daemon -p /run/rsyslogd.pid /sbin/rsyslogd -i
>> /run/rsyslogd.pid -f /etc/rsyslog.conf
>> root:~# echo $?
>> 0
> Now let's check:
>
>> root:~# ps xa | grep rsyslogd
>> 8045 ? Sl 0:00 /sbin/rsyslogd -i /run/rsyslogd/pid -f
>> /etc/rsyslog.conf
>> 8131 tty1 s+ 0:00 grep rsyslog
>>
>> root:~# stausproc -p /run/rsyslogd.pid /rsbin/rsyslogd
>> rsyslogd is running with Process ID(s) 8045
>>
>> root:# cat /run/rsyslogd.pid
>> 8045
> So far so good.
>
> But now let's try running the second instance.
>
>> root:~# start_daemon -p /run/rsysklogd.pid /sbin/rsyslogd -i
>> /run/rsysklogd.pid -f /etc/rsysklog.conf
>> root:~# echo $?
>> 0
> and now check:
>> root:~# ps xa | grep rsyslogd
>> 8045 ? Sl 0:00 /sbin/rsyslogd -i /run/rsyslogd.pid -f
>> /etc/rsyslog.conf
>> 8133 tty1 s+ 0:00 grep rsyslog
>
> What?
>
> Note that rsyslog behaves as expected:
>
>> root:~# sbin/rsyslogd -i /run/rsysklogd.pid -f /etc/rsysklog.conf
>> root:~# echo $?
>> 0
>>
>> root:~# ps xa | grep rsyslogd
>> 8045 ? Sl 0:00 /sbin/rsyslogd -i /run/rsyslogd.pid -f
>> /etc/rsyslog.conf
>> 8149 ? Sl 0:00 /sbin/rsyslogd -i /run/rsysklogd.pid -f
>> /etc/rsysklog.conf
>> 8155 tty1 s+ 0:00 grep rsyslog
>>
>> root:~# cat /run/rsyslogd.pid
>> 8045
>> root:~# cat /run/rsysklogd.pid
>> 8149
>
> So far, I think I've tracked the problem down to statusproc() not correctly
> using the pidfile it's given.
>
> Namely: this is correct
>
>> root:~# statusproc -p /run/rsyslogd.pid /sbin/rsyslogd
>> rsyslogd is running with Process ID(s) 8045
>>
>> root:~# cat /run/rsyslogd.pid
>> 8045
> But this is not
>> root:~# statusproc -p /run/rsysklogd.pid /sbin/rsyslogd
>> rsyslogd is running with Process ID(s) 8045
>>
>> root:~# cat /run/rsysklogd.pid
>> 8149
>
>
>
> BTW: statusproc() defined in /lib/lsb/init-functions has an "exit 1" just
> after
> it prints its Usage statement; shouldn't this be a "return 1" instead?
>
> BTW2: statusproc()'s Usage statement says :
> echo "Usage: [-p pidfile] statusproc {program}"
> Shouldn't this be this?
> echo "Usage: statusproc [-p pidfile] {program}"
Yes, statusproc() looks broken. Might it be better to use pidofproc()
directly where possible? Not sure that statusproc() should be needed any
longer. I haven't had the time to dig too deep into the wrapper
functions since the rewrite. I'll have a look at them later today, but
hopefully Bruce can chime in here today as well. Not sure about the exit
vs return.
-- DJ Lucas
--
This message has been scanned for viruses and
dangerous content, and is believed to be clean.
--
http://linuxfromscratch.org/mailman/listinfo/lfs-dev
FAQ: http://www.linuxfromscratch.org/faq/
Unsubscribe: See the above information page