本文共 3868 字,大约阅读时间需要 12 分钟。
本文将通过case语句,编写不同服务的启动脚本,并集成开机自启功能。以下是具体实现方法。
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="nginx"SCRIPTDIR="/usr/local/lnmp/nginx/sbin"# 检查是否存在关键库文件if [ -f /etc/init.d/functions ]; then source /etc/init.d/functionsfi# 定义进程判断文件PIDFILE="/usr/local/lnmp/nginx/logs/nginx.pid"# 定义功能模块start_Nginx() { if [ -f $PIDFILE ]; then echo "Nginx is running." else echo "Nginx is starting." $SCRIPTDIR/nginx > /dev/null /bin/true fi}stop_Nginx() { if [ -f $PIDFILE ]; then echo "Nginx is stopping." $SCRIPTDIR/nginx -s stop > /dev/null /bin/true else echo "Nginx is already stopped." /bin/true fi}restart_Nginx() { if [ -f $PIDFILE ]; then echo "Nginx is restarting." $SCRIPTDIR/nginx -s reopen > /dev/null /bin/true else echo "Failed to start Nginx." /bin/false fi}reload_Nginx() { if [ -f $PIDFILE ]; then echo "Nginx is reloading." $SCRIPTDIR/nginx -s reload > /dev/null /bin/true else echo "Failed to reload Nginx." /bin/false fi}# case语句实现命令解析case $1 in start) start_Nginx RETVAL=$? ;; stop) stop_Nginx RETVAL=$? ;; restart) restart_Nginx RETVAL=$? ;; reload) reload_Nginx RETVAL=$? ;; *) echo "Usage: $0 {start|stop|restart|reload}" exit 1 ;;esacexit $RETVAL
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="mysql"SCRIPTDIR="/usr/local/mysql/bin"# 定义功能模块start_Mysql() { if [ -f $PIDFILE ]; then echo "MySQL is running." else echo "MySQL is starting." $SCRIPTDIR/mysql.server start > /dev/null /bin/true fi}stop_Mysql() { if [ -f $PIDFILE ]; then echo "MySQL is stopping." $SCRIPTDIR/mysql.server stop > /dev/null /bin/true else echo "MySQL is already stopped." /bin/true fi}restart_Mysql() { if [ -f $PIDFILE ]; then echo "MySQL is restarting." $SCRIPTDIR/mysql.server restart > /dev/null /bin/true else echo "Failed to start MySQL." /bin/false fi}# case语句实现命令解析case $1 in start) start_Mysql RETVAL=$? ;; stop) stop_Mysql RETVAL=$? ;; restart) restart_Mysql RETVAL=$? ;; reload) echo "MySQL does not support reload." exit 1 ;; *) echo "Usage: $0 {start|stop|restart}" exit 1 ;;esacexit $RETVAL
#!/bin/bash# 定义服务名称和脚本所在目录SERVICENAME="rsync"SCRIPTDIR="/usr/bin"# 定义功能模块start_Rsync() { echo "Rsync is starting." $SCRIPTDIR/rsyncd --daemon > /dev/null /bin/true}stop_Rsync() { echo "Rsync is stopping." $SCRIPTDIR/rsyncd --stop > /dev/null /bin/true}# case语句实现命令解析case $1 in start) start_Rsync RETVAL=$? ;; stop) stop_Rsync RETVAL=$? ;; *) echo "Usage: $0 {start|stop}" exit 1 ;;esacexit $RETVAL
Nginx服务自启动配置
chmod a+x /etc/init.d/nginx
chkconfig --add nginxchkconfig --list nginx
chkconfig nginx on
MySQL服务自启动配置
chmod a+x /etc/init.d/mysql
chkconfig --add mysqlchkconfig --list mysql
chkconfig mysql on
Rsync服务自启动配置
chmod a+x /etc/init.d/rsync
chkconfig --add rsyncchkconfig --list rsync
chkconfig rsync on
运行级别文件结构
chkconfig: 2345 32 62description: Nginx is a http server!
ll /etc/rc.d/rc3.d/ | grep nginx
启动脚本优先级
ll /etc/rc.d/rc3.d/ | grep 32
Nginx服务管理
chkconfig --list nginx
chkconfig nginx off
MySQL服务管理
chkconfig --del mysql
Rsync服务管理
chkconfig rsync on
通过以上方法,可以轻松编写不同服务的启动关闭脚本,并实现开机自启动功能。
转载地址:http://lcwwz.baihongyu.com/