java操作nginx
一,判断程序的部署环境是nginx还是windows
/**
* 判断操作系统是不是windows
*
* @return true:是win false:是Linux
*/
public static boolean judgeOs() {
String os = System.getProperty("os.name").toLowerCase();
if (os != null && os.startsWith("windows")) {
return true;
} else {
return false;
}
}
二,开启nginx
(1)开启windows系统的ngin
/**
* 开启windows系统的nginx
* @throws IOException
*/
private static void startWinProc() throws IOException{
String myExe = "cmd /c start nginx";
String CONFPREFIXURL = System.getProperty("user.dir") + File.separator + "nginx"
+ File.separator + "windows"; File dir = new File(CONFPREFIXURL);
String[] str = new String[] {};
// 执行命令
Runtime.getRuntime().exec(myExe, str, dir);
}
(2)开启linux系统的nginx
/**
* 开启linux的nginx
* @throws IOException
*/
private static void startLinuxProc() throws IOException {
System.out.println("开启进程:" + "nginx");
String command1 = "/usr/local/nginx/sbin/nginx"; String pro = executeCmd2(command1);
System.out.println(pro);
}
(3)跨平台开启Nginx
/**
* 跨平台启动nginx
*
* @throws IOException
*/
private static void startProc() throws IOException {
if (judgeOs()) {
startWinProc();
} else {
startLinuxProc();
}
}
三,关闭nginx
(1)关闭windows系统的nginx
/**
*关闭windows系统的nginx
* @throws IOException
*/
public static void KillWin() throws IOException{
executeCmd("taskkill /F /IM " + "nginx.exe");
}
(2)关闭linux系统的nginx
/**
* 关闭linux系统的nginx
* @throws IOException
*/
private static void killLinuxProc() throws IOException {
String command = "pkill -9 nginx";
executeCmd(command);
}
(3)nginx的跨平台关闭
/**
* 跨平台关闭nginx
* @throws IOException
*/
public static void killProc() throws IOException {
if(judgeOs()){
KillWin();
}else{
killLinuxProc();
}
}
四,获取项目所在的磁盘位置
String CONFPREFIXURL = System.getProperty("user.dir");
System.out.println(CONFPREFIXURL);
五,获取项目所在主机ip
/**
* 获取项目部署环境的ip
* @return
*/
public static String getIP() {
String url = "";;
try {
for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements(); ) {
NetworkInterface item = e.nextElement();
for (InterfaceAddress address : item.getInterfaceAddresses()) {
if (item.isLoopback() || !item.isUp()) {
continue;
}
if (address.getAddress() instanceof Inet4Address) {
Inet4Address inet4Address = (Inet4Address) address.getAddress();
url =inet4Address.getHostAddress();
}
}
}
//url = InetAddress.getLocalHost().getHostAddress();
} catch (SocketException e) {
throw new RuntimeException(e);
}
return url;
}
更多获取系统变量的方法:https://www.cnblogs.com/excellencesy/p/11278889.html
六,完整工具类
package com.googosoft.until; import java.io.BufferedReader;
import java.io.File;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.Inet4Address;
import java.net.InterfaceAddress;
import java.net.NetworkInterface;
import java.net.SocketException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.sql.Statement;
import java.util.ArrayList;
import java.util.Enumeration;
import java.util.List; public class NginxUtil { /**
*
* @return 1:代理重启成功 2:进程未开启 3:进程关闭时出错 4:进程启动时出错
*/
public static int reStartProc() { int flag = 0;
if (findProcess()) {
// 进程没开启
try {
killProc();
} catch (IOException e) {
e.printStackTrace();
System.err.println("nginx.exe" + "线程开启失败");
} finally {
if (findProcess()) {
flag = 3;// 关闭失败
}
} try {
startProc();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (findProcess()) {
flag = 1;// 开启成功
} else {
flag = 4;// 启动失败
}
} } else {
// 进程未开启
flag = 2;
}
return flag;
} /**
* 关闭nginx进程
*
* @return 1:进程关闭成功 2:进程没有开启 3:进程关闭失败
*/
public static int stop() {
int flag = 0; if (findProcess()) {
// 进程开启了
try {
killProc();
} catch (IOException e) {
e.printStackTrace();
System.err.println("nginx.exe" + "线程关闭失败");
} finally {
if (!findProcess()) {
flag = 1;// 关闭成功
} else {
flag = 3;// 关闭失败
}
}
} else {
// 进程没开启
flag = 2;
}
return flag; } /**
* 跨平台关闭nginx
*
* @throws IOException
*/
public static void killProc() throws IOException {
if (judgeOs()) {
KillWin();
} else {
killLinuxProc();
}
} /**
* 关闭windows系统的nginx
*
* @throws IOException
*/
public static void KillWin() throws IOException {
executeCmd("taskkill /F /IM " + "nginx.exe");
} /**
* @desc 执行cmd命令
*/
public static String executeCmd(String command) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("cmd /c " + command);
// Process process = runtime.exec( command);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));
String line = null;
StringBuilder build = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
build.append(line);
}
return build.toString();
} /**
* @desc 执行cmd命令
*/
public static String executeCmd2(String command) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command);
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream(), "UTF-8"));
String line = null;
StringBuilder build = new StringBuilder();
while ((line = br.readLine()) != null) {
System.out.println(line);
build.append(line);
}
return build.toString();
} /**
* @desc 判断进程是否开启
*/
public static boolean findProcess() {
String processName = "nginx.exe";
BufferedReader bufferedReader = null;
try {
Process proc = Runtime.getRuntime().exec("tasklist -fi " + '"' + "imagename eq " + processName + '"');
bufferedReader = new BufferedReader(new InputStreamReader(proc.getInputStream()));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
if (line.contains(processName)) {
return true;
}
}
return false;
} catch (Exception ex) {
ex.printStackTrace();
return false;
} finally {
if (bufferedReader != null) {
try {
bufferedReader.close();
} catch (Exception ex) {
}
}
}
} /**
* 关闭linux系统的nginx
*
* @throws IOException
*/
private static void killLinuxProc() throws IOException {
String command = "pkill -9 nginx";
executeCmd(command);
} /**
* 打印进程的状态
*
* @param programName1
*/
public static void logStatus() {
boolean flag = findProcess();
if (flag) {
System.out.println();
System.err.println("nginx.exe" + "进程状态:开启");
System.out.println();
} else {
System.out.println();
System.err.println("nginx.exe" + "进程状态:关闭");
System.out.println();
}
} /**
* 开启linux的nginx
* @throws IOException
*/
private static void startLinuxProc() throws IOException {
System.out.println("开启进程:" + "nginx");
String command1 = "/usr/local/nginx/sbin/nginx"; String pro = executeCmd2(command1);
System.out.println(pro);
} /**
* windows平台开启
*
* @throws IOException
* 1:开启成功 2:开启失败 3:已开启
*/
public static int start() {
int flag = 0; if (!findProcess()) {
// 进程开启了
try {
startProc();
} catch (IOException e) {
e.printStackTrace();
System.err.println("nginx.exe" + "线程关闭失败");
} finally {
if (findProcess()) {
flag = 1;// 开启成功
} else {
flag = 2;// 开启失败
}
}
} else {
// 进程已经开启
flag = 3;
}
return flag;
} /**
* 跨平台启动nginx
*
* @throws IOException
*/
private static void startProc() throws IOException {
if (judgeOs()) {
startWinProc();
} else {
startLinuxProc();
}
} /**
* 开启windows系统的nginx
*
* @throws IOException
*/
private static void startWinProc() throws IOException {
String myExe = "cmd /c start nginx";
String CONFPREFIXURL = System.getProperty("user.dir") + File.separator + "nginx" + File.separator + "windows"; File dir = new File(CONFPREFIXURL);
String[] str = new String[] {};
// 执行命令
Runtime.getRuntime().exec(myExe, str, dir);
} /**
* 判断操作系统是不是windows
*
* @return true:是win false:是Linux
*/
public static boolean judgeOs() {
String os = System.getProperty("os.name").toLowerCase();
if (os != null && os.startsWith("windows")) {
return true;
} else {
return false;
}
} /**
* 获取项目部署环境的ip
*
* @return
*/
public static String getIP() {
String url = "";
;
try {
for (Enumeration<NetworkInterface> e = NetworkInterface.getNetworkInterfaces(); e.hasMoreElements();) {
NetworkInterface item = e.nextElement();
for (InterfaceAddress address : item.getInterfaceAddresses()) {
if (item.isLoopback() || !item.isUp()) {
continue;
}
if (address.getAddress() instanceof Inet4Address) {
Inet4Address inet4Address = (Inet4Address) address.getAddress();
url = inet4Address.getHostAddress();
}
}
}
// url = InetAddress.getLocalHost().getHostAddress();
} catch (SocketException e) {
throw new RuntimeException(e);
}
return url;
} /**
* 判断某个字符串是否是数字
*
* @param str
* @return
*/
public static boolean isNumer(String str) {
for (int i = 0; i < str.length(); i++) {
if (!Character.isDigit(str.charAt(i))) {
return false;
}
}
return true;
} /**
* 以行为单位读取文件,常用于读面向行的格式化文件
*
* @return
*/
public static int getPort() {
String fileName = getConfAddr();
int port = -1;
File file = new File(fileName);
BufferedReader reader = null;
String lastLine = "";
try {
reader = new BufferedReader(new FileReader(file));
String tempString = null;
// 一次读入一行,直到读入null为文件结束
while ((tempString = reader.readLine()) != null) {
if (!tempString.trim().startsWith("#") && tempString.trim().length() != 0) {
// System.out.println(tempString.trim());
if ("server {".equals(lastLine.trim())) {
String content = tempString.trim();
if (content.startsWith("listen") && content.endsWith(";")) {
String number = content.replace("listen", "").replace(";", "").trim();
if (isNumer(number))
port = Integer.parseInt(number);
}
}
lastLine = tempString;
}
}
reader.close();
} catch (IOException e) {
e.printStackTrace();
} finally {
if (reader != null) {
try {
reader.close();
} catch (IOException e1) {
}
}
} return port;
} public static String getConfAddr() {
String CONFPREFIXURL = System.getProperty("user.dir") + File.separator + "nginx" + File.separator;
if (judgeOs()) {
CONFPREFIXURL = CONFPREFIXURL + "windows" + File.separator + "conf" + File.separator + "nginx.conf";
} else {
// linux的处理
}
return CONFPREFIXURL;
} public static void main(String[] args) { } }
java操作nginx的更多相关文章
- Java操作Sqlite数据库-jdbc连接
Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...
- 【MongoDB for Java】Java操作MongoDB
上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...
- Java操作Oracle
public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...
- JAVA操作ORACLE数据库的存储过程
一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...
- JAVA操作MongoDB数据库
1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...
- Java操作Session与Cookie
1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...
- JAVA操作COOKIE
JAVA操作COOKIE 1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMa ...
- [转]MongoDB for Java】Java操作MongoDB
原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...
- Java操作文件夹的工具类
Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...
随机推荐
- jmeter-下载安装使用
jmeter介绍 jmeter是什么? jmeter是apache组织开发的,开源的,纯java的压力测试工具. jmeter可以用来测什么? ——|__静态资源(发送给客户端的文件) |__动态资源 ...
- 大白话Web三大组件之一Servlet
很多学习到Servlet这里的童鞋,听到那么多专业名词解释这个Servlet,相信都是很蒙圈的,在这里我先不跟大家扯Servlet的大概念,先跟大家探讨一下关于Servlet的作用 相信MVC这个概念 ...
- springmvc、springboot 参数校验
参数校验在项目中是必不可少的,不仅前端需要校验,为了程序的可靠性,后端也需要对参数进行有效性的校验.下面将介绍在springmvc或springboot项目中参数校验的方法 准备工作: 引入校验需要用 ...
- 题解 P5594 【【XR-4】模拟赛】
P5594 [[XR-4]模拟赛] 洛谷10月月赛 II & X Round 4 Div.2前两道签到题还是很简单的,基本上是半小时内一遍过两题 看看题解,这题STL做法有用set输出size ...
- Linux05——用户操作
用户操作 1.新增用户(useradd 新用户名): 2.设置密码(passwd 用户名): 3.用户是否存在(id 用户名): 4.切换用户(su - 切换用户名) **—— ** s ...
- wamp使用时遇到的问题总结
1.相关网页无法访问? 解决方案:修改配置文件,将所有的Deny from all 改为Allow from all,再重启wamp 以下列举配置文件 local host无法访问 单击wamp图标, ...
- Redis读写分离的简单配置
Master进行写操作,可能只需要一台Master.进行写操作,关闭数据持久化. Slave进行读操作,可能需要多台Slave.进行读操作,打开数据持久化. 假设初始配置有Master服务器为A,sl ...
- Tarjan-SCC-NOIP2015message
This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://ww ...
- 「题解」「UOJ-164」「清华集训2015」V
目录 题目 原题目 简要题目 正解 这道题题目简洁新颖,吸引读者阅读兴趣... 题目 原题目 点这里 简要题目 需要你维护长度为n的序列并支持下列操作: 区间加法: 区间赋值: 区间每个 \(a_i\ ...
- 断点调试,issubclass和ininstance的使用
一等公民 只要可以把一个东西赋值给一个变量,这个东西就叫一等公民 断点调试 在想要加断点的地方用鼠标点击一下,你会看到一个红色圆圈 变红的地方,程序执行到,就会暂停 断电应该加载报错之前 绿色箭头表示 ...