随笔- 100  文章- 0  评论- 3  阅读- 30413 

  通过一些linux可以进行操作,但是web上如何触达linux,这里可以使用java的controller进行中转,这里写了一个方式,但是不太符合领导需要,但是也是自己学习的一个小里程碑,做些记录。

  测试可用。

 

1.核心代码

复制代码
package com.jun.test.utils;

import java.io.InputStreamReader;
import java.io.LineNumberReader;

/**
 * 通过程序控制linux中的命令执行
 */
public class LinuxExeUtils {
    /**
     * 命令执行,返回执行后的结果
     *
     * @param cmd 输入的命令
     * @return 执行结果
     */
    public static String exec(String cmd) {
        try {
            String[] cmdA = {"/bin/sh", "-c", cmd};
            Process process = Runtime.getRuntime().exec(cmdA);
            LineNumberReader br = new LineNumberReader(new InputStreamReader(process.getInputStream()));
            StringBuilder sb = new StringBuilder();
            String line;
            while ((line = br.readLine()) != null) {
                System.out.println(line);
                sb.append(line).append("\n");
            }
            return sb.toString();
        } catch (Exception e) {
            e.printStackTrace();
        }
        return null;
    }
}
复制代码

 

2.杀死进程

  首先需要输入的是一些关键字

复制代码
    /**
     * 停止直播
     */
    @PostMapping("kill")
    public void killFfmpeg(@RequestBody FfmpegKillInfoDTO ffmpegKillInfoDTO) {
        // 获取pid,进行
        String pidStr = LinuxExeUtils.exec("ps -ef|grep ffmpeg | grep  " + ffmpegKillInfoDTO.getKillInfo() + " | awk '{print $2}'");
        log.info("程序杀死pid是{}", pidStr);


        // 杀死pid
        if (Strings.isNotBlank(pidStr)) {
            log.info("程序杀死pid是{}", pidStr);
            LinuxExeUtils.exec("kill -9 " + pidStr);
        }
    }
复制代码

 

 posted on   曹军  阅读(601)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
· 上周热点回顾(2.24-3.2)
点击右上角即可分享
微信分享提示