创建服务进程启动脚本:

如:/root/nginx
#!/bin/sh
#
# nginx - this script starts and stops the nginx daemin
#
# chkconfig:   - 85 15 
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server
# processname: nginx
# config:      /usr/local/nginx/conf/nginx.conf
# pidfile:     /usr/local/nginx/logs/nginx.pid
 
# Source function library.
. /etc/rc.d/init.d/functions
 
# Source networking configuration.
. /etc/sysconfig/network
 
# Check that networking is up.
[ "$NETWORKING" = "no" ] && exit 0
 
nginx="/usr/local/nginx/sbin/nginx"
prog=$(basename $nginx)
 
NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
 
lockfile=/var/lock/subsys/nginx
 
start() {
    [ -x $nginx ] || exit 5
    [ -f $NGINX_CONF_FILE ] || exit 6
    echo -n $"Starting $prog: "
    daemon $nginx -c $NGINX_CONF_FILE
    retval=$?
    echo
    [ $retval -eq 0 ] && touch $lockfile
    return $retval
}
 
stop() {
    echo -n $"Stopping $prog: "
    killproc $prog -QUIT
    retval=$?
    echo
    [ $retval -eq 0 ] && rm -f $lockfile
    return $retval
}
 
restart() {
    configtest || return $?
    stop
    start
}
 
reload() {
    configtest || return $?
    echo -n $"Reloading $prog: "
    killproc $nginx -HUP
    RETVAL=$?
    echo
}
 
force_reload() {
    restart
}
 
configtest() {
  $nginx -t -c $NGINX_CONF_FILE
}
 
rh_status() {
    status $prog
}
 
rh_status_q() {
    rh_status >/dev/null 2>&1
}
 
case "$1" in
    start)
        rh_status_q && exit 0
        $1
        ;;
    stop)
        rh_status_q || exit 0
        $1
        ;;
    restart|configtest)
        $1
        ;;
    reload)
        rh_status_q || exit 7
        $1
        ;;
    force-reload)
        force_reload
        ;;
    status)
        rh_status
        ;;
    condrestart|try-restart)
        rh_status_q || exit 0
            ;;
    *)
        echo $"Usage: $0 {start|stop|status|restart|condrestart|try-restart|reload|force-reload|configtest}"
        exit 2
esac
 
修改脚本权限:
chmod 755 脚本名称
例:chmod 755 /root/nginx
将脚本移到系统母进程:/etc/init.d目录下:
mv /root/nginx  /etc/init.d/nginx
添加系统启动项:
chkconfig --add nginx
在/etc/rc.d目录下:
init.d  rc(文件)  rc0.d  rc1.d  rc2.d  rc3.d  rc4.d  rc5.d  rc6.d  rc.local(文件)  rc.sysinit(文件)
这些目录分别表示:
init.d:系统服务
rc0.d:系统启动级别为:0级别中启动的服务进程
rc1.d:系统启动级别为:1级别中启动的服务进程
rc2.d:系统启动级别为:2级别中启动的服务进程
rc3.d:系统启动级别为:3级别中启动的服务进程
rc4.d:系统启动级别为:4级别中启动的服务进程
rc5.d:系统启动级别为:5级别中启动的服务进程
rc6.d:系统启动级别为:6级别中启动的服务进程
rc.local:自启动脚本,不管在那个级别都会启动
rc.sysinit的主要功能:
1、获取网络环境与主机类型
首先读取网络设置文件 /etc/sysconfig/network,获取主机名称与
默认网关(GATEWAY)等网络环境。
2、测试与载入内存设备/proc及USB设备/sys
除载入内存设备/proc之外,还会主动检测系统上是否有USB的设备,
若有,则会主动加载USB的驱动程序,并且尝试载入USB的文件系统。
3、决定是否启动SELINUX
现在,很多版本都加入了美国国家安全局开发的security enhance 
linux 套件,这个SELINUX可以强化LINUX操作环境的安全性,不过
对于新手来说,不是很容易,因此,我们建议大家先不要启动,无
论如何,在这个阶段,我们可以分析SELINUX是否要启动。
4、接口设备的检测与即插即用(PnP)参数的测试
根据核心在启动时检测的结果(/proc/sys/kernel/modprobe)开始进行
ide / scsi / 网络 /音效等接口设备的检测,以及利用以加载的核心
模块进行PNP设备的参数测试。
5、用户自定义模块的加载
用户可以在/etc/sysconfig/modules/*.modules加入自定义的模块,
此时会加载到系统中。
6、加载核心的相关设置
系统会主动去读取/etc/sysctl.conf文件的设置值,使核心功能符合
我们的要求。
7、设置系统时间(clock)
8、设置终端控制台(console)的字形
9、设置RAID与LVM等硬盘功能
10、以FSCK检验磁盘文件系统
11、进行磁盘配额quota的转换(非必要)
12、重新以可读取模式载入系统磁盘
13、启动quota功能
14、启动系统随机数设备(产生随机数功能)
15、清除启动过程中的临时文件
16、将启动相关信息加载到/var/log/dmesg文件中。
 
 
可将启动脚本软链接到/etc/rc.d/rc*.d目录下,其中*表示系统启动级别,通过中间的数值,可安排服务进程的启动顺序
数值越得,优先级越高,启动越早,一般不建议修改服务进程启动顺序
ln -s /etc/init.d/nginx /etc/rc.d/rc0.d/S90nginx
 
修改服务进程启动级别:
chkconfig 服务进程名称 on: 3\4\5级系统时启动
chkconfig --level 系统级别 服务进程名称 on