Class RuntimeKit

java.lang.Object
org.miaixz.bus.core.xyz.RuntimeKit

public class RuntimeKit extends Object
系统运行时工具类,用于执行系统命令的工具
Since:
Java 17+
Author:
Kimi Liu
  • Constructor Details

    • RuntimeKit

      public RuntimeKit()
  • Method Details

    • execForString

      public static String execForString(String... cmds) throws InternalException
      执行系统命令,使用系统默认编码
      Parameters:
      cmds - 命令列表,每个元素代表一条命令
      Returns:
      执行结果
      Throws:
      InternalException - IO异常
    • execForString

      public static String execForString(Charset charset, String... cmds) throws InternalException
      执行系统命令,使用传入的 charset 编码
      Parameters:
      charset - 编码
      cmds - 命令列表,每个元素代表一条命令
      Returns:
      执行结果
      Throws:
      InternalException - IO异常
    • execForLines

      public static List<String> execForLines(String... cmds) throws InternalException
      执行系统命令,使用系统默认编码
      Parameters:
      cmds - 命令列表,每个元素代表一条命令
      Returns:
      执行结果,按行区分
      Throws:
      InternalException - IO异常
    • execForLines

      public static List<String> execForLines(Charset charset, String... cmds) throws InternalException
      执行系统命令,使用传入的 charset 编码
      Parameters:
      charset - 编码
      cmds - 命令列表,每个元素代表一条命令
      Returns:
      执行结果,按行区分
      Throws:
      InternalException - IO异常
    • exec

      public static Process exec(String... cmds)
      执行命令 命令带参数时参数可作为其中一个参数,也可以将命令和参数组合为一个字符串传入
      Parameters:
      cmds - 命令
      Returns:
      Process
    • exec

      public static Process exec(String[] envp, String... cmds)
      执行命令 命令带参数时参数可作为其中一个参数,也可以将命令和参数组合为一个字符串传入
      Parameters:
      envp - 环境变量参数,传入形式为key=value,null表示继承系统环境变量
      cmds - 命令
      Returns:
      Process
    • exec

      public static Process exec(String[] envp, File dir, String... cmds)
      执行命令 命令带参数时参数可作为其中一个参数,也可以将命令和参数组合为一个字符串传入
      Parameters:
      envp - 环境变量参数,传入形式为key=value,null表示继承系统环境变量
      dir - 执行命令所在目录(用于相对路径命令执行),null表示使用当前进程执行的目录
      cmds - 命令
      Returns:
      Process
    • getResultLines

      public static List<String> getResultLines(Process process)
      获取命令执行结果,使用系统默认编码,获取后销毁进程
      Parameters:
      process - Process 进程
      Returns:
      命令执行结果列表
    • getResultLines

      public static List<String> getResultLines(Process process, Charset charset)
      获取命令执行结果,使用传入的 charset 编码,获取后销毁进程
      Parameters:
      process - Process 进程
      charset - 编码
      Returns:
      命令执行结果列表
    • getResult

      public static String getResult(Process process)
      获取命令执行结果,使用系统默认编码,获取后销毁进程
      Parameters:
      process - Process 进程
      Returns:
      命令执行结果列表
    • getResult

      public static String getResult(Process process, Charset charset)
      获取命令执行结果,获取后销毁进程
      Parameters:
      process - Process 进程
      charset - 编码
      Returns:
      命令执行结果列表
    • getErrorResult

      public static String getErrorResult(Process process)
      获取命令执行异常结果,使用系统默认编码,获取后销毁进程
      Parameters:
      process - Process 进程
      Returns:
      命令执行结果列表
    • getErrorResult

      public static String getErrorResult(Process process, Charset charset)
      获取命令执行异常结果,获取后销毁进程
      Parameters:
      process - Process 进程
      charset - 编码
      Returns:
      命令执行结果列表
    • destroy

      public static void destroy(Process process)
      销毁进程
      Parameters:
      process - 进程
    • addShutdownHook

      public static void addShutdownHook(Runnable hook)
      增加一个JVM关闭后的钩子,用于在JVM关闭时执行某些操作
      Parameters:
      hook - 钩子
    • getProcessorCount

      public static int getProcessorCount()
      获得JVM可用的处理器数量(一般为CPU核心数)

      这里做一个特殊的处理,在特殊的CPU上面,会有获取不到CPU数量的情况,所以这里做一个保护; 默认给一个7,真实的CPU基本都是偶数,方便区分。 如果不做处理,会出现创建线程池时ThreadPoolExecutor,抛出异常:IllegalArgumentException

      Returns:
      可用的处理器数量
    • getFreeMemory

      public static long getFreeMemory()
      获得JVM中剩余的内存数,单位byte
      Returns:
      JVM中剩余的内存数,单位byte
    • getTotalMemory

      public static long getTotalMemory()
      获得JVM已经从系统中获取到的总共的内存数,单位byte
      Returns:
      JVM中剩余的内存数,单位byte
    • getMaxMemory

      public static long getMaxMemory()
      获得JVM中可以从系统中获取的最大的内存数,单位byte,以-Xmx参数为准
      Returns:
      JVM中剩余的内存数,单位byte
    • getUsableMemory

      public static long getUsableMemory()
      获得JVM最大可用内存,计算方法为: 最大内存-总内存+剩余内存
      Returns:
      最大可用内存
    • getPid

      public static int getPid() throws InternalException
      获取当前进程ID,首先获取进程名称,读取@前的ID值,如果不存在,则读取进程名的hash值
      Returns:
      进程ID
      Throws:
      InternalException - 进程名称为空