免責事項:この記事はブロガーオリジナル記事です、続くBY-SAのCC 4.0を著作権契約、複製、元のソースのリンクと、この文を添付してください。
説明
ケース特別に書かれた文サービスの起動スクリプトの
二つの例
さまざまな方法:RHEL6のRHEL7 /etc/init.dの経営スタイルと経営スタイルのsystemed
説明:これは、関連する演習を通ってくるためだけにあるの使用のケースをマスターします
注記について:どちら systemdに管理することにより、及びませんでした起動スクリプトは/etc/init.d/の下に置くことができ、手動で完了する必要があります提供!
スクリプト(1)nginxの起動スクリプトを開発し、カイからのブートを追加します
需求:通过case脚本模拟nginx服务启动关闭
/etc/init.d/nginx {start|stop|reopen|reload}
#!/bin/bash
# 开机启动顺序
# ll /etc/rc.d/rc3.d/|grep 22 -->22可以(数字越靠前,优先级越高)-->开机和关闭的顺序
# chkconfig: 2345 32 62
# description: Nginx is a http server!
# 思路:定义三个模块(函数),然后case语句调用模块,实现相应的功能!
#(1)判断shell自带的库函数是否存在-->有则加载
[ -f /etc/init.d/functions ] && source /etc/init.d/functions
#(2)判断进程是否开启(nginx是否开启)-->pid文件-->里面有进程号或者端口(不靠谱)
pid_file=/usr/local/lnmp/nginx/logs/nginx.pid
#(3)定义函数-->模块
#(1)开启服务
Start_Nginx(){
#(1)判断pid是否存在,存在则说明服务运行
if [ -f $pid_file ];then
echo "Nginx is running."
else
#(2)否则启动nginx
/usr/local/lnmp/nginx/sbin/nginx &> /dev/null
action "Nginx is starting." /bin/true
fi
}
#(2)关闭服务
Stop_Nginx(){
#(1)判断pid是否存在-->存在则关闭
if [ -f $pid_file ];then
/usr/local/lnmp/nginx/sbin/nginx -s stop &> /dev/null
action "Nginx is stopped." /bin/true
else
#(2)不存在,否则表明已经关闭
action "Nginx is stopped." /bin/true
fi
}
#(3)重启服务
Restart_Nginx(){
#(1)判断pid是否存在-->只有pid存在(服务开启)才会重新加载
if [ -f $pid_file ];then
/usr/local/lnmp/nginx/sbin/nginx -s reopen &> /dev/null
action "Nginx is restarted." /bin/true
else
#(2)提示用户
echo "Can't Open $pid_file"
fi
}
#(4)重新加载服务
Reload_Nginx(){
#(1)判断pid是否存在-->只有pid存在(服务开启)才会重新加载
if [ -f $pid_file ];then
/usr/local/lnmp/nginx/sbin/nginx -s reload &> /dev/null
action "Nginx is reload." /bin/true
else
#(2)提示用户服务本身没有开启
echo "Can't Open $pid_file"
fi
}
##############case语句###################
case $1 in
start)
Start_Nginx
RETVAL=$?
;;
stop)
Stop_Nginx
RETVAL=$?
;;
restart)
# 另外一中方法-->先stop,然后再start-->这里用了系统脚本自带的
Restart_Nginx
RETVAL=$?
;;
reload)
Reload_Nginx
RETVAL=$?
;;
*)
# 错误提示
echo "USAGE:$0 {start|stop|restart|reload}"
exit 1
esac
exit $RETVAL
ブート
chmod a+x /etc/init.d/nginx
[root@server1 init.d]# ll /etc/rc.d/rc3.d/
total 0
lrwxrwxrwx. 1 root root 20 Aug 14 18:56 K50netconsole -> ../init.d/netconsole
lrwxrwxrwx. 1 root root 17 Aug 14 18:56 S10network -> ../init.d/network
lrwxrwxrwx 1 root root 15 Sep 2 18:57 S32nginx -> ../init.d/nginx
lrwxrwxrwx. 1 root root 15 Aug 14 18:56 S97rhnsd -> ../init.d/rhnsd
# 开启和关闭对应的数字没有被占用即可!
chkconfig --add nginx
chkconfig --list nginx
# 开机自启动
chkconfig nginx on
# reboot --->测试!
# 不用vim /etc/rc.d/rc.local 的方式编辑的方式!
フォロー
#(1)小细节
把/usr/local/lnmp/nginx/sbin/nginx命令作为一个变量存储,然后下面引用
#(2) 把冗余的封装成一个函数-->某个名称执行是否成功
wzj(){
if [ $RETVAL - eq 0 ];then
action "Nginx is $1" /bin/true
else
action "Nginx is't $1" /bin/false
fi
}
# 调用方式--->传递参数
wzj $1
# 7个运行级别对应的启动脚本! --> /etc/目录下
drwxr-xr-x. 2 root root 77 Sep 2 18:55 rc0.d
drwxr-xr-x. 2 root root 77 Sep 2 18:55 rc1.d
drwxr-xr-x. 2 root root 77 Sep 2 18:57 rc2.d
drwxr-xr-x. 2 root root 77 Sep 2 18:57 rc3.d
drwxr-xr-x. 2 root root 77 Sep 2 18:57 rc4.d
drwxr-xr-x. 2 root root 77 Sep 2 18:57 rc5.d
drwxr-xr-x. 2 root root 77 Sep 2 18:55 rc6.d
# 含义
等级0表示:表示关机
等级1表示:单用户模式
等级2表示:无网络连接的多用户命令行模式
等级3表示:有网络连接的多用户命令行模式
等级4表示:不可用
等级5表示:带图形界面的多用户模式
等级6表示:重新启动
ランレベルのファイル
# 每个被chkconfig管理的服务需要在对应的init.d下的脚本加上两行或者更多行的注释
# chkconfig: 2345 32 62
# description: Nginx is a http server!
(1)第一行告诉chkconfig缺省启动的运行级以及启动和停止的优先级,如果某服务缺省不在任何运行级启动,那么使用 – 代替运行级。
(2)第二行对服务进行描述,可以用\ 跨行注释
# 数字越靠前,关闭越靠前!
###########################################
# 验证:如何下次开机确定是再32开启和62关闭
# 本质创建连接文件
[root@server1 init.d]# ll /etc/rc3.d/ |grep 32
lrwxrwxrwx 1 root root 15 Sep 2 18:57 S32nginx -> ../init.d/nginx #Start
頻繁に使用するコマンド
chkconfig --del nginx
chkconfig --list nginx # 查看此服务的选项
chkconfig --add nginx # 加入开机管理中
chkconfig nginx off # 开机不自启
ll /etc/rc3.d/ | grep nginx # 查看优先级,以及是否创建对应的软链接
chkconfig nginx on # 开机自启
(2)のMySQL
要件:関数は、if文、case文は、MySQL近いスクリプトを起動し、シングル・インスタンスまたはマルチインスタンスの準備を達成するために!
(3)のrsync --->時間がありません
システムスクリプト学習の/etc/init.d/networkを:
#(1)用双引号
case "$1" in
#(2)用命令回传码
rc=$?