-
bat脚本监控tomcat并启动_bat自动处理:java配置+tomcat启动
2020-12-24 05:10:15项目运行需要启动集群的多台服务器,每次配置一个新集群的时候手动安装java和tomcat太麻烦,写了一个bat脚本自动安装配置。bat1:查询服务器中是否有java和tomcat(免安装),没有从u盘进行拷贝。然后配置java环境变量...项目运行需要启动集群的多台服务器,每次配置一个新集群的时候手动安装java和tomcat太麻烦,写了一个bat脚本自动安装配置。
bat1:查询服务器中是否有java和tomcat(免安装),没有从u盘进行拷贝。然后配置java环境变量。
文件路径修改好后,右键,管理员运行即可。
@echo off
rem ---------------检查目录begin---------------
set dPan=d:\
set ePan=e:\
set emcasFolder=emcas\
set javaFolder=java
set tomcatFolder=tomcat
::判断emcas文件夹是否存在,不存在创建
echo 检查emcas文件夹
if exist %dPan% (
if exist %dPan%%emcasFolder% (
rem 目录d:\MIS已存在,无需创建
echo 目录%dPan%%emcasFolder%已存在,无需创建
) else (
rem 创建d:\MIS
echo 创建%dPan%%emcasFolder%
md %dPan%%emcasFolder%
)
) else (
echo !!
echo !!执行失败,当前系统上不存在%dPan%盘
echo !!
)
pause
::判断java文件夹(免安装)是否存在,不存在从E盘(自己的U盘)相同目录下copy
echo 检查java安装文件
if exist %dPan%%emcasFolder%%javaFolder% (
rem 目录d:\MIS\OracleDBAutoBackup已存在,无需创建
echo 目录%dPan%%emcasFolder%%javaFolder%已存在无需创建
) else (
rem 创建d:\MIS\OracleDBAutoBackup
echo %dPan%%emcasFolder%%javaFolder%不存在,待创建...
pause
xcopy /e %ePan%%emcasFolder%%javaFolder% %dPan%%emcasFolder%%javaFolder%
)
pause
::判断tomcat文件夹(免安装)是否存在,不存在从E盘(自己的U盘)相同目录下copy
echo 检查tomcat安装文件
if exist %dPan%%emcasFolder%%tomcatFolder% (
rem 目录d:\MIS\OracleDBAutoBackup已存在,无需创建
echo 目录%dPan%%emcasFolder%%tomcatFolder%已存在无需创建
) else (
rem 创建d:\MIS\OracleDBAutoBackup
echo %dPan%%emcasFolder%%tomcatFolder%不存在,待创建...
pause
xcopy /e %ePan%%emcasFolder%%tomcatFolder% %dPan%%emcasFolder%%tomcatFolder%
)
pause
rem ---------------检查目录end---------------
rem ---------------配置java环境变量begin---------------
:: TODO:设置java环境变量
:: Author: Gwt
color 02
::设置java的安装路径,可方便切换不同的版本
set input=
set /p "input=请输入java的jdk路径(或回车默认路径为D:\emcas\java\jdk1.8.0_131):"
if defined input (echo jdk已设置) else (set input=D:\emcas\java\jdk1.8.0_131)
echo jdk路径为%input%
set javaPath=%input%
::设置jre的安装路径,可方便切换不同的版本
set input=
set /p "input=请输入java的jre路径(或回车默认路径为D:\emcas\java\jdk1.8.0_131\jre):"
if defined input (echo jdk已设置) else (set input=D:\emcas\java\jdk1.8.0_131\jre)
echo jre路径为%input%
set jrePath=%input%
::如果有的话,先删除JAVA_HOME
wmic ENVIRONMENT where "name='JAVA_HOME'" delete
::如果有的话,先删除ClASS_PATH
wmic ENVIRONMENT where "name='CLASS_PATH'" delete
::如果有的话,先删除JRE_HOME
wmic ENVIRONMENT where "name='JRE_HOME'" delete
::创建JAVA_HOME
wmic ENVIRONMENT create name="JAVA_HOME",username="",VariableValue="%javaPath%"
::创建JRE_HOME
wmic ENVIRONMENT create name="JRE_HOME",username="",VariableValue="%javaPath%"
::创建CLASS_PATH
wmic ENVIRONMENT create name="CLASS_PATH",username="",VariableValue=".;%%JAVA_HOME%%\lib\tools.jar;%%JAVA_HOME%%\lib\dt.jar;"
::在环境变量path中,剔除掉变量java_home中的字符,回显剩下的字符串
call set xx=%Path%;%JAVA_HOME%\jre\bin;%JAVA_HOME%\bin
::echo %xx%
::将返回显的字符重新赋值到path中
wmic ENVIRONMENT where "name='Path' and username=''" set VariableValue="%xx%"
pause
rem ---------------配置java环境变量end---------------
bat2:tomcat自启动。
将这个文件的目录修改好后,放到C:\Users\ZhangYu\AppData\Roaming\Microsoft\Windows\Start Menu\Programs\Startup (自启动目录)下,电脑开启即可自动运行。
D:
cd D:\zysoft\apache-tomcat-8.0.45-windows-x64\apache-tomcat-8.0.45\bin
call startup.bat
TIMEOUT /T 5 /NOBREAK
cd D:\zysoft\apache-tomcat-8.0.45-windows-x64\apache-tomcat-8.0.45\bin
call startup.bat
-
java sqlserver 查询_Java如何连接SQLServer,并实现查询、修改、删除方法
2021-02-28 09:17:22场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”。 这时候我们有需要做数据初始化的操作,需要把历史数据做删除... 配置在框架配置文件处。public classConst {public static final S...场景:A:在UI自动化时,删除数据时候,在界面UI提示“该XX已被使用,无法删除”。 这时候我们有需要做数据初始化的操作,需要把历史数据做删除,来确脚本运行的重复执行,和稳定性质。
B: 在做新增操作时候,需要校验数据是否存在后台。需要校验后台数据。
实现思路:
1.把数据库的连接地址、用户名、密码。 配置在框架配置文件处。
public classConst {public static final String DB_URL = "XXXX";public static final String DB_DatabaseName = "XXX";public static final String DB_UserName = "XXX";public static final String DB_Password = "XXX";
}
2.DBHelper 方法
1 packagecom.pensee.utils;2
3 importjava.sql.Connection;4 importjava.sql.DriverManager;5 importjava.sql.ResultSet;6 importjava.sql.SQLException;7 importjava.sql.Statement;8 importcom.pensee.config.Const;9
10 public classDBHelper {11 static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";12 static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +"";13 static Connection con = null;14 static Statement st = null;15 static ResultSet res = null;16
17
18 public static voiddataBase() {19 try{20 Class.forName(driver);21 con = DriverManager.getConnection(url, ""+ Const.DB_UserName +"", ""+ Const.DB_Password +"");22 } catch(ClassNotFoundException e) {23 System.err.println("装载 JDBC/ODBC 驱动程序失败。");24 e.printStackTrace();25 } catch(SQLException e) {26 System.err.println("无法连接数据库");27 e.printStackTrace();28 }29 }30
31 /**
32 * 查询SQL方法33 *@paramsql34 *@return
35 *@throwsSQLException36 */
37 public static ResultSet find(String sql) throws SQLException{//对数据库进行数据查询38 //获得连接
39 dataBase();40 st=con.createStatement();41 try{42 res=st.executeQuery(sql);43 returnres;44 } catch(SQLException e) {45 e.printStackTrace();46 return null;47 }48
49 }50 /**
51 * SQL删除修改52 *@paramsql53 *@return
54 *@throwsSQLException55 */
56 public static boolean update(String sql) throws SQLException{//对增删改57 //获得连接
58 dataBase();59 st =con.createStatement();60 try{61 st.executeUpdate(sql);62 return true;63 } catch(SQLException e) {64 e.printStackTrace();65 return false;66 }67 }68
69 }
3. 如何调用DB
String sql = "update hr_staff_policy set HolidayPolicy = 3 where staffno ='0092'";boolean result =DBHelper.update(sql);
Assert.isTrue(result);
System.out.println("SQL执行结果为:" +DBHelper.update(sql));
4. 效果图:
框架如何增加JDBC
com.microsoft.sqlserver
sqljdbc4
4.0
进入sqljdbc4.jar包所在的位置,cmd运行以下命令(即在我们的project 的\lib路径下)
mvn install:install-file -Dfile=sqljdbc4.jar -Dpackaging=jar -DgroupId=com.microsoft.sqlserver -DartifactId=sqljdbc4 -Dversion=4.0
安装成功之后就可以在pom中引用sqljdbc依赖了。(已经加好上传了)
五、 优化后的代码
1 importjava.sql.Connection;2 importjava.sql.DriverManager;3 importjava.sql.ResultSet;4 importjava.sql.ResultSetMetaData;5 importjava.sql.SQLException;6 importjava.sql.Statement;7 importjava.util.ArrayList;8
9 importorg.apache.logging.log4j.LogManager;10 importorg.apache.logging.log4j.Logger;11
12 importcom.pensee.config.Const;13
14 public classDBHelper {15 private static final Logger logger = LogManager.getLogger(DBHelper.class);16
17 static String driver = "com.microsoft.sqlserver.jdbc.SQLServerDriver";18 static String url = "jdbc:sqlserver://"+ Const.DB_URL +";DatabaseName="+ Const.DB_DatabaseName +"";19
20 private staticConnection getDBConnection() {21 Connection con = null;22 try{23 Class.forName(driver);24 con = DriverManager.getConnection(url, ""+ Const.DB_UserName + "", ""+ Const.DB_Password +"");25 } catch(ClassNotFoundException e) {26 logger.error("装载 JDBC/ODBC 驱动程序失败。");27 } catch(SQLException e) {28 logger.error("无法连接数据库");29 }30 returncon;31 }32
33 private static voidcloseConnection(Connection con) {34 try{35 con.close();36 } catch(SQLException e) {37 ;38 }39 }40
41 /**
42 * 查询SQL方法43 *@paramsql44 *@return
45 *@throwsSQLException46 */
47 public static ArrayList query(String sql) throws SQLException{//对数据库进行数据查询48 //获得连接
49 Connection con =getDBConnection();50 Statement st =con.createStatement();51 ResultSet res;52 try{53 res =st.executeQuery(sql);54 } catch(SQLException e) {55 throw new RuntimeException("查询失败: " +sql);56 }57 ArrayList result = new ArrayList();58 while(res.next()) {59 ResultSetMetaData rsmd =res.getMetaData();60 int columnCount =rsmd.getColumnCount();61 for (int i=0;i
69 * SQL删除修改70 *@paramsql71 *@return
72 *@throwsSQLException73 */
74 public static void updateDB(String sql) throws SQLException{//对增删改75 //获得连接
76 Connection con =getDBConnection();77 Statement st =con.createStatement();78 int recordsNo =st.executeUpdate(sql);79 if(recordsNo == 0) {80 throw new RuntimeException("执行失败: " +sql);81 } else if(recordsNo == 1){82 logger.info("更新成功1条: " +sql);83 } else{84 logger.info("更新成功条数: " +recordsNo);85 }86 closeConnection(con);87 }88
89 //存在数据的时候更新,不存在的时候不需要更新,影响数据行数为0或者1
90 public static void updateDBIfExist(String sql) throws SQLException{//对增删改91 //获得连接
92 Connection con =getDBConnection();93 Statement st =con.createStatement();94 int recordsNo =st.executeUpdate(sql);95 logger.info("更新成功的record数量 " +recordsNo);96 closeConnection(con);97 }98
99 public static void deleteVacationBalance(String code, String staffId) throwsSQLException {100 String sql = "DELETE lb FROM Leave_Balance lb LEFT JOIN Leave_Code lc ON lc.id = lb.LeaveCode_id "
101 + "WHERE lc.LeaveBenefitCode ='" + code + "' and taffno ='" + staffId + "'";102 updateDB(sql);103 }104
105 /**
106 * 删除历史组织架构107 *@paramcode108 *@paramstaffId109 *@throwsSQLException110 */
111 public static void deleteHistoryOrganzationalStructure(String hisname) throwsSQLException {112 String sql = "DELETE FROM Org_DataType WHERE NAME='" + hisname + "'";113 updateDB(sql);114 }115
116 /**
117 * 取得员工工号,该员工没有卡,用于case E-653118 *@return
119 *@throwsSQLException120 */
121 public static String getStaffNoWithoutCard() throwsSQLException {122 String sql = "SELECT ac.staffNo FROM At_Card ac INNER JOIN hr_Staff hs ON ac.StaffNo = hs.StaffNo "
123 + "WHERE ac.No = '' AND hs.StaffType = 'Active'";124 String id = query(sql).get(0);125 String sqlDelete = String.format("DELETE ap FROM At_PunchClockInfo ap INNER JOIN At_Card ac ON ap.At_Card_id = ac.Id "
126 + "WHERE ac.StaffNo ='%s'", id);127 updateDB(sqlDelete);128 returnid;129 }130 }
六: jenkins配置增加JDBC
-
Oracle 主要配置文件介绍
2007-08-25 10:07:40Oracle 主要配置文件介绍: profile文件,oratab 文件,数据库实例初始化文件 initSID.ora,监听配置文件, sqlnet.ora 文件,tnsnames.ora 文件 <br>1.2 Oracle 主要配置文件介绍 1.2.1 /etc/profile 文件... -
高级Shell脚本编程
2013-10-28 10:08:19在一个脚本中使用cmp命令来比较两个文件. 12-33. basename和dirname 12-34. 检查文件完整性 12-35. Uudecode编码后的文件 12-36. 查找滥用的链接来报告垃圾邮件发送者 12-37. 分析一个垃圾邮件域 12-38. 获得... -
精通JS脚本之ExtJS框架.part2.rar
2013-03-02 13:31:19《精通JS脚本之ExtJS框架》附有配套光盘,提供了书中实例的源代码和视频教学文件。此外,读者还可以通过访问itzcn网站来获得即时在线帮助。 《精通JS脚本之ExtJS框架》可以作为Web开发的自学参考书,也可以作为... -
applem2_20120610苹果引擎配套工具,内有登陆器配置
2013-01-23 22:40:47(用更新包中的新沙城配置文件替换原来的) 2、更新战士技能十步一杀是否允许穿人穿怪选项设置 3、更新技能支持(解毒术,火焰冰,群体雷电术,群体施毒术,彻地钉,狮子吼,寒冰掌 诅咒术,擒龙手,移形换位,护体... -
精通qtp_自动化测试技术领航.pdf
2015-03-30 17:12:381.4 认清并请远离QTP的脚本录制模式 1.4.1 QTP的两种视图及思维转换 1.4.2 总结 知识点巩固和举一反三练习 1.5 QTP精华——对象库(上)之基础攻略篇 1.5.1 引言 1.5.2 对象库的出现改写了软件测试历史 1.5.3 ... -
│ ├─查询过滤器(查询逻辑无需编码,系统根据页面配置自动生成) │ ├─高级查询器(弹窗自动组合查询条件) │ ├─Excel导入导出工具集成(支持单表,一对多 导入导出) │ ├─平台移动自适应支持 ├─系统...
-
自由宿主Asp.net网站通用后台管理系统 v3.2.rar
2019-08-30 17:23:272. 编辑页面**期、编辑器和验证脚本整理,调整到脚本文件edit.js中,如果有其他需求,可以修改该脚本文件; 3. 增加oracle和mysql数据库支持,支持,系统可以支持ms sql、access、oracle和mysql等主流数据库; 4. ... -
Ubuntu权威指南(2/2)
2010-12-05 09:01:536.3 保存编辑的文件并退出vim 136 6.4 vim编辑器的基本命令 137 6.4.1 移动光标位置 137 6.4.2 输入文本 138 6.4.3 修改与替换文本 138 6.4.4 撤销先前的修改 139 6.4.5 删除文本 139 6.4.6 复制、删除与粘贴文本 ... -
Ubuntu权威指南(1/2)
2010-12-05 08:57:036.3 保存编辑的文件并退出vim 136 6.4 vim编辑器的基本命令 137 6.4.1 移动光标位置 137 6.4.2 输入文本 138 6.4.3 修改与替换文本 138 6.4.4 撤销先前的修改 139 6.4.5 删除文本 139 6.4.6 复制、删除与粘贴文本 ... -
切换至 5.56 枪械配置文件表,并使用第一个配置 G7 切换至 9mm 枪械配置文件表,并使用第一个配置 G8 切换至 7.62 枪械配置文件表,并使用第一个配置 G9 切换至 .45 枪械配置文件表,并使用第一个配置 G10 ...
-
sed与awk的那些事儿!
2020-05-11 16:12:46sed多数用于修改配置文件,并配合脚本使用,实现非交互方式自动部署各种服务。 awk有着很厉害的查询功能,下面我们来看看awk的优势吧! Sed命令可以配合一下参数使用: p显示 d删除 s替换 -n 屏蔽默认输出 a 行后...sed与awk的那些事
- 在这里给大家简单的介绍一下sed和awk的的基本常用选项
- sed多数用于修改配置文件,并配合脚本使用,实现非交互方式自动部署各种服务。
- awk有着很厉害的查询功能,下面我们来看看awk的优势吧!
Sed命令可以配合一下参数使用:
p显示 d删除 s替换 -n 屏蔽默认输出 a 行后插入 i 行前插入 c 整行替换一. p是打印输入的意思也就是print单词的首字母:
sed -n ‘p’ /etc/passwd #输出/etc/passwd的全部配置 sed -n ‘1p’ /etc/passwd #输入第一行 sed -n ‘1,2p’ /etc/passwd #输出第一行到第二行 sed -n ‘/^root/p’ /etc/passwd #输出以root开头的行 sed -n ‘1p;4p’ /etc/passwd #输出第一行和第四行 sed -n ‘/bash$/p’ /etc/passwd #输出以bash结尾的行
二 . 首先我们来看下/etc/passwd这个文件的内容
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
执行sed ‘1d’ /etc/passwd #删除/etc/passwd文件中的第一行
[root@localhost ~]#sed ‘1d’ /etc/passwd bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
这里我们可以看到确实第一行被我们删除了,让我们再来看一下配置文件
[root@localhost ~]# cat /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin
有很多人会疑问为什么删除了,配置文件里还有呢?
因为我们执行命令的时候没有加上-i选项,建议初学者慎用-i选项
如果加上-i选项那么配置文件里符合条件的内容就会被删除掉。即:sed -i ‘1d’ /etc/passwd
d是删除也就是delete单词的首字母:
sed ‘1d’ /etc/passwd #删除/etc/passwd文件中的第一行 sed ‘1,2d’ /etc/passwd #删除第一行到第二行 sed ‘/^root/d’ /etc/passwd #删除以root开头的行 sed ‘1d;4d’ /etc/passwd #删除第一行和第四行 sed ‘/bash$/d’ /etc/passwd #删除以bash结尾的行
三. s是替换也就是substitute(代替)单词的首字母:
格式 ‘s/要被替换的内容/替换成什么/’ 文件路径ed -n ‘63,78s/#//’ a.txt 没加-p不输出 sed -n ‘s/aa/bb/2’ a.txt 将每行的第二个aa换成bb sed -n ‘s/root/xwh/p’ a.txt p是输出出来 sed -n ‘s#/bin/bash#/bin/nologin#’ a.txt 用#当分隔符 sed -n ‘65,78s/^/#/’ 开头加上注释 sed -n 'sed ‘2s/a/p/2p’ a.txt 替换第二行的第二个a字符为p,后面的p是输出
sed工具的多行文本处理操作:
i: 在指定的行之前插入文本
a:在指定的行之后追加文本
c:整行替换[root@kube-node1 ~]# vimt a.txt 创建一个测试文件随意写点东西 servername 192.168.4.1 test sed -i -a -c
例子1:
[root@kube-node1 ~]# sed -i '2i hello world! ’ a.txt 在第2行前插入指定内容 [root@kube-node1 ~]# cat a.txt servername 192.168.4.1 hello world! 这行就是我们用i添加进来的 test sed -i -a -c
例子2:
[root@kube-node1 ~]# sed -i '2a this is a test ’ a.txt 第2行后前插入指定内容 [root@kube-node1 ~]# cat a.txt servername 192.168.4.1 hello world! this is a test 这行就是我们用a添加进来的 test sed -i -a -c
例子3:
[root@kube-node1 ~]# sed -i '3c test test test ’ a.txt 将第3行替换为指定内容 [root@kube-node1 ~]# cat a.txt servername 192.168.4.1 hello world! test test test test sed -i -a -c
awk基本使用
NR 指定行 NF指定列 -F 指定分隔符
格式:awk [选项] ‘[条件]{指令}’ 文件awk ‘{ print $1 $2}’ /root/a.txt //输出文件第一列和第二列的值 逐行任务 df -h | awk ‘NR==2{print $4}’ //输出第二行第4列的值 awk -F: ‘{print $1,$7}’ /etc/passwd //以冒号为分隔符 awk -F: ‘{print NR,NF}’ /etc/passwd //输出该文件有多少行,每行有多少列 中间用逗号相隔。逗号是空格,可以加可不加 awk -F: ‘{print $1,“家目录是” $7}’ /etc/passwd //awk可以输出常量,需要用引号引起来 RX是接受数据量 TX是回复的数据量 ifconfig eth0 | awk ‘/RX p/{print $5}’ //利用正则匹配,过滤包含RX p的行
利用3种方法获得剩余根分区可用的空间
[root@localhost ~]# df -h / 文件系统 容量 已用 可用 已用% 挂载点 /dev/sda1 385G 66G 300G 18% /
方法一:df -h / | tail -1 | awk ‘{print $4}’
方法二: df -h / | awk ‘NR==2{print $4}’
方法三:df -h | awk ‘$3 == “66G”{print $4}’awk会逐行处理文本,支持在处理第一行之前做一些准备工作(比如先定义一个变量),以及在处理完最后一行之后做一些总结性质的工作(最后喊出变量)
格式:
awk [选项] ‘[条件]{指令}’ 文件
awk [选项] ’ BEGIN{指令} {指令} END{指令}’ 文件
BEGIN行前操作执行一次 awk ‘BEGIN{a=1;print a}’ 中间要用分号间隔,固定格式
{ } 逐行执行,END 行后处理只执行一次
示例:首先利用BEGIN定义变量a,并过滤以bash结尾的行,有一行a的数就加1,最后输出变量a [root@localhost ~]#awk 'BEGIN{a=0}/bash$/{a++}END{print a}' /etc/passwd 6 统计全文行数: [root@localhost ~]# awk 'BEGIN{x=1}{x++}END{print x} ' /etc/passwd 49 输出第3列大于10并且小于20的用户: [root@localhost ~]# awk -F: '$3>10 && $3<20{print}' /etc/passwd operator:x:11:0:operator:/root:/sbin/nologin games:x:12:100:games:/usr/games:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin
awk分支:
单分支 ‘{ if(条件){编辑指令}}’ 双分支 ‘{if (条件){编辑指令}}else{编辑指令}’ 多分支 ‘{if (条件) {编辑指令}else if(条件2){编辑指令}}’ awk -F: '{if($3<=1000){i++}}END{print i} ’ /etc/passwd awk -F: ‘{if($3<1000){a++}else{b++}}END{print a,b}’ /etc/passwd awk -F: ‘{if($7=="/bin/bash"){x++}else{y++}}END{print x,y}’ /etc/passwd awk -F: ‘BEGIN{x=0;b=0}{if($3>30){x++}else if($3<50){b++}}END{print x,b}’ /etc/passwd
数组:
格式:
for(变量 in 数组名){print 变量,数组名[变量]}
awk ‘BEGIN{a1=100;a2=200;print a1,a2}’ 一个下标对应一个值
awk ‘BEGIN{a1=12;a2=13;for (i in a){print i, a[i]}}’
遍历数组:
cat a.txt
abc 对应 a[abc]=1
xyz 对应 a[xyz]=1
xyz 对应 a[xyz]=2
abc 对应 a[abc]=2
opq 对应 a[opq]=1
abc 对应 a[abc]=3
{a[$1]++} //数组名可以任意,逐行任务收集数据
awk ‘{a[$1]++}END{for(i in a){print i,a[i]}}’ a.txt
循环的是下标[root@kube-node1 ~]# cat a.txt //做一个素材使用以下是内容 abc 192.168.0.1 xyz 192.168.0.2 xyz 192.168.0.2 abc 192.168.0.1 opq 192.168.0.3 abc 192.168.0.1
输出各个ip出现了几次
格式 ‘{ }END{ for ( ) {print }}’
[root@kube-node1 ~]# awk ‘{ip[$2]++}END{for (i in ip){print i,ip[i]}}’ a.txt举例查出/var/log/httpd/acces_log中哪个ip访问了几次?
[root@svr5 ~]# awk ‘{ip[$1]++}{for(i in ip)}{print i ,ip[i]}’ /var/log/httpd/acces_log | grep sort -nr -n 是正序 -r 是倒叙
下面我们用AWK写一个脚本来获取服务器硬件信息
[root@svr5 ~]# vim test.sh #!/bin/bash ip=ifconfig eth0 | awk '/inet /{print $2}' echo “本地IP地址是:”$ip cpu=uptime | awk '{print $NF}' echo "本机CPU最近15分钟的负载是:"$cpu net_in=ifconfig eth0 | awk '/RX p/{print $5}' echo “入站网卡流量为:”$net_in net_out=ifconfig eth0 | awk '/TX p/{print $5}' echo “出站网卡流量为:”$net_out mem=free | awk '/Mem/{print $4}' echo “内存剩余容量为:$mem disk=`df | awk '/\/$/{print $4}'` echo "根分区剩余容量为:"$disk user=`cat /etc/passwd |wc -l` echo "本地账户数量为:"$user login=`who | wc -l` echo "当前登陆计算机的账户数量为:"$login process=`ps aux | wc -l` echo "当前计算机启动的进程数量为:"$process soft=`rpm -qa | wc -l` echo "当前计算机已安装的软件数量为:"$soft
最后让我们一起来运行这个脚本吧!
[root@localhost ~]# bash test.sh 本地IP地址是:192.168.71.128 本机CPU最近15分钟的负载是:0.05 入站网卡流量为:2179218 出站网卡流量为:110655 内存剩余容量为:11239072 根分区剩余容量为:314253608 本地账户数量为:48 当前登陆计算机的账户数量为:3 当前计算机启动的进程数量为:228 当前计算机已安装的软件数量为:1578
-
X-Scan v3.1
2018-10-22 08:43:03/dat/config.ini -- 用户配置文件,用于保存待检测端口列表、CGI漏洞检测的相关设置及所有字典文件名称(含相对路径) /dat/config.bak -- 备份配置文件,用于恢复原始设置 /dat/cgi.lst -- CGI漏洞列表 /dat/iis_... -
网管教程 从入门到精通软件篇.txt
2010-04-25 22:43:49CCB:Visual Basic动态按钮配置文件 CCH:Corel图表文件 CCO:CyberChat数据文件 CCT:Macromedia Director Shockwave投影 CDA:CD音频轨道 CDF:Microsoft频道定义格式文件 CDI:Philip的高密盘交互格式 CDM... -
RED HAT LINUX 6大全
2011-10-21 18:46:067.2.7 sendmail.cf:配置文件 114 7.2.8 自动生成sendmail.cf文件 124 7.2.9 测试sendmail和sendmail.cf 126 7.2.10 普通的sendmail配置错误 128 7.3 POP 128 7.3.1 配置POP服务器 128 7.3.2 配置ipop3d 128 7.3.3 A... -
大量批处理实用程序例程
2018-05-17 21:06:30本资源由大量的实用批处理文件组成,删除.txt尾缀名双击即可直接使用,既是学习的模板也可以作为实用程序,如下为文件组成,涉及文件管理,系统,网络,小工具等等: 0-reaname 2000XP停止打印.bat BAT珍藏 dir.bat... -
PLSQL Developer 8.0.3.1510 简体中文绿色破解版
2010-07-15 16:36:07对象浏览器——可配置的树形浏览能够显示同PL/SQL开发相关的全部信息,使用该浏览器可以获取对象描述、浏览对象定义、创建测试脚本以便调试、使能或禁止触发器或约束条件、重新编译不合法对象、查询或编辑表格、... -
X-Scan
2008-04-04 15:19:43使用说明.txt -- X-Scan使用说明 /dat/language.ini -- 多语言配置文件,可通过设置“LANGUAGE\SELECTED”项进行语言切换 /dat/language.* -- 多语言数据文件 /dat/config.ini -- 用户配置文件,用于... -
Linux指令一周通 (技术图书大系).azw3
2019-05-22 13:19:067.4 autoreconf指令:更新已经生成的配置文件 7.5 autoscan指令:生成configure.in模板文件 7.6 autoupdate 指令:更新 configure.in文件 7.7 gcc指令:GNU的C和C++编译器 7.8 gdb指令:GNU调试器 7.9 gdbserver指令... -
2、sudo ./docker.sh restart #修改配置文件后,通过此名命令可重新加载容器运行 3、sudo ./docker.sh rm #删除容器 4、sudo ./docker.sh drun #后台运行容器 5、sudo ./docker.sh logs #在后台运行时,通过此命令...
-
Linux命令笔记
2019-03-14 09:16:583:apropos 查看配置文件信息 语法:apropos 配置文件 4:--help 查看命令主要选项 语法:命令 --help 5:info 获取帮助信息 语法:info 命令 6:help 获取Shell内置命令的帮助信息 语法:help 命令 7:apt-get 安装卸载... -
精通windows server 2008 命令行与powershell 电子书PDF版(第四卷)
2011-08-02 12:06:50包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,powershell等一系列的命令行管理方式以及脚本。本书侧重于系统、服务、网络... -
精通windows server 2008 命令行与powershell电子书PDF版(第三卷)
2011-08-02 12:04:43包括文件和文件夹的管理、磁盘管理、系统管理、活动目录管理、网络管理、网络服务管理、系统诊断、故障恢复、系统安全、批处理和配置文件,powershell等一系列的命令行管理方式以及脚本。本书侧重于系统、服务、网络... -
Visual C++程序开发范例宝典 含本书光盘源码(1-16章)全部共399个实例
2010-02-09 10:30:25cc实例150 修改文件及目录的名称 5.6 文件的读取与保存 cc实例151 顺序读取文件 cc实例152 制作日志文件 5.7 文件管理 cc实例153 分类整理磁盘文件 cc实例154 计算机磁盘空间报警... -
Visual C++程序开发范例宝典(PDF扫描版).part3
2015-03-15 20:51:39cc实例150 修改文件及目录的名称 5.6 文件的读取与保存 cc实例151 顺序读取文件 cc实例152 制作日志文件 5.7 文件管理 cc实例153 分类整理磁盘文件 cc实例154 计算机磁盘空间报警... -
中文分词工具word-1.0,Java实现的中文分词组件多种基于词典的分词算法
2014-11-05 15:47:22可以通过系统属性或配置文件的方式来指定路径,多个路径之间用逗号分隔开 类路径下的词典文件,需要在相对路径前加入前缀classpath: 指定方式有三种: 指定方式一,编程指定(高优先级): WordConfTools.set(... -
SQL Server 2008宝典--详细书签版(第1/2部分)
2013-02-06 13:11:303.3.4 利用编辑器自动生成查询语句 54 3.3.5 脱机编写SQL语句后连接到服务器 55 3.3.6 全屏显示查询编辑器 55 3.3.7 使用模板编写SQL语句 56 3.3.8 创建自定义模板 57 3.3.9 使用项目脚本和解决方案 58 3.4 ... -
迷你版SQL2000服务器
2015-01-23 17:32:375、计划任务只有在勾选时才会写入配置文件,在开启服务后才会读取并开启任务,如果计划任务中定义的数据库被删除或分离,任务会自动取消; 6、如果需要使用默认实例,请千万不要发布到有安装MSSQL且使用默认实例的... -
1350多个精品易语言模块
2015-07-26 12:21:30加 密配置文件操作模块.ec 加强执行1.0.ec 加解密文本1.1.ec 加载进度条.ec 加载进度条v2.0.ec 动 态加载菜单模块1.0版.ec 动态显示窗口.ec 动态类名.ec 动态组件操作模块.ec 动态菜单模块.ec 动态 调整分辩率.ec ...
-
光谱空间自适应均衡流基于各向异性扩散的多光谱图像降噪
-
2021.01.22_移动速度与更新率关系说明.pdf
-
Linkw-Href-att-源码
-
MySQL 高可用工具 DRBD 实战部署详解
-
MySQL 多平台多模式(安装、配置和连接 详解)
-
L2-014 列车调度 (25 分)
-
节后“回南天”将杀到,名悦集团教你如何养车护车
-
深究字符编码的奥秘,与乱码说再见
-
urlshort:我的urlshort gophercise回购-源码
-
mysql字符集补充说明
-
一种新型纱线毛羽图像特征识别算法的研究
-
volatile与synchronized的区别
-
基于电商业务的全链路数据中台落地方案(全渠道、全环节、全流程)
-
C语言零基础入门(详细讲解)
-
Galera 高可用 MySQL 集群(PXC v5.6 + Ngin
-
2021年软考系统规划与管理师-下午历年真题解析视频课程
-
tieba-BSK:纯python native生成百度贴吧回帖BSK参数(WIP)-源码
-
使用路径信任知识图对网页进行排名
-
实现 MySQL 读写分离的利器 mysql-proxy
-
python:DataFrame输出为csv(Pandas的to_csv()使用)