使用crontab定时保存top信息到文件,并保存到数据库中
生活随笔
收集整理的這篇文章主要介紹了
使用crontab定时保存top信息到文件,并保存到数据库中
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
上篇介紹了通過 crontab將linux中的top信息寫入文件中
https://blog.csdn.net/qq_41946557/article/details/102686700
這篇說一下,將保存的top信息,插入到數據庫中,并且也是持續的插入。
首先,我們查看一下文檔:
然后根據其建表: 【注建表是在linux上,安裝mysql?https://blog.csdn.net/qq_41946557/article/details/102680532】
【當然你可以現在win下測試,之后再linux上創建,前提,將我們保存的文件傳到win上。】
DROP TABLE IF EXISTS `top`; CREATE TABLE `top` (`pid` varchar(255) NOT NULL,`user` varchar(255) DEFAULT NULL,`pr` varchar(255) DEFAULT NULL,`ni` varchar(255) DEFAULT NULL,`virt` varchar(255) DEFAULT NULL,`res` varchar(255) DEFAULT NULL,`shr` varchar(255) DEFAULT NULL,`s` varchar(255) DEFAULT NULL,`cpu` varchar(255) DEFAULT NULL,`mem` varchar(255) DEFAULT NULL,`time` varchar(255) DEFAULT NULL,`command` varchar(255) DEFAULT NULL,PRIMARY KEY (`pid`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8;項目架構:?
代碼來了:?
pom.xml文件【帶打包,具體打包在后面介紹】
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.henu</groupId><artifactId>toptest</artifactId><version>1.0-SNAPSHOT</version><dependencies><dependency><groupId>org.mybatis</groupId><artifactId>mybatis</artifactId><version>3.4.5</version></dependency><dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>5.1.6</version></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.10</version></dependency></dependencies><build><finalName>top</finalName><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.0</version><configuration><source>1.6</source><target>1.6</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-assembly-plugin</artifactId><version>2.5.5</version><configuration><descriptorRefs><descriptorRef>jar-with-dependencies</descriptorRef></descriptorRefs><archive><manifest><mainClass>com.config.ReadTxt</mainClass></manifest></archive><finalName>McIDE</finalName></configuration><executions><execution><id>make-assembly</id><phase>package</phase><goals><goal>single</goal></goals></execution></executions></plugin></plugins></build> </project>jdbcConfig.properties
driver=com.mysql.jdbc.Driver url=jdbc:mysql://localhost:3306/linux?useUnicode=true&characterEncoding=utf8 username=root password=rootSqlMapConfig.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE configuration PUBLIC "-//mybatis.org//DTD Config 3.0//EN""http://mybatis.org/dtd/mybatis-3-config.dtd"> <configuration><properties resource="jdbcConfig.properties"></properties><!--使用typeAliases配置別名,它只能配置bean中類的別名--><typeAliases><package name="com.pojo"></package></typeAliases><!-- 配置環境 --><environments default="mysql"><!--配置mysql的環境--><environment id="mysql"><!--配置事務的類型--><transactionManager type="JDBC"></transactionManager><!--配置數據源(連接池)--><dataSource type="POOLED"><!--配置連接數數據庫的基本信息--><property name="driver" value="${driver}"/><property name="url" value="${url}"/><property name="username" value="${username}"/><property name="password" value="${password}"/></dataSource></environment></environments><!--配置映射文件的位置--><mappers><mapper resource="mapper/TopDao.xml"></mapper></mappers></configuration>實體類TopPojo【注具體getter&setter及構造方法并沒有寫入】
package com.pojo;/*** @author George* @description top實體類**/ public class TopPojo {private String pid;private String user;private String pr;private String ni;private String virt;private String res;private String shr;private String s;private String cpu;private String mem;private String time;private String command; }TopDao
package com.dao;import com.pojo.TopPojo; /*** @author George* @description dao層**/ public interface TopDao {int insert(TopPojo topPojo); }ReadTxt【重點】main方法
package com.config;import com.dao.TopDao; import com.pojo.TopPojo; import org.apache.ibatis.io.Resources; import org.apache.ibatis.session.SqlSession; import org.apache.ibatis.session.SqlSessionFactory; import org.apache.ibatis.session.SqlSessionFactoryBuilder;import java.io.BufferedReader; import java.io.FileReader; import java.io.IOException; import java.io.InputStream; import java.util.HashSet; import java.util.Set; import java.util.regex.Matcher; import java.util.regex.Pattern;/*** @author George* @descriptioncom.config.ReadTxt**/ public class ReadTxt {public static void main(String[] args) throws IOException {TopDao topDao;InputStream in;SqlSession sqlSession;in = Resources.getResourceAsStream("SqlMapConfig.xml");//2.創建SqlSessionFactory工廠SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(in);//3.使用工廠生成SqlSession對象sqlSession = factory.openSession();//4.使用SqlSession創建Dao接口的代理對象topDao = sqlSession.getMapper(TopDao.class);Set<String> set = new HashSet<String>();BufferedReader br = new BufferedReader(new FileReader("/root/top_2019-10-22.txt"));String line = null;Pattern pattern = Pattern.compile("[0-9]{1,}");boolean flag = true;TopPojo topPojo = new TopPojo();while ((line = br.readLine())!= null){String[] words = line.trim().split(" ");String[] newArr = new String[12];Matcher matcher = pattern.matcher(words[0]);flag = matcher.matches();int num = 0;if (flag == true){for (int i = 0; i < words.length; i++) {String newWord = words[i].trim();if (!"".equals(newWord)){newArr[num] = newWord;num ++;}}if (set.contains(newArr[0])) {set.add(newArr[0]);System.out.println(newArr[0]);// System.out.println(Arrays.toString(newArr));topPojo.setPid(newArr[0]);topPojo.setUser(newArr[1]);topPojo.setPr(newArr[2]);topPojo.setNi(newArr[3]);topPojo.setVirt(newArr[4]);topPojo.setRes(newArr[5]);topPojo.setShr(newArr[6]);topPojo.setS(newArr[7]);topPojo.setCpu(newArr[8]);topPojo.setMem(newArr[9]);topPojo.setTime(newArr[10]);topPojo.setCommand(newArr[11]); // System.out.println(topPojo);topDao.insert(topPojo);sqlSession.commit();newArr = new String[12];}}}br.close();sqlSession.close();in.close();}}TopDao.xml?
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN""http://mybatis.org/dtd/mybatis-3-mapper.dtd" ><mapper namespace="com.dao.TopDao"><insert id="insert" parameterType="topPojo">insert into top(pid,user,pr,ni,virt,res,shr,s,cpu,mem,time,command)values (#{pid},#{user},#{pr},#{ni},#{virt},#{res},#{shr},#{s},#{cpu},#{mem},#{time},#{command})</insert></mapper>打jar包【重點】
將jar包傳送到linux上
先做一下測試:
輸入:
java -jar McIDE-jar-with-dependencies.jar com.config.ReadTxt無錯誤:
然后進入mysql中查詢:
最后:
定時保存執行jar。
vi toptest.sh
#!/bin/sh NAME="/root/top_"$(date +%Y-%m-%d) /usr/bin/top -b -d 1 -n 1 >> $NAME.txt java -jar McIDE-jar-with-dependencies.jar com.config.ReadTxtcrontab -e
*/1 * * * * /bin/bash /root/toptest.sh搞定!!!
?
超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生總結
以上是生活随笔為你收集整理的使用crontab定时保存top信息到文件,并保存到数据库中的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 通过 crontab将linux中的to
- 下一篇: Spark _07_补充部分算子【二】