Date: Thu, 6 Dec 2012 21:30:04 +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: <CADLo83_G2NrCU61MWfQC_Uos=Zp3SHEyrehFBqbLu-SuqCn2dA@mail.gmail.com> In-Reply-To: <0FC50D96AC60C2D7BEFC786A@utd71538.campus.ad.utdallas.edu> References: <DC59D265988CEDF1F3DC5C6D@utd71538.campus.ad.utdallas.edu> <CADLo838ty4_ryGLQo9h5Ze2oA0WXvX3Yc4vV9Ei9HjG0whLkfg@mail.gmail.com> <0FC50D96AC60C2D7BEFC786A@utd71538.campus.ad.utdallas.edu>
next in thread | previous in thread | raw e-mail | index | archive | help
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_agent.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? You'll need to use daemon(8) to start it otherwise. Also, you'll have to fiddle with procname; use %%TCLSH%% in a port and put SUB_LIST+= TCLSH=${TCLSH} into the Makefile. (Obviously also change the default to NO as well :) Chris
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?CADLo83_G2NrCU61MWfQC_Uos=Zp3SHEyrehFBqbLu-SuqCn2dA>