案例十:shell编写nginx服务启动程序
使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的服务控制脚本。 |
选项有:
- start 启动
- stop 停止
- reload 重载
- restart 重启
- status 状态
- test 检查配置文件
创建脚本文件并添加执行权限
- touch /etc/init.d/nginx
- chmod +x /etc/init.d/nginx
编写脚本内容
- #!/bin/bash
- # chkconfig: - 85 15
- # description: Nginx server control script
- # processname: nginx
- # config file: /usr/local/nginx/conf/nginx.conf
- # pid file: /usr/local/nginx/logs/nginx.pid
- #
- # eastmoney public tools
- # version: v1.0.0
- # create by XuHoo, 2016-9-14
- #
- # source function library
- . /etc/rc.d/init.d/functions
- NGINX_NAME="nginx"
- NGINX_PROG="/usr/local/sbin/nginx"
- NGINX_PID_FILE="/usr/local/nginx/logs/nginx.pid"
- NGINX_CONF_FILE="/usr/local/nginx/conf/nginx.conf"
- NGINX_LOCK_FILE="/var/lock/subsys/nginx.lock"
- # check current user
- [ "$USER" != "root" ] && exit 1
- start() {
- status
- if [[ $? -eq 0 ]]; then
- echo $"Nginx (PID $(cat $NGINX_PID_FILE)) already started."
- return 1
- fi
- echo -n $"Starting $NGINX_NAME: "
- daemon $NGINX_PROG -c $NGINX_CONF_FILE
- retval=$?
- echo
- [ $retval -eq 0 ] && touch $NGINX_LOCK_FILE
- return $retval
- }
- stop() {
- status
- if [[ $? -eq 1 ]]; then
- echo "Nginx server already stopped."
- return 1
- fi
- echo -n $"Stoping $NGINX_NAME: "
- killproc $NGINX_PROG
- retval=$?
- echo
- [ $retval -eq 0 ] && rm -f $NGINX_LOCK_FILE
- return $retval
- }
- restart() {
- stop
- sleep 1
- start
- retval=$?
- return $retval
- }
- reload() {
- echo -n $"Reloading $NGINX_NAME: "
- killproc $NGINX_PROG -HUP
- retval=$?
- echo
- return $retval
- }
- status() {
- netstat -anpt | grep "/nginx" | awk '{print $6}' &> /dev/null
- if [[ $? -eq 0 ]]; then
- if [[ -f $NGINX_LOCK_FILE ]]; then
- return 0
- else
- return 1
- fi
- fi
- return 1
- }
- _status() {
- status
- if [[ $? -eq 0 ]]; then
- state=`netstat -anpt | grep "/nginx" | awk '{ print $6 }'`
- echo $"Nginx server status is: $state"
- else
- echo "Nginx server is not running"
- fi
- }
- test() {
- $NGINX_PROG -t -c $NGINX_CONF_FILE
- retval=$?
- return $retval
- }
- case "$1" in
- start)
- start
- ;;
- stop)
- stop
- ;;
- reload)
- reload
- ;;
- restart)
- restart
- ;;
- status)
- _status
- ;;
- test)
- test
- ;;
- *)
- echo "Usage: { start | stop | reload | restart | status | test }"
- exit 1
- esac
将脚本添加到系统服务并设置开机启动
- chkconfig --add nginx
- chkconfig --level 3 nginx on
- [root@localhost ~]# cd /usr/local/nginx/conf/
- [root@localhost conf]# ls
- fastcgi.conf fastcgi_params koi-utf mime.types nginx.conf scgi_params uwsgi_params win-utf
- fastcgi.conf.default fastcgi_params.default koi-win mime.types.default nginx.conf.default scgi_params.default uwsgi_params.default
备份主配置文件
- [root@localhost conf]# cp nginx.conf nginx.conf.origin
- [root@localhost conf]# vim nginx.conf
- 去除#pid logs/nginx.pid;前面#号
- [root@localhost conf]# netstat -anpt | grep 80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19108/nginx
- [root@localhost conf]# kill -3 19108
- [root@localhost conf]# netstat -anpt | grep 80
- [root@localhost conf]# nginx
- [root@localhost conf]# netstat -anpt | grep 80
- tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 19864/nginx
- [root@localhost conf]# cd ../logs/
- [root@localhost logs]# ls
- access.log error.log nginx.pid
- [root@localhost logs]# cat nginx.pid
- 19864
编辑写服务脚本
- [root@localhost ~]# vim /etc/init.d/nginx
- 可以使用的选项有:
- start 启动
- stop 停止
- reload 重载
- restart 重启
- status 状态
- test 检查配置文件
- #!/bin/bash
- #chkconfig: 2345 99 20
- #description:Nginx Server Control Scripts shell
- PROG="/usr/local/nginx/sbin/nginx"
- PIDF="/usr/local/nginx/logs/nginx.pid"
- case "$1" in
- start)
- if [ -f $PIDF ];
- then
- echo "Nginx正在运行…"
- else
- $PROG
- fi
- ;;
- stop)
- if [ -f $PIDF ];
- then
- kill -3 $(cat $PIDF)
- rm -f $PIDF
- else
- echo "Nginx正在停止…"
- fi
- ;;
- restart)
- $0 stop
- $0 start
- ;;
- reload)
- if [ -f $PIDF ];
- then
- kill -1 $(cat $PIDF)
- else
- echo "Nginx正在停止…重新加载"
- fi
- ;;
- status)
- if [ -f $PIDF ];
- then
- echo "Nginx正在运行"
- else
- echo "Nginx停止"
- fi
- ;;
- *)
- echo "Usage: $0 (start|stop|restart|reload|status)"
- exit 1
- esac
- exit 0
脚本文件并添加执行权限
- [root@localhost ~]# chmod +x /etc/init.d/nginx
- 将脚本添加到系统服务并设置开机启动
- [root@localhost ~]# chkconfig --add nginx
- 添加为服务启动项
- [root@localhost ~]# chkconfig --list nginx
- nginx 0:关闭 1:关闭 2:启用 3:启用 4:启用 5:启用 6:关闭
- [root@localhost ~]# chkconfig --level 3 nginx on
- 测试脚本是否能够执行
- [root@localhost ~]# service nginx start
- Nginx正在运行…
- [root@localhost ~]# service nginx restart
- [root@localhost ~]# service nginx stop
- [root@localhost ~]# service nginx stop
- Nginx正在停止…
- [root@localhost ~]# service nginx start
- [root@localhost ~]# service nginx status
- Nginx正在运行
案例十:shell编写nginx服务启动程序的更多相关文章
- SHELL编写NGINX服务控制脚本
使用源码包安装的Nginx没办法使用"service nginx start"或"/etc/init.d/nginx start"进行操作和控制,所以写了以下的 ...
- pm2命令,端口查询,mongodb服务启动,nginx服务启动,n模块的使用,搭建nodejs服务器环境,搭建oracledb服务器环境 linux的环境搭建
pm2命令 pm2 ls //查询pm2 启动的列表 pm2 start app.js //启动文件 pm2 restart app //重启项目 pm2 logs app //监控项目执行日志打印 ...
- Nginx系列~Nginx服务启动不了
Nginx服务有时起动不了了,原因是80端口为其它应用程序占用了,这时,我们需要查看是哪个程序占用了它,可能是IIS的某个站点,或者Tomat,Apache等,都有可能,所以,我们需要查看一下电脑80 ...
- 97: Address family not supported by protocol,nginx服务启动失败
1.启动nginx服务报错 环境:centos 6.9,yum安装的nginx,启动报错 [root@lnmp ~]# nginx -tnginx: the configuration file /e ...
- [shell脚本] mysql服务启动脚本
服务启动脚本(初始化.启动.登录) #!/bin/bash export PID=/usr/local/nestdb_master/bin/mysqld export PASSWORD=123456 ...
- SHELL编写NGINX自动部署脚本
1.功能描述 1. 安装支持包,从软件源下载自定义的NGINX包,创建NGINX用户和用户组. 2. 安装并初始化NGINX配置. 3. 运行NGINX并检测运行状态. 2.实现 源码如下: #!/b ...
- 第十八单元 nginx服务
安装python 源 wget 网上下载 原码 编译 安装的流程 (gcc glic) 版本更新时起冲突,删除原版本(或者reinstall重新安装) 可执行文件运行 ./ 软连接 查看 ...
- Nginx服务启动脚本
#!/bin/sh # chkconfig: 2345 40 98 # description: Start/Stop Nginx server path=/application/nginx/sbi ...
- 用shell编写小九九乘法表程序
1.使用for循环 运行结果: 2.方法二:for循环 运行结果: 备注: 1. echo -n 的意思是不自动换行,因为在linux shell中 echo到最后一个字符时会自动换行的,所以echo ...
随机推荐
- android ndk下没有pthread_yield,好在std::this_thread::yield()可以达到同样的效果
一个多线程的算法中,发现线程利用率只有47%左右,大量的处理时间因为usleep(500)而导致线程睡眠: 性能始终上不去. 把usleep(500)修改为std::this_thread::yiel ...
- Cesium入门4 - 创建Cesium Viewer
Cesium入门4 - 创建Cesium Viewer Cesium中文网:http://cesiumcn.org/ | 国内快速访问:http://cesium.coinidea.com/ 任何Ce ...
- CSS设置标签、图片放大、缩小、旋转、移动(tranform)
CSS设置标签.图片放大.缩小.旋转.移动(tranform) 1.缩小和放大属性(scale) 格式:tranform:缩小类型(数值): 注意:缩小和放大都是 scale : 其中的值(0~1)代 ...
- gin框架中中间件的编写与使用
概念 一个完整的系统可能包括鉴权认证.权限管理.安全检查.日志记录等多维度的系统支持. 中间件位与服务器和实际业务处理程序之间,其含义就相当于在请求和具体的业务处理逻辑之间增加某些操作,这种以额外增加 ...
- 哪些是GET请求,哪些是POST请求
GET请求: 1,form标签 method=get 2,a标签 3,link标签引入css 4,Script标签引入js文件 5,img标签引入图片 6,iframe引入html页面 7,在浏览器地 ...
- Kubernetes:故障排查(Trouble Shooting)方法总结
Blog:博客园 个人 本文部分内容源自网络,侵删. 概述 为了跟踪和发现在Kubernetes集群中运行的容器应用出现的问题,我们常用如下排查方法: 查看Kubernetes对象的当前运行时信息,特 ...
- Photoshop如何快速扣取图标
由于图标往往与背景色区别很大,因此首先使用魔棒工具快速选择出图标 有时候选择出来是图标,有时候是背景色 可以通过选择反向来调节(右键即可) ctrl + J 提取出选择的区域 这时进行等分裁剪即可 点 ...
- Git简单多人协作
感谢廖雪峰老师,引自他的Git教程. Git简单多人协作 首先,可以试图用git push origin <branch-name>推送自己的修改: 如果推送失败,则因为远程分支比你的本地 ...
- Mac版jdk1.6
java sdk 1.6 for mac 在苹果官网下载 https://support.apple.com/kb/DL1572?locale=zh_CN
- 简述redis特点及其应用场景
1. Redis八大特点 1.1. 速度快 说到Redis的速度快,大家的第一反应一定是内存读取,那是肯定的,但如果面试的时候仅仅说到这点,那还是远远不够的,至少还有以下三点要补充: Redis是用C ...