• 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) {
    
        }
    
    }
  • 相关阅读:
    C#=>递归反转栈
    C#=> 栈模仿堆的操作
    C# 栈=>随时读取栈中最小值
    vijos1574 摇钱树
    (二叉)堆
    分块大法好
    list
    动态规划——状压、树形
    区间动规平行四边形优化
    最长公共子序列(LCS)
  • 原文地址:https://www.cnblogs.com/excellencesy/p/11278994.html
Copyright © 2020-2023  润新知