nginx: [error] OpenEvent(“Global\ngx
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 /F杀死Nginx进程 将PID替换为你要杀死的Nginx进程的PID。例如,如果Nginx进程的PID是19452,那么命令将是下面那个图;
- 注意:正常情况下,nginx运行时应该只有2个nginx进程
(1个master进程,1个worker进程(默认配置是1个))。
3、Java代码层面,使用的也是杀进程的原理
根据进程名来杀掉nginx即可,
如果权限够执行stop命令的可以使用代码段2。
代码段1
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
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(); } }
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。
还没有评论,来说两句吧...