执行linux命令清理服务器缓存并返回结果怎么实现
发表于:2026-11-04 作者:千家信息网编辑
千家信息网最后更新 2026年11月04日,这篇文章主要讲解了"执行linux命令清理服务器缓存并返回结果怎么实现",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"执行linux命令清理服务器缓存并
千家信息网最后更新 2026年11月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安全错误
数据库的锁怎样保障安全
云南咖啡
中国互联网科技工作委员会毛军
奇酷互联网科技公司
艾特科技互联网
小马过河互联网科技
上海喔噻互联网科技
电子科技大学互联网
西安互联网科技公司
深圳期待互联网科技
亿人帮互联网科技
国外互联网科技网站
新华互联网科技校企合作
茂名市互联网科技产业园
荆州市昕露互联网络科技有限公司
坤平互联网科技
银行科技岗属于互联网吗
广州富喜互联网络科技
互联网风格科技公司名称
东营紫格互联网科技
互联网科技大会大佬
中关村互联网 科技集团
广州百单互联网科技有限公司
中国互联网科技工作委员会毛军
奇酷互联网科技公司
赫美联合互联网科技
广州紫鲸互联网科技
互联网科技生活的内容
中盈科技互联网信息有限公司
互联网科技寓意
长沙茂晟互联网科技有限公司