当前位置: 首页 > news >正文

Java执行linux服务器本地命令

缘故:有一台服务器上有个mysql,外部访问不到,另外此服务器性能不好,原本使用jdbc游标批量将数据拉出处理,可执行一段时间就出线连接过多、tmp等问题。最后采用mysql将数据导出到csv,再读取csv处理后结束,性能直接提示多少倍,爽!

Java执行命令程序

package com.funmz.vos2gaid2black.task;import com.alibaba.fastjson.JSON;
import lombok.extern.slf4j.Slf4j;import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;@Slf4j
public class ShellExecutor {public static boolean executeMysqlToCsv(String tableName) {try {// 定义命令数组String[] cmd = {"bash", "-c",// 因为此服务器封闭,且无外部端口开放,此数据也没有设置密码等安全问题。"mysql -N  -u root  -Nse \"SELECT DISTINCT SUBSTR(calleee164, LENGTH(calleee164) - 10) AS tphone FROM vos3000." + tableName + " WHERE endreason = -93\" | sed 's/^/\"/;s/$/\"/' > /root/taskjar/tempcsv/" + tableName + ".csv"};log.info("执行命令:{}", JSON.toJSONString(cmd));// 创建 ProcessBuilder 实例ProcessBuilder processBuilder = new ProcessBuilder(cmd);processBuilder.directory(new File("/root/taskjar/tempcsv")); // 设置工作目录(可选)// 合并错误流到标准输出(可选)processBuilder.redirectErrorStream(true);// 启动进程Process process = processBuilder.start();// 等待命令执行完成
//            int exitCode = process.waitFor();boolean waitFor = process.waitFor(1L, TimeUnit.MINUTES);if (!waitFor) {log.error("执行超时,请检查命令是否正确。");}
//            System.out.println("Shell command exited with code: " + exitCode);
//            System.out.println("Shell command exited with waitFor: " + waitFor);log.info("Shell command exited with waitFor: " + waitFor);return waitFor;//            if (exitCode == 0) {
//                System.out.println("CSV 文件生成成功!");
//            } else {
//                System.err.println("执行失败,请检查 MySQL 连接或权限问题。");
//            }} catch (IOException | InterruptedException e) {e.printStackTrace();}return false;}}

相关文章:

  • HTTP Error 500.31 - Failed to load ASP.NET Core runtime
  • 第三节第一部分:Static修饰类变量、成员变量
  • xiaopiu原型设计工具笔记
  • 多环串级PID
  • Spring Boot 启动原理的核心机制
  • Git实战经验分享:深入掌握git commit --amend的进阶技巧
  • 一种机载扫描雷达实时超分辨成像方法——论文阅读
  • uniapp|实现多终端视频弹幕组件、内容轮询、信息表情发送(自定义全屏半屏切换、弹幕启用)
  • k8s(11) — 探针和钩子
  • 【Redis】持久化与事务
  • 电容的基本介绍
  • iNeuOS工业互联网操作系统,集成DeepSeek大模型应用
  • C#串口通信
  • 前端面试每日三题 - Day 28
  • LeetCode第284题 - 窥视迭代器
  • 1688 开放平台 API 全解析:商品详情实时数据采集接口开发手册
  • 存储器:DDR和独立显卡的GDDR有什么区别?
  • 数据透视表控件DHTMLX Pivot v2.1发布,新增HTML 模板、增强样式等多个功能
  • Pyinstaller编译EXE及反编译
  • 解决方案:ValueError: setting an array element with a sequence.
  • 竞彩湃|霍芬海姆看到保级曙光,AC米兰专注于意大利杯
  • 越怕出错越会出错,“墨菲定律”的魔咒该怎么破?
  • 马上评丨行人转身相撞案:走路该保持“安全距离”吗
  • 海关总署统计分析司司长:4月进出口增速较一季度加快4.3个百分点
  • 大四本科生已发14篇SCI论文?重庆大学:成立工作组核实
  • 招行:拟出资150亿元全资发起设立金融资产投资公司