Saturday, June 29, 2019

Re: Correct pexp variable for a shell script

On 6/29/19 8:46 AM, Antoine Jacoutot wrote:
> On Sat, Jun 22, 2019 at 02:14:12PM -0400, Jacob Adams wrote:
>> On 6/22/19 12:43 PM, Antoine Jacoutot wrote:
>>> On Sat, Jun 22, 2019 at 10:42:39AM -0400, Jacob Adams wrote:
>>>> On 6/22/19 7:05 AM, Antoine Jacoutot wrote:
>>>>> On Fri, Jun 21, 2019 at 03:57:41PM -0400, Jacob Adams wrote:
>>>>>> I've got a shell script I'd like to run as a system service. Due to the
>>>>>> 16 character limitation on pgrep and the -x flag that rc.subr passes to
>>>>>> check by default, I can't get check or stop to work correctly. The
>>>>>> problem is that the process name looks like "/bin/sh
>>>>>> /usr/local/bin/script.sh" which, even if passed to pgrep, won't match
>>>>>> when -x is used.
>>>>>>
>>>>>> My rc.d script currently looks like this:
>>>>>>
>>>>> Hi.
>>>>>
>>>>> That should not be an issue, that's why pexp is used for.
>>>>> But without more context it's hard to know how to help you.
>>>>>
>>>>> I can match sh scripts without issue:
>>>>> $ pgrep -xf "/bin/sh /etc/gdm/Xsession /usr/local/bin/gnome-session"
>>>>> 77289
>>>>>
>>>>> Are you sure your entire process line is "bin/sh /usr/local/bin/authmail"?
>>>>> We don't run into the 16 chars limitation when using -xf
>>>> Here's what I was seeing that led me to that conclusion:
>>>>
>>>> rukey$ ps aux | grep authmail
>>>> root     51889  0.0  0.1   724   568 p0- Ip    Fri12AM    0:00.01
>>>> /bin/sh /usr/local/bin/authmail
>>>> jacob    25510  0.0  0.2   272   892 p0  S+p   10:36AM    0:00.01 grep
>>>> authmail
>>>> rukey$ pgrep -f /bin/sh /usr/local/bin/authmail
>>>> 51889
>>>> rukey$ pgrep -xf /bin/sh /usr/local/bin/authmail
>>>>
>>>>
>>>> However, I didn't think to quote it. that seems to fix it:
>>>>
>>>> rukey$ pgrep -xf "/bin/sh /usr/local/bin/authmail"
>>>> 51889
>>>>
>>>> It appears that rc.subr uses quotes, but:
>>>>
>>>> rukey# pgrep -xf "/bin/sh /usr/local/bin/authmail"
>>>> 51889
>>>> rukey# rcctl check authmail
>>>> authmail(failed)
>>>> rukey#
>>>>
>>>> Any idea what could be going wrong here?
>>> Dunno, run rcctl in debug mode.
>>
>> rukey# ps ux | grep authmail
>> root     93772  0.0  0.2   272   892 p0  S+p    2:10PM    0:00.01 grep
>> authmail
>> rukey# rcctl -d start authmail
>> doing _rc_parse_conf
>> doing _rc_quirks
>> authmail_flags empty, using default ><
>> doing _rc_parse_conf /var/run/rc.d/authmail
>> doing _rc_quirks
>> doing rc_check
>> authmail
>> doing rc_start
>> doing _rc_wait start
>> doing rc_check
>> doing rc_check
> Can you share you /var/run/rc.d/authmail file please.


That seems to be the problem


daemon_class=daemon
daemon_flags=
daemon_rtable=0
daemon_timeout=30
daemon_user=root
pexp=/usr/local/bin/authmail.sh


Deleting that file and restarting authmail fixed the issue, allowing me
to start authmail successfully


Thanks for your help!


Jacob

No comments:

Post a Comment