制作Nginx控制脚本实现:service nginx restart|reload|stop|st

本文深入探讨了编程领域中,为何大部分程序员难以晋升为架构师的原因,从技术能力、思维模式、沟通协作等多个维度解析这一现象。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

vi /etc/init.d/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



转载于:https://my.oschina.net/liting/blog/403766

<think>好的,我现在要解决用户遇到的Nginx重启错误,即“invalid option: '-s restart'”。首先,我需要确认用户的问题。用户可能在尝试使用命令`nginx -s restart`时遇到了错误提示,提示无效选项。 根据我的知识,Nginx的命令行参数中,`-s`信号支持的选项包括stop、quit、reload和reopen,而restart并不是一个有效的信号参数。所以用户错误地使用了`-s restart`,而正确的做法应该是先停止再启动,或者使用reload来重新加载配置。 接下来,我需要回忆正确的重启步骤。通常,重启Nginx可以通过两种方式:一种是先执行`nginx -s stop`停止服务,然后再启动`nginx`;另一种是使用`nginx -s reload`来重新加载配置文件而不中断服务。但用户可能希望完全重启,而不是仅仅重新加载。 然后,查看用户提供的引用内容。引用[2]中提到使用`nginx -s reload`来重新加载配置,这说明reload是一个有效选项。引用[3]中的示例是先停止再启动,使用`nginx -s stop -c conf/nginx-win.conf`然后`start nginx -c conf/nginx-win.conf`,这可能是在Windows下的操作,但用户的问题可能是在Linux环境下。 此外,引用[5]提到杀掉进程号来停止Nginx,可能需要手动终止进程,但这可能不是首选方法,应该优先使用`nginx -s quit`或`nginx -s stop`。 综合以上信息,正确的重启步骤应该是停止服务后再启动,或者使用reload。用户遇到的错误是因为使用了无效的restart参数。需要告知用户正确的命令,比如先停止再启动,或者使用reload。此外,还要检查配置文件是否正确,避免因为配置错误导致启动失败,使用`nginx -t`测试配置是否正确。 可能还需要考虑用户是否有权限执行这些命令,或者是否正确指定了配置文件路径。例如,如果用户自定义了配置文件的位置,需要在命令中使用`-c`参数指定,如引用[3]中的例子。因此,在回答中应该包含这些细节,确保用户能够正确执行命令。 最后,生成相关问题,可能涉及其他Nginx操作、配置文件测试或常见错误处理,以帮助用户进一步了解相关知识。</think>要正确重启Nginx服务器并解决`invalid option: "-s restart"`错误,请按以下步骤操作: --- ### **步骤1:理解错误原因** Nginx的`-s`参数仅支持`stop`、`quit`、`reload`、`reopen`四个信号,不支持`restart`命令[^2][^3]。因此直接使用`nginx -s restart`会触发无效选项错误。 --- ### **步骤2:正确重启方法** #### **方法一:停止后重新启动** 1. **停止Nginx服务** 使用以下命令之一: ```bash nginx -s stop # 强制立即停止 或 nginx -s quit # 优雅关闭(处理完当前请求后停止) ``` 2. **启动Nginx服务** ```bash nginx ``` #### **方法二:重新加载配置(无需完全重启)** 若只需更新配置且不中断服务,使用`reload`信号: ```bash nginx -s reload ``` --- ### **步骤3:验证配置语法** 重启前建议检查配置文件语法,避免因配置错误导致服务无法启动: ```bash nginx -t ``` 若输出`test is successful`,则配置正确[^2]。 --- ### **步骤4:处理进程残留问题** 若停止命令失效,可手动终止进程: 1. 查找Nginx主进程ID: ```bash ps aux | grep nginx ``` 2. 杀死主进程及其工作进程: ```bash kill -9 <主进程ID> ``` 3. 重新启动Nginx[^5]。 --- ### **补充说明** - **自定义配置文件路径**:若使用非默认配置文件,需通过`-c`指定路径,例如: ```bash nginx -c /path/to/nginx.conf ``` - **Windows系统操作**:需结合`start`命令启动(如`start nginx -c conf/nginx-win.conf`)[^3]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值