Help With rc.d Script
Drew Tomlinson
drew at mykitchentable.net
Thu Jun 11 02:09:35 UTC 2009
Paul Schmehl wrote:
> --On June 10, 2009 6:12:23 PM -0700 Drew Tomlinson
> <drew at mykitchentable.net> wrote:
>
>> I installed a software named "urchin" on my FBSD 7.2 box.
>> Unfortunately, it didn't come with an rc.d script to automate startup
>> and shutdown. And even more unfortunately, I can't seem to get my head
>> around the concepts in "Practical rc.d scripting in BSD"
>> (http://www.freebsd.org/doc/en/articles/rc-scripting/rcng-daemon.html).
>>
>> This is the command that starts the app:
>>
>> /usr/local/urchin/bin/urchinctl
>>
>> And here are the options:
>>
>> Usage: urchinctl [-v] [-h] [-e] [-s|-w] [-p port] action
>> where:
>> -v prints out the version of urchinctl
>> -h prints out this information
>> -e activates encryption (SSL) in the webserver
>> -s performs the action on the Urchin scheduler ONLY
>> -w performs the action on the Urchin webserver ONLY
>> -p specifies the port for the webserver to listen on
>>
>> action is either: start, stop, restart, or status
>>
>> start: starts the webserver and scheduler
>> stop: stops the webserver and scheduler
>> restart: stops and then starts the webserver and scheduler
>> status: prints out whether the webserver and scheduler are
>> running
>>
>> By default, the action is performed on both the webserver and the
>> schedulers unless the -s or -w options are specified
>>
>> All I want to do is create a script within the rc.d framework that runs
>> "/usr/local/urchin/bin/urchinctl start" when the system boots and
>> "/usr/local/urchin/bin/urchinctl stop" when the system shuts down.
>>
>> Following the examples in the guide mentioned above, here is my attempt
>> at that file:
>>
>> # !/bin/sh
>> # PROVIDE: urchin
>> # REQUIRE: NETWORKING
>> # KEYWORD: shutdown
>> #
>> # Add the following line to /etc/rc.conf to enable urchin:
>> # urchin_enable="YES" (bool): Set to "NO" by default.
>> # Set it to "YES" to enable urchin.
>> . /etc/rc.subr
>> name="urchin"
>> rcvar=`set_rcvar`
>> command="/usr/local/urchin/bin/urchinctl "
>> eval "${rcvar}=\${${rcvar}:-'NO'}"
>> load_rc_config $name
>> run_rc_command "$1"
>>
>> I have also ensured that 'urchin_enable="YES"' is in /etc/rc.conf.
>> However when I run the rc.d script, the urchinctl appears to run but
>> doesn't like whatever arguments that are passed. See this output:
>>
>> urchin# ./urchin-server start
>> Starting urchin.
>>
>> Usage: urchinctl [-v] [-h] [-e] [-s|-w] [-p port] action
>> <snipped rest of options already shown above>
>>
>> I'm sure I'm missing some simple concept. I'd really appreciate a kick
>> in the right direction.
>>
>
> Where is urchin located? /usr/local/bin? /usr/local/bin/urchin/bin?
> Or somewhere else? Is urchinctl a shell or perl script?
There is no actual "urchin" as far as I know. The control file is
/usr/local/urchin/bin/urchinctl. It is a executable file:
urchin# file /usr/local/urchin/bin/urchinctl
/usr/local/urchin/bin/urchinctl: ELF 32-bit LSB executable, Intel 80386,
version 1 (FreeBSD), statically linked, stripped
After running "/usr/local/urchin/bin/urchinctl start", I have these
related processes:
urchin# ps acux | grep urchin
root 70937 0.0 0.0 3184 1996 ?? Ss 7:00PM 0:00.01 urchinwebd
nobody 70938 0.0 0.0 3184 2000 ?? I 7:00PM 0:00.00 urchinwebd
nobody 70939 0.0 0.0 3184 2000 ?? I 7:00PM 0:00.00 urchinwebd
nobody 70940 0.0 0.0 3184 2000 ?? I 7:00PM 0:00.00 urchinwebd
nobody 70941 0.0 0.0 3184 2000 ?? I 7:00PM 0:00.00 urchinwebd
nobody 70942 0.0 0.0 3184 2000 ?? I 7:00PM 0:00.00 urchinwebd
nobody 70944 0.0 0.0 1460 720 ?? Ss 7:00PM 0:00.03 urchind
nobody 70946 0.0 0.0 1332 668 ?? Is 7:00PM 0:00.51 urchind
And conversely, "/usr/local/urchin/bin/urchinctl stop" removes all of
the above processes.
Thanks,
Drew
--
Be a Great Magician!
Visit The Alchemist's Warehouse
http://www.alchemistswarehouse.com
More information about the freebsd-questions
mailing list