Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 7 Dec 2012 07:19:58 +0000
From:      Chris Rees <crees@FreeBSD.org>
To:        Paul Schmehl <pschmehl_lists@tx.rr.com>
Cc:        "freebsd-rc@freebsd.org" <freebsd-rc@freebsd.org>, FreeBSD Ports List <freebsd-ports@freebsd.org>
Subject:   Re: rc.subr questions
Message-ID:  <CADLo838rLLHrA0vn1enOwaFQB6Vc0Nt_9aQVFNQ3RMzw4LTdTQ@mail.gmail.com>
In-Reply-To: <42524AACF8B3EE83929D0673@utd71538.campus.ad.utdallas.edu>
References:  <DC59D265988CEDF1F3DC5C6D@utd71538.campus.ad.utdallas.edu> <CADLo838ty4_ryGLQo9h5Ze2oA0WXvX3Yc4vV9Ei9HjG0whLkfg@mail.gmail.com> <0FC50D96AC60C2D7BEFC786A@utd71538.campus.ad.utdallas.edu> <CADLo83_G2NrCU61MWfQC_Uos=Zp3SHEyrehFBqbLu-SuqCn2dA@mail.gmail.com> <42524AACF8B3EE83929D0673@utd71538.campus.ad.utdallas.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
On 6 December 2012 21:50, Paul Schmehl <pschmehl_lists@tx.rr.com> wrote:
> --On December 6, 2012 9:30:04 PM +0000 Chris Rees <crees@FreeBSD.org> wrote:
>
>> On 6 December 2012 21:10, Paul Schmehl <pschmehl_lists@tx.rr.com> wrote:
>>>
>>> --On December 6, 2012 8:45:50 PM +0000 Chris Rees <crees@FreeBSD.org>
>>> wrote:
>>>
>>>> [CC rc@]
>>>>
>>>> On 6 December 2012 20:36, Paul Schmehl <pschmehl_lists@tx.rr.com> wrote:
>>>>>
>>>>>
>>>>> I'm trying to figure out how to get an rc.subr script to start and
>>>>> stop a script.
>>>>>
>>>>> This works from the commandline (to start it):
>>>>> tclsh /usr/local/bin/dir/script -D -c /usr/local/etc/conffile
>>>>>
>>>>> I've tried various combinations of:
>>>>>
>>>>> command_interpreter
>>>>> argument_precmd
>>>>> command_args
>>>>>
>>>>> but I keep getting this error:
>>>>> unknown directive '/usr/local/bin/sguil-sensor/pads_agent.tcl'
>>>>>
>>>>> Doesn't matter if I make that string the val for command and don't use
>>>>> command_interpreter or do use command_interpreter.
>>>>>
>>>>> I've read the man page over and over, but I'm clueless as to how to use
>>>>> run_rc_script, which I *think* is the right way to call this script.
>>>>>
>>>>
>>>> Make the script executable
>>>
>>>
>>>
>>> It is.
>>>
>>>
>>> , put a shebang in; #!/usr/bin/env tclsh
>>>
>>> Here's the current script's starting lines:
>>>
>>> # !/bin/sh
>>> # Run tcl from users PATH \
>>> exec tclsh "$0" "$@"
>>>>
>>>>
>>>>
>>>> # !/bin/sh
>>>>
>>>>
>>>> . /etc/rc.subr
>>>>
>>>> name=tclshexample
>>>> rcvar=tclshexample_enable
>>>>
>>>> load_rc_config $name
>>>>
>>>> : ${tclshexample_enable=YES}
>>>>
>>>> command="/usr/local/bin/dir/script"
>>>> command_interpreter=tclsh
>>>> command_args="-D -c /usr/local/etc/conffile"
>>>>
>>>> run_rc_command $@
>>>>
>>>> http://www.bayofrum.net/~crees/scratch/tclshexample
>>>>
>>>> Would be much easier if you were to provide specifics or the actual
>>>> script :)
>>>>
>>>> Chris
>>>>
>>>
>>> Here's the rc script I'm working on.
>>>
>>> . /etc/rc.subr
>>>
>>> load_rc_config pads_agent
>>>
>>> # set defaults
>>>
>>> pads_agent_enable=${pads_agent_enable:-"NO"}
>>> pads_agent_conf=${pads_agent_conf:-"/usr/local/etc/sguil-sensor/pads_age
>>> nt.conf"} pads_agent_flags="${pads_agent_flags}:-"-D -c
>>> ${pads_agent_conf}"
>>>
>>> name="pads_agent"
>>> rcvar=pads_agent_enable
>>>
>>> command="/usr/local/bin/sguil-sensor/pads_agent.tcl"
>>> command_interpreter="tclsh"
>>> command_args=${pads_agent_flags}
>>>
>>> run_rc_command "$@"
>>>
>>> Here's the error I'm getting when I run start:
>>>
>>> /usr/local/etc/rc.d/pads_agent: WARNING: $command_interpreter tclsh !=
>>> /bin/sh
>>> Starting pads_agent.
>>> /usr/local/etc/rc.d/pads_agent: WARNING: $command_interpreter tclsh !=
>>> /bin/sh
>>> /usr/local/etc/rc.d/pads_agent: unknown directive
>>> '/usr/local/bin/sguil-sensor/pads_agent.tcl'.
>>> Usage: /usr/local/etc/rc.d/pads_agent
>>> [fast|force|one|quiet](start|stop|restart|rcvar|status|poll)
>>> /usr/local/etc/rc.d/pads_agent: WARNING: failed to start pads_agent
>>>
>>> I tried changing the interpreter to "/bin/sh" but I got the same error.
>>>
>>> Here's the perms on the script:
>>>
>>> # ls -lsa /usr/local/bin/sguil-sensor/pads_agent.tcl
>>> 12 -r-xr-xr-x  1 root  wheel  11662 Dec  6 18:31
>>> /usr/local/bin/sguil-sensor/pads_agent.tcl
>>
>>
>> The problem is I think that the idiomatic tclsh syntax is to use the
>> # !/bin/sh shebang followed by some compat stuff... which doesn't play
>>
>> nicely with rc's idea of how scripts should look.
>>
>> If instead we use procname, that should work better.
>>
>> http://www.bayofrum.net/~crees/scratch/tclshexample2
>>
>> Does your tclsh script daemonise?
>
>
> It's supposed to, but it fails.  Let's cease this discussion for now while I
> do some troubleshooting.  I think I have bigger problems than just the
> rc.subr stuff, and I don't want to waste any more of your time.
>

I hope you manage to fix it.  When you have, I'm happy to continue
helping you with the rc script.

Good luck,

Chris



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLo838rLLHrA0vn1enOwaFQB6Vc0Nt_9aQVFNQ3RMzw4LTdTQ>