[ic] Interchange as a System service.
John Foster
jfoster at augustmail.com
Wed Mar 16 10:10:12 EST 2005
On Monday 14 March 2005 06:17 pm, Daniel Davenport wrote:
> >>> andreb at techess.com 03/10/05 08:48PM >>>
> >
> > Hi all.. how do i setup interchange as a service to start up on the
> > different run levels..
> >
> > Andre
>
> (NOTE: this message describes how RH/Fedora does services. YMMV. If
> you use another flavor of Linux, i guarantee nothing about how well this
> stuff works.)
>
> The only thing "special" about services, as opposed to other daemons,
> is that a service has a script in /etc/init.d (and links in
> /etc/rc.d/rc[0-6].d) that can tell the daemon to start, stop, or
> whatever. You need a script like the ones in /etc/rc.d/init.d, but
> which instead of starting sshd or apache or whatever, starts
> interchange. It's not too hard to write....it can just be a shell
> script that takes a command as the first parameter/argument/whatever.
> Personally, since i'm not a whiz with shell scripts, i'll often just
> make a copy of one of the existing scripts and change the commands
> around to suit the service i need started. Replace
> '/usr/sbin/someotherd' with '/usr/local/interchange/bin/interchange',
> etc. :) Look at the various scripts in init.d; one is usually better
> than others for making these kinds of changes.
>
> (note: since IC usually runs as interch(ange)?, you might do better to
> just strip out the start and stop commands and put in what you usually
> put in to start IC. su -c and all.)
>
> The commands can be just about anything....apache, for example,
> responds to a "configtest" command--which runs just long enough to
> check/parse the config files, and doesn't disturb the already-running
> server. Helpful. :) If you want your service's script to be useful,
> you'll need to at least respond to 'start' and 'stop' commands.
> 'restart' would be good too.
>
> init.d scripts also have a couple of comment lines near the top of the
> file that describe the service and specify what runlevels the service
> should start in by default, and in what order it should start (relative
> to other programs in the same runlevel). If you look at other scripts
> in init.d, you'll see a line like
>
> # chkconfig: 2345 60 40
>
> That's the important one--it specifies the default runlevels, start
> order, and stop order for the service. The first number is really a
> string of digits, one for each default runlevel. '2345' means the
> service will start in all the standard runlevels, unless you tell it to
> do otherwise. (0, 1, and 6 are special. Don't set up a daemon to run
> in any of those runlevels.) The last two numbers are the start order
> and stop order respectively, should each be two digits, and can be
> anything from 00 to 99. Services with 00 as their start order will be
> started first, and 99 means it wil be started last. In the case of IC,
> make sure it starts after all of the services it depends on (httpd,
> postgres or mysqld, network, etc), and stops before any of them....or
> there will be trouble. Personally, i prefer that the numbers add up to
> 99 or 100....just because that helps make sure that what starts last
> stops first, and vice versa.
>
> Your safest bet is to use a line like
>
> #chkconfig: 2345 99 00
>
> This will make IC one of the last services to start, and one of the
> first to stop. Until you're comfortable with manipulating services,
> paranoia is not a bad thing.
>
> Another line you'll find useful is
>
> # description: Starts and stops the Interchange server.
>
> Whatever you put after description: will be shown in programs like
> system-config-services (or redhat-config-services, for the rh[8-9]
> folks) when you click on the service name. I'm not sure whether this
> line is really required (although i've never had a problem, `man
> chkconfig` suggests it is), but it can't hurt to include it.
>
> when your script is done, cp/mv it to /etc/rc.d/init.d/interchange.
> chmod it a-rwx,u=rx; and chown it to root.root. Then say "chkconfig
> --add interchange". That'll put the symlinks in the right places so
> that IC starts at the right time.
>
> Once your script is in init.d and properly chmodded, you can say
> "service interchange start". Guess what that does.
>
> /
> _______________________________________________
Seems like I used to do something like this years ago with Minivend. I fact I
still do. A good point to remember is "Never leave any white space at the
front of a line in an 'init.d' script". That means no indents or other neat
stuff.
--
John Foster
More information about the interchange-users
mailing list