创建服务进程启动脚本:
如:/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