Pidfile generated by /usr/sbin/daemon not usable by rc.d script
Adam Lindberg
adam.lindberg at wooga.net
Wed Jun 1 10:13:31 UTC 2016
Sorry for the late reply.
What we observed was that the `read _pid _junk < $_pidfile` line did indeed work on the command line, after sourcing /etc/rc.subr. For some strange reason it seems not to work from inside the service script for us.
Cheers,
Adam
--
Adam Lindberg | Backend Engineer
Wooga GmbH | Saarbrücker Str. 38 | D-10405 Berlin
Place of business: Berlin
Registered at the local court Berlin-Charlottenburg, HRB 117846 B
Managing Directors: Jens Begemann, Philipp Möser, Jan Miczaika
> On 26 May 2016, at 12:10 , Ian Smith <smithi at nimnet.asn.au> wrote:
>
> In freebsd-questions Digest, Vol 625, Issue 4, Message: 19
> On Wed, 25 May 2016 20:26:56 +0100 RW <rwmaillists at googlemail.com> wrote:
>> On Wed, 25 May 2016 17:12:36 +0200
>> Adam Lindberg wrote:
>>
>>> Hi,
>>>
>>> I don?t know what powerd is and how it factors into this. :-)
>>
>> It's an example of a daemon that generates a pid file without a
>> newline, and yet "stop" and "status" work.
>>
>> It turns out that /etc/rc.d/powerd doesn't define pidfile, in which
>> case rc.subr finds the pid from the output of ps. So it's not a
>> counter-example and it does appear to be a bug that rc.subr can't cope
>> with a pid file without a newline.
>>
>> You could use the same method, but using sed seems safer.
>
> Just as another data point, from a 9.3 system (if relevant), where the
> majority of pidfiles have no trailing newline; no obvious consistency:
>
> root at x200:~ # sh -c 'for i in /var/run/*.pid ; do echo $i; hd $i; done'
> /var/run/consolekit.pid
> 00000000 39 31 31 0a |911.|
> 00000004
> /var/run/cron.pid
> 00000000 38 35 31 |851|
> 00000003
> /var/run/devd.pid
> 00000000 34 32 37 |427|
> 00000003
> /var/run/dhclient.em0.pid
> 00000000 33 34 38 |348|
> 00000003
> /var/run/moused.pid
> 00000000 37 31 39 |719|
> 00000003
> /var/run/ntpd.pid
> 00000000 36 39 32 |692|
> 00000003
> /var/run/powerd.pid
> 00000000 36 39 35 |695|
> 00000003
> /var/run/sendmail.pid
> 00000000 38 32 34 0a 2f 75 73 72 2f 73 62 69 6e 2f 73 65 |824./usr/sbin/se|
> 00000010 6e 64 6d 61 69 6c 20 2d 4c 20 73 6d 2d 6d 74 61 |ndmail -L sm-mta|
> 00000020 20 2d 62 64 20 2d 71 33 30 6d 20 2d 4f 44 61 65 | -bd -q30m -ODae|
> 00000030 6d 6f 6e 50 6f 72 74 4f 70 74 69 6f 6e 73 3d 41 |monPortOptions=A|
> 00000040 64 64 72 3d 6c 6f 63 61 6c 68 6f 73 74 0a |ddr=localhost.|
> 0000004e
> /var/run/sshd.pid
> 00000000 38 30 31 0a |801.|
> 00000004
> /var/run/syslog.pid
> 00000000 35 39 30 |590|
> 00000003
>
> check_pidfile in /etc/rc.subr (at 9.3 and in head I see) uses:
> read _pid _junk < $_pidfile
> which extracts pids ok with or without the newline. Don't suppose the
> behaviour of read in sh(1) might have changed in terms of separating
> words or in whitespace reckoning? Otherwise this is rather mysterious.
>
> cheers, Ian
More information about the freebsd-questions
mailing list