Windows上的nginx停止失败,因为Access被拒绝
Windows,在cmd窗口使用命令nginx.exe -s stop
停止nginx,报以下错误:
nginx: [error] OpenEvent(“Global\ngx_stop_15792”) failed (5: Access is denied)
1、报错使用场景
主要是想通过Java做一个Windows的控制面板,来控制这些中间件的开启和停止;
Java代码执行nginx.exe -s stop
和cmd窗口执行报错一致。
2、异常原因
从异常的信息中可以看到是访问被拒绝
,是权限不足,然后使用管理员运行cmd窗口,再次使用nginx命令,即可打开nginx服务。
3、解决方案
Windows关闭nginx的操作主要有以下几种,由于我是代码操作,所以使用的是第三种解决方法。
1、任务管理器
Ctrl + Alt + Del 键打开任务管理器面板,点击对应的nginx.exe进程(多个),结束相关任务即可。
2、cmd命令查询nginx.exe进程号,逐个进行杀进程操作
- Win + R键打开cmd窗口,输入
tasklist | findstr nginx.exe
命令,查询正在运行的nginx进程; - 然后再使用
taskkill /PID <PID> /F
杀死Nginx进程 将PID替换为你要杀死的Nginx进程的PID。例如,如果Nginx进程的PID是19452,那么命令将是下面那个图; - 注意:正常情况下,nginx运行时应该只有2个nginx进程
(1个master进程,1个worker进程(默认配置是1个))。
3、Java代码层面,使用的也是杀进程的原理
根据进程名来杀掉nginx即可,
如果权限够执行stop命令的可以使用代码段2。
代码段1文章来源:https://www.toymoban.com/news/detail-617712.html
private static void stopNginx() {
try {
// 停止Nginx服务的命令
String nginxProcessName = "nginx.exe";
String taskKillCommand = "taskkill /F /IM " + nginxProcessName;
Process taskKillProcess = Runtime.getRuntime().exec(taskKillCommand);
int taskKillExitCode = taskKillProcess.waitFor();
System.out.println("Nginx服务已停止");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
代码段2
nginx.exe -s stop文章来源地址https://www.toymoban.com/news/detail-617712.html
private static void stopNginx() {
try {
// 停止Nginx服务的命令
String nginxCommand = "F:\\programming\\gaoshan\\innosetup\\workspace\\nginx-1.22.1\\nginx.exe -s stop";
Process nginxProcess = Runtime.getRuntime().exec(nginxCommand);
int nginxExitCode = nginxProcess.waitFor();
System.out.println("Nginx服务已停止");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
到了这里,关于nginx: [error] OpenEvent(“Global\ngx_stop_15792“) failed (5: Access is denied)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!