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 要删除 ...
随机推荐
- Codeforces C. Almost Equal (数学规律)
题目链接:http://codeforces.com/contest/1206/problem/C 题解 : 观察可以发现当n为偶数时,1 - 2n是不满足题意的,可以举例n = 2,n = 4试一试 ...
- jquery--获取input checkbox是否被选中以及渲染checkbox选中状态
jquery获取checkbox是否被选中 html <div><input type="checkbox" id="is_delete" n ...
- vue 项目太大, 导致 javascript heap out of memory
原因: node 环境, 对单个进程的内存是有限制的, 但是现在前端项目太大, 所以我们需要根据当前机器环境, 手动加大node的内存限制 安装包 npm i increase-memory-limi ...
- python的类定义与实例化
理解类属性和实例属性: 直接在类里面定义的变量叫类属性,类属性是公有的,每个类实例化就自动拥有类的属性,且实例化对象的这个属性的初始地址指向类属性的地址 如果直接给实例化对象的属性赋值这样会改变该属性 ...
- 计算几何-Dot-Vector
This article is made by Jason-Cow.Welcome to reprint.But please post the article's address. 看了书,然后码 ...
- 概率 dp lightoj 1395
dp[k]用类似于低配版的这道题的做法求出,如下: 然后就从k逆推到0就好了 #include<bits/stdc++.h> using namespace std; ; double d ...
- iCCID激活终结,苹果iPhone卡贴机“辉煌”时代落幕
iPhone卡贴机,是一个神奇的存在.所谓的iPhone卡贴机,原本是"有锁机".它们通常是国外运营商的合约机,为了限制使用地域而"上锁",不能直接在国内 ...
- 【HTTP与HTTPS的区别】
目录 一.HTTP和HTTPS的基本概念 二.HTTP与HTTPS有何区别 三.HTTP与HTTPS的工作原理 四.HTTPS的优缺点 五.HTTP切换至HTTPS "超文本传输协议,即HT ...
- 任意模数 n 次剩余
\(n\) 次剩余 你需要解方程 \(x^n\equiv k\pmod m\),其中 \(x\in [0,m-1]\). 保证解数不超过 \(C=10^6\) \(1\le n,m,k\le 10^9 ...
- 安装Anaconda3时出现conda不是内部或者外部命令
在win10,64位,python版本为3.7的环境下安装anaconda3的时候,无法在命令行执行conda命令,一直提示conda不是内部或者外部命令,参考网上的修改环境变量,修改完后还是没有用, ...