执行linux命令清理服务器缓存并返回结果怎么实现
发表于:2025-12-04 作者:千家信息网编辑
千家信息网最后更新 2025年12月04日,这篇文章主要讲解了"执行linux命令清理服务器缓存并返回结果怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"执行linux命令清理服务器缓存并
千家信息网最后更新 2025年12月04日执行linux命令清理服务器缓存并返回结果怎么实现
这篇文章主要讲解了"执行linux命令清理服务器缓存并返回结果怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"执行linux命令清理服务器缓存并返回结果怎么实现"吧!
1、准备环境 idea spingboot 2.0
org.springframework.boot spring-boot-starter org.springframework.boot spring-boot-devtools runtime true org.apache.commons commons-lang3 3.3.2 ch.ethz.ganymed ganymed-ssh3 build210 org.projectlombok lombok true org.springframework.boot spring-boot-starter-test test org.junit.vintage junit-vintage-engine
2.创建Boot启动类
@SpringBootApplication// 开启定时任务 @EnableSchedulingpublic class SshtimedtaskApplication {public static void main(String[] args) { SpringApplication.run(SshtimedtaskApplication.class, args); }}3、创建逻辑类
目录结构化
根据spring ioc将定时任务注入容器,启动即开启
@Component@Slf4jpublic class TimedTaskConfig { @Resource TimedTaskService timedTaskService; //"0 15 10 ? * *" 测试 每天上午10:15触发成功 @Scheduled(cron="0 0 23 * * ?") //每晚凌晨 23点触发 public void clearLinuxProcess(){ log.info("获取远程服务器进程号开始:"+new Date()); String proceStr=timedTaskService.execGrepResult();// String pro[]=proceStr.split(" "); log.info("执行远程服务器结束掉进程 kill -9 "+proceStr); timedTaskService.execKileProcess(proceStr); }}TimedTaskService 定时任务 逻辑类
@Slf4j@Servicepublic class TimedTaskService { // ps -ef | grep xxx.log | grep -v grep | awk '{print $2}' 查询服务器上某个进程的进程号 这个我的是一个推送流的进程号 private static final String execFindGrep="ps -aux|grep rtsp_transport | grep -v grep | awk '{print $2}'"; private static final String killProcess="kill -9 "; public String execGrepResult(){ log.info("准备执行命令:"+execFindGrep); return ScpSshConnectionClient.execute(execFindGrep);// 查询返回的进程号 } public void execKileProcess(String cmd){ log.info("准备执行命令:"+killProcess+cmd); ScpSshConnectionClient.execute(killProcess+cmd);// 这里批量处理 } }ssh连接服务器
/** * ClassName:ScpSshConnectionClient
* Function: TODO ADD java操作 实现scp上传和下载文件.
* Reason: TODO ADD 服务器相关.
* Date: 2020年8月28日 上午9:55:43
* @author wangmeng * @version * @since JDK 1.8 * @see */@Slf4jpublic class ScpSshConnectionClient { private static final String IP="172.XXXXXXXX";// 远程服务器地址 private static final String USR="XXXX";// 远程服务器用户名 private static final String PSWORD="XXXXXXXX"; // 远程服务器密码 private static String DEFAULTCHART="UTF-8"; private static Connection connection = new Connection(IP);// 创建对象 /** * * login:ssh用户登录验证,使用用户名和密码来认证.
* @author wangmeng * @return boolean * @since JDK 1.8 */ public static boolean login(){ //创建远程连接,默认连接端口为22,如果不使用默认,可以使用方法 try { connection.connect(); //使用用户名和密码登录 有秘钥可以使用authenticateWithPublicKey验证 return connection.authenticateWithPassword(USR,PSWORD); } catch (IOException e) { log.error("用户%s密码%s登录服务器%s失败!",USR,PSWORD,IP,e); } return false; } /** * 远程执行shll脚本或者命令 * @param cmd * 即将执行的命令 * @return * 命令执行完后返回的结果值 */ public static String execute(String cmd){ String result=""; try { boolean isAuthed =login(); if(isAuthed && connection !=null){ Session session= connection.openSession();//打开一个会话 session.execCommand(cmd);//执行命令 result=processStdout(session.getStdout(),DEFAULTCHART); //如果为得到标准输出为空,说明脚本执行出错了 if(StringUtils.isBlank(result)){log.info("得到标准输出为空,链接connection:"+connection+",执行的命令:"+cmd); result=processStdout(session.getStderr(),DEFAULTCHART); }else{log.info("执行命令成功,链接connection:"+connection+",执行的命令:"+cmd); }connection.close(); session.close(); } } catch (IOException e) {log.error("执行命令失败,链接connection:"+connection+",执行的命令:"+cmd+" "+e.getMessage()); e.printStackTrace(); }return result; }/** * 解析脚本执行返回的结果集 * @param in 输入流对象 * @param charset 编码 * @return * 以纯文本的格式返回 */ private static String processStdout(InputStream in, String charset){ InputStream stdout = new StreamGobbler(in); StringBuffer buffer = new StringBuffer();; try { BufferedReader br = new BufferedReader(new InputStreamReader(stdout,charset)); String line=null; while((line=br.readLine()) != null){ buffer.append(line+" "); } } catch (UnsupportedEncodingException e) {log.error("解析脚本出错:"+e.getMessage()); e.printStackTrace(); } catch (IOException e) {log.error("解析脚本出错:"+e.getMessage()); e.printStackTrace(); }return buffer.toString(); }}
感谢各位的阅读,以上就是"执行linux命令清理服务器缓存并返回结果怎么实现"的内容了,经过本文的学习后,相信大家对执行linux命令清理服务器缓存并返回结果怎么实现这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!
命令
服务器
服务
结果
进程
用户
脚本
缓存
密码
任务
用户名
链接
准备
学习
登录
验证
成功
内容
对象
标准
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
计算机三级数据库技术pdf
sql数据库名称在哪查
添加空间数据库链接
word 题目导入数据库
k3系统数据库密码
网络安全的长城
caviar数据库
手机怎么找网络安全密钥
零基础怎么做软件开发
工商银行服务器技术
网络安全和网络文明视频
nx文档服务器启动不了
学Java数据库技术重要吗
游戏软件开发 公司
德州智慧社区软件开发
小品之网络安全
铜牛信息 网络安全
戴尔服务器有哪些公司
7月23日网络安全
服务器带宽限制
大宗软件开发定制
移动应用软件开发期末考试
数字网络技术有哪些
手机app软件开发类
长宁区品质数据库价钱
计算机网络技术基础书
服务器内怎么找系统
计算机网络技术的就业环境
数据库设计需求分析的问题
数据库删除全部索引