一,判断程序的部署环境是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的更多相关文章

  1. Java操作Sqlite数据库-jdbc连接

    Java操作Sqlite数据库步骤: 1. 导入Sqlite jdbc 本文使用sqlite-jdbc-3.7.2.jar,下载地址 http://pan.baidu.com/s/1kVHAGdD 2 ...

  2. 【MongoDB for Java】Java操作MongoDB

    上一篇文章: http://www.cnblogs.com/hoojo/archive/2011/06/01/2066426.html介绍到了在MongoDB的控制台完成MongoDB的数据操作,通过 ...

  3. Java操作Oracle

    public class DBCon { // 数据库驱动对象 public static final String DRIVER = "oracle.jdbc.driver.OracleD ...

  4. JAVA操作ORACLE数据库的存储过程

    一.任务提出 JAVA操作oracle11g存储过程实验需要完成以下几个实例: 1.调用没有返回参数的过程(插入记录.更新记录) 2.有返回参数的过程 3.返回列表的过程 4.返回带分页的列表的过程. ...

  5. JAVA操作MongoDB数据库

    1. 首先,下载MongoDB对Java支持的驱动包 驱动包下载地址:https://github.com/mongodb/mongo-java-driver/downloads 2.Java操作Mo ...

  6. Java操作Session与Cookie

    1,Java操作Session Java操作Session非常简单,步骤如下 1.1,在servlet中通过request获取session HttpSession session = request ...

  7. JAVA操作COOKIE

    JAVA操作COOKIE 1.设置Cookie Cookie cookie = new Cookie("key", "value"); cookie.setMa ...

  8. [转]MongoDB for Java】Java操作MongoDB

    原文地址: MongoDB for Java]Java操作MongoDB 开发环境: System:Windows IDE:eclipse.MyEclipse 8 Database:mongoDB 开 ...

  9. Java操作文件夹的工具类

    Java操作文件夹的工具类 import java.io.File; public class DeleteDirectory { /** * 删除单个文件 * @param fileName 要删除 ...

随机推荐

  1. 阿里云CentOS7.2把默认语言修改成中文

    转载TimeK 最后发布于2017-04-19 14:43:35 阅读数 7578  收藏 展开 我是一个刚接触centos不久的新人,在这个问题上面也是找了好久的答案,百度百科和问答上面的都大同小异 ...

  2. 重新装Mysql后原来数据的恢复办法:即一个版本的mysql的data文件夹下的所有的数据,怎么去加载到另一个安装的mysql中

    重新装Mysql后原来数据的恢复办法本博客:http://blog.csdn.net/xiaowu_zhu/article/details/71188955 不管是重新装系统或者数据库时,总会遇到怎么 ...

  3. git 提交的时候 建立排除文件夹或者文件

    1.在Git的根仓库下 touch .gitignore 2.编辑这个文件

  4. appium---如何判断原生页面和H5页面

    目前app中存在越来越多的H5页面了,对于一些做app自动化的测试来说,要求也越来越高,自动化不仅仅要支持原生页面,也要可以H5中进行操作自动化,这一篇介绍如何查看页面上是否存在H5页面,这里首先要了 ...

  5. 链剖-What you are?-大话西游-校内oj2440

    This article is made by Jason-Cow.Welcome to reprint.But please post the writer's address. http://ww ...

  6. FloatingActionButton 实现类似 闲鱼 App 底部导航凸起按钮

    一.Flutter FloatingActionButton 介绍 FloatingActionButton 简称 FAB,可以实现浮动按钮,也可以实现类似闲鱼 app 的地步凸起导航   child ...

  7. Maven - skiptest

    1. 概述 maven install 中尝试跳过 单元测试 2. 背景 从别处找来的工程 改了改发现测试过不了 编译都过不了 但又要着急继续调整 就是懒 这种事本来不提倡, 但是生产里数不胜数 Ma ...

  8. 【游戏体验】Shoot'm(暴打火柴人)

    >>>点此处可试玩无敌版<<< 注意,本游戏含有少量暴力元素,13岁以下的儿童切勿尝试本款游戏 生活有压力,学习不如意,你可以尝试这款游戏发泄心中的不满 个人测评 ...

  9. 【做题笔记】P2251 质量检测

    一看题就知道是线段树裸题了.可是,对于每个 \(i\) ,对应的 \(Q\) 序列的下标是多少呢?应该查询的区间又是什么呢? 找规律: \(i\ \ \ \ \ \ \ \ m\) \(1\ \Rig ...

  10. 论STA | 工艺、工具、分析的本与末

    人类从漫长的蒙昧中觉醒之后,不再依靠着奇装异服的巫师通灵来指导生活,巫师进化成了科学家,他们试图对周遭的一切进行概括.分类.抽象,于是有了化学.物理.数学等基科.比如一粒沙,它的化学组成是什么,物理特 ...