安装nginx时,源码包中未带官方的启动脚本,也就无法使用service nginxd start这种启动方式,查了下资料自己写了一个:

#!/bin/bash

#@version: 0.0.
#@author: lifafu
#@file:
#@time: // :
#@company: source /etc/profile #加载系统环境变量
source $HOME/.bash_profile #加载用户环境变量
#set -o nounset #引用未初始化变量时终止执行,也可以set -u
#set -o errexit #执行任何语句返回非0状态时终止执行,也可以set -e # chkconfig: -
# 虽然前面带#号,是注释,但要用chkconfig命令注册开机启动服务器的话,该句必不可少,格式也不能错!
# 3个chkconfig参数的含义:
# x:是指定该脚本在哪个系统启动级别下运行,比如你需要在3,,5上运行,那么第二位就设置成345,我这里用的是”-”,代表在2,,,5上都运行
# y:系统启动时,服务启动顺序,需要注意的是,有的程序依赖与别的程序的话,启动顺序就要注意了,比如A程序的启动依赖于B程序的启动,那么A程序的这个值一定要比B程序大
# z:系统终止时,服务终止顺序 # description: Nginx is a high-performance web and proxy server.
# 该句也必不可少,理由同上,你程序的描述和简介,而非本启动脚本 #设置变量
nginxd=/usr/local/nginx/sbin/nginx
nginx_config=/usr/local/nginx/conf/nginx.conf
nginx_pid=/usr/local/nginx/logs/nginx.pid
nginx_lock=/var/lock/subsys/nginx #保存退出状态的变量,初始值为0(在linux一般0表示成功,表示OK,非0表示异常,不OK)
RETYAL= # 设置程序名称
prog="nginx" # Source function library.在当前shell中运行的函数库文件
# 在functions中定义了很多函数,在这里可以调用,系统提供的函数文件,这里面实现了很多函数和环境变量,比如start的时候,红色的字显示OK就是这个文件的功劳
. /etc/rc.d/init.d/functions # Source network configuration.加载网络配置
. /etc/sysconfig/network # Check that networking is up.
[ ${NETWORKING} = "no" ] && exit # 定义启动函数
start() {
# 判断程序是否存在,否则异常退出
[ -x $nginxd ] || { echo “FATAL: No such programme”;exit ; } # 判断配置文件是否存在,否则异常退出
[ -f $nginx_config ] || { echo “FATAL:Config file does not exist”;exit ; } # 判断程序是否运行,否则异常退出
if [ -e $nginx_pid ];then
echo "nginx already running...."
exit
fi # 判断lock文件是否存在,否则异常退出
if [ -e $nginx_lock ];then
echo "nginx lock file does exist...."
exit
fi # 显示信息,依赖于. /etc/rc.d/init.d/functions
echo -n $"Starting $prog:" # 创建pid文件夹
dir=$(dirname $nginx_pid)
[ -d $dir ] || mkdir -p $dir # 调用functions里的daemon函数来启动nginx,daemon()函数主要用于希望脱离控制台,以守护进程形式在后台运行的程序
daemon --pidfile $nginx_pid $nginxd -c ${nginx_config} # 把daemon函数调用的结果保存到RETVAL里
RETVAL=$?
echo # 判断RETVALR值,如果是0执行成功,则生成锁文件,锁文件主要用来判断程序是否运行
[ $RETVAL = ] && touch $nginx_lock #终止函数,并返回$RETVAL的值,通常用于函数的结束, 本身这段代码也是个函数,所以我们也要返回,返回RETVAL的值
return $RETVAL
} # 定义停止函数
stop() {
echo -n $"Stoping $prog:" #killproc也在. /etc/rc.d/init.d/functions里面定义
killproc -p $nginx_pid $prog
RETVAL=$?
echo
[ $RETVAL = ] && rm -f $nginx_lock $nginx_pid
} reload() {
echo -n $"Reloading $prog:"
#kill -HUP `cat ${nginx_pid}`
killproc -p $nginx_pid $prog -HUP
RETVAL=$?
echo
} #See how we were called.
case "$1" in
start)
start
;;
stop)
stop
;;
reload)
reload
;;
restart)
stop
start
;;
#status在. /etc/rc.d/init.d/functions里有定义
status)
status $prog
RETVAL=$?
;;
#输入其他内容提示以下内容
*)
echo $"Usage:$prog{start|stop|restart|reload|status|help}"
exit
esac
exit $RETVAL

保存为nginxd,复制到/etc/init.d/中并赋予执行权限就可以使用service nginxd start等命令了;

如果需要加入开机启动:chkconfig --add nginxd;chkconfig nginxd on;

启停程序也可以使用类似的方式自己编写启动脚本,不过这种方式还是有缺陷,就是必须使用root用户运行这类脚本。

最新文章

  1. JavaScript 属性类型(数据属性和访问器属性)
  2. java分享第十六天( java读取properties文件的几种方法&java配置文件持久化:static块的作用)
  3. C#按行读取文本并存放再数组内
  4. 【深入Java虚拟机】之二:Java垃圾回收机制
  5. MainWndProc运行观察
  6. 基于Qt的第三方库和控件
  7. 353. Design Snake Game
  8. Windows Azure使用体验
  9. List Set Map用法和区别
  10. subnetting and the subnet mask
  11. 模板Link Cut Tree (动态树)
  12. 50.Linux-分析ifconfig到内核的调用过程,实现内核启机自动设MAC地址(原)
  13. 【翻译】asp.net core中使用MediatR
  14. STM32F401 外部中断误触发问题
  15. 导出表结构到Excel 生成代码用
  16. Dom4j基础
  17. udp丢包 处理
  18. shiro权限管理的框架-入门
  19. iOS 使用Masonry介绍与使用实践:快速上手Autolayout
  20. 【opencv基础】cv::Point类型与行列的关系

热门文章

  1. Java类的成员之四:代码块.
  2. JavaWeb开发中遇到的错误:org.apache.catalina.core.StandardWrapperValve invoke
  3. 管理员技术(四): 配置NTP网络时间客户端、 创建一个备份包、 配置用户和组账号、配置一个cron任务
  4. Linux 软硬链接区别
  5. java做题笔记
  6. linux浏览器,邮件客户端,输入法,双屏设置,应用软件,gnome-screenshot/scrot -s截图,office
  7. Address already in use: JVM_Bind 8083端口被占用的几个解决办法
  8. Socket/TCP粘包、多包和少包, 断包
  9. jQuery validate验证隐藏表单(hidden)域
  10. CSS3:FlexBox的详解