[CentOS] best way to start and shutdown programs in CentOS?

Wed Nov 24 14:33:56 UTC 2010
Hakan Koseoglu <hakan at koseoglu.org>

On 24 November 2010 14:20, killscript <killscript at gmail.com> wrote:
> Les Mikesell wrote:
>> The RedHat/Centos way of doing things is to have init scripts in
>> /etc/rc.d/init.d that take at least start, stop, and restart as arguments for
>> each program that should start automatically.  Then for the runlevels where you
>> want them to start you have a symlink where the name starts with S and the rest
>> is a number to make it sort alphabetically into the order that things should
>> start in /etc/rc?.d (where the ? is the runlevel).  Likewise add links starting
>> with 'K' in the levels where the process should be stopped.    There is a
>> convention for comments in the scripts so that 'checkconfig program on' can make
>> the links for you.  Look through some of the other scripts to see how they work.
>
> Sorry for the stupid question here, but does the /etc/initd./scriptname
> file "know" about these symlinks because of a particular comment in there?
Copied from the man file for chkconfig:

RUNLEVEL FILES
       Each service which should be manageable by chkconfig needs two
or more commented lines added to its  init.d  script.  The  first
       line  tells chkconfig what runlevels the service should be
started in by default, as well as the start and stop priority levels.
       If the service should not, by default, be started in any
runlevels, a - should be used in place of the runlevels list.  The
sec-
       ond line contains a description for the service, and may be
extended across multiple lines with backslash continuation.

       For example, random.init has these three lines:
       # chkconfig: 2345 20 80
       # description: Saves and restores system entropy pool for \
       #              higher quality random number generation.
       This  says that the random script should be started in levels
2, 3, 4, and 5, that its start priority should be 20, and that its
       stop priority should be 80.  You should be able to figure out
what the description says; the \ causes the line to be  continued.
       The extra space in front of the line is ignored.

Basically, create your file by taking one of the files as a sample and
place it in /etc/init.d.
For example, I've copied /etc/init.d/vncserver to /etc/init.d/sample and ran
[root at hakan init.d]# chkconfig --add sample
[root at hakan init.d]# chkconfig --list|grep sample
sample          0:off   1:off   2:off   3:off   4:off   5:off   6:off

Now my sample is there but won't run at all but it's all there.
[root at hakan init.d]# chkconfig sample on
[root at hakan init.d]# chkconfig --list|grep sample
sample          0:off   1:off   2:on    3:on    4:on    5:on    6:off

Now it's on for all of the levels in the comment included in the file.
Nevertheless, I could have overriden that with the ckconfig --level
<levels> <name> on command options to run on other levels.

[root at hakan etc]# find rc* -iname *sample*|sort
rc.d/init.d/sample
rc.d/rc0.d/K35sample
rc.d/rc1.d/K35sample
rc.d/rc2.d/S91sample
rc.d/rc3.d/S91sample
rc.d/rc4.d/S91sample
rc.d/rc5.d/S91sample
rc.d/rc6.d/K35sample

and the file comment looks like below which matches the above, startup
priority is 91, kill priority is 35. It will run on all normal levels
since it's not defined, excluding 1 (single user), 0 (shutdown) and 6
(reboot).

# chkconfig: - 91 35

I better remove this sample from my startup :)
-- 
Hakan (m1fcj) - http://www.hititgunesi.org