1、将两个文件合成一个文件
文件aa为:
1 2 3 4 5 6 7 8 9
a b c d e f g
文件bb为:
k l k l k l
k k k k k k k k k k k k k k k k k k k
1.1、cat
命令:cat aa bb > cc 得到cc为:
1 2 3 4 5 6 7 8 9
a b c d e f g
k l k l k l
k k k k k k k k k k k k k k k k k k k
1.2、paste
命令:paste aa bb > dd 得到dd为
1 2 3 4 5 6 7 8 9 k l k l k l
a b c d e f g k k k k k k k k k k k k k k k k k k k
2、linux后台执行程序
使用nohup命令来实现后台执行程序的功能。
命令:nohup command [arg...] &
其中,command表示要在后台执行的命令或程序,arg表示命令或程序的参数,&符号表示将命令或程序放到后台执行。
例如:如果要在后台执行一个Python脚本文件,
命令:nohup python script.py &
这样,该Python脚本文件将在后台执行,即使你关闭了终端窗口也不会停止执行。
3、linux解压、打包
3.1、将.tar文件解压
gzip testset_xxxx.tar可以得到testset_xxxx.tar.gz形式的压缩包。
3.2、将.tar.gz文件解压
tar -zxvf testset_xxxx.tar.gz即可得到文件。
3.3、将testset_xxxx文件打包成.tar.gz
tar -zcvf testset_xxxx.tar.gz testset_xxxx/
4、date
显示或设置系统时间与日期。在shell脚本中经常被使用到。
语法:
date(选项)(参数)
选项:
-d<字符串>:显示字符串所指的日期与时间。字符串前后必须加上双引号;
-s<字符串>:根据字符串来设置日期与时间。字符串前后必须加上双引号;
-u:显示GMT;
--help:在线帮助;
--version:显示版本信息。
参数:
<+时间日期格式>:指定显示时使用的日期时间格式。
常用格式如下:
%H # 小时,24小时制(00~23)
%I # 小时,12小时制(01~12)
%k # 小时,24小时制(0~23)
%l # 小时,12小时制(1~12)
%M # 分(00~59)
%p # 显示出上午或下午
%r # 时间,12小时制
%s # 从1970年1月1日0点到目前经历的秒数
%S # 秒(00~59)
%T # 时间(24小时制)(hh:mm:ss)
%X # 显示时间的格式(%H时%M分%S秒)
%Z # 按字母表排序的时区缩写
%a # 星期名缩写
%A # 星期名全称
%b # 月名缩写
%B # 月名全称
%c # 日期和时间
%d # 按月计的日期(01~31)
%D # 日期(mm/dd/yy)
%h # 和%b选项相同
%j # 一年的第几天(001~366)
%m # 月份(01~12)
%w # 一个星期的第几天(0代表星期天)
%W # 一年的第几个星期(00~53,星期一为第一天)
%x # 显示日期的格式(mm/dd/yy)
%y # 年份的最后两个数字(1999则是99)
%Y # 年份(比如1970、1996等)
%C # 世纪,通常为省略当前年份的后两位数字
%U # 一年中的第几周,以周日为每星期第一天
%e # 按月计的日期,添加空格,等于%_d
命令行举例:
[root@xxxxxxxx]#
[root@xxxxxxxx]# date
Wed May 22 10:44:09 CST 2024
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# date +"%Y-%m-%d" # 格式化输出
2024-05-22
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# date +"%Y-%m-%d %H:%M:%S" # 格式化输出
2024-05-22 10:54:15
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# date -d "1 day ago" +"%Y-%m-%d" # 格式化输出 昨天 的日期
2024-05-21
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "+1 day" +"%Y-%m-%d" # 格式化输出 后一天 的日期
2024-05-23
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "-1 day" +"%Y-%m-%d" # 格式化输出 前一天 的日期
2024-05-21
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "-1 year" +%Y%m%d
20230522
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "+1 year" +%Y%m%d
20250522
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "-1 month" +%Y%m%d
20240422
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#date -d "+1 month" +%Y%m%d
20240622
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
shell举例:
#!/bin/bash
start_time=$(date +%s)
bash test-cpu-emory.sh
sleep 5
end_time=$(date +%s)
diff=$((end_time - start_time))
echo $diff seconds.
结果:
2024-05-22 11:07:34 CPU使用率: 2.4% 内存使用率: 11.5934%
5 seconds.
5、grep
grep
是一个强大的文本搜索工具,用于在文件中查找匹配指定模式的行。
语法:
grep [选项] 模式 [文件名]
其中,选项用于指定搜索的行为,模式是要匹配的文本模式,文件名是要搜索的文件名。
命令选项:
-a 不要忽略二进制数据。【过滤二进制文件时,可以使用的到】
-A<显示列数> 除了显示符合范本样式的那一行之外,并显示该行之后的内容。
-b 在显示符合范本样式的那一行之外,并显示该行之前的内容。
-c 计算符合范本样式的列数。
-C<显示列数>或-<显示列数> 除了显示符合范本样式的那一列之外,并显示该列之前后的内容。
-d<进行动作> 当指定要查找的是目录而非文件时,必须使用这项参数,否则grep命令将回报信息并停止动作。
-e<范本样式> 指定字符串作为查找文件内容的范本样式。
-E 将范本样式为延伸的普通表示法来使用,意味着使用能使用扩展正则表达式。
-f<范本文件> 指定范本文件,其内容有一个或多个范本样式,让grep查找符合范本条件的文件内容,格式为每一列的范本样式。
-F 将范本样式视为固定字符串的列表。
-G 将范本样式视为普通的表示法来使用。
-h 在显示符合范本样式的那一列之前,不标示该列所属的文件名称。
-H 在显示符合范本样式的那一列之前,标示该列的文件名称。
-i 忽略字符大小写的差别。
-l 列出文件内容符合指定的范本样式的文件名称。
-L 列出文件内容不符合指定的范本样式的文件名称。
-n 在显示符合范本样式的那一列之前,标示出该列的编号。
-q 不显示任何信息。
-R/-r 此参数的效果和指定“-d recurse”参数相同。
-s 不显示错误信息。
-v 反转查找。
-w 只显示全字符合的列。
-x 只显示全列符合的列。
-y 此参数效果跟“-i”相同。
-o 只输出文件中匹配到的部分。
正则表达式再grep中使用:
+ 表示匹配前一个字符1一次或多次, 必须使用grep -E扩展正则
? 匹配前一个字符0次或1次, 必须使用grep -E扩展正则
| 竖线|在正则中是 或者 的意思, 必须使用grep -E扩展正则
() 将一个或多个字符捆绑在一起, 当作一个整体进行处理, 必须使用grep -E扩展正则
{n,m} 匹配前一个字符至少n次, 最多m次, 必须使用grep -E扩展正则
{n,} 匹配前一个字符至少n次, 没有上限, 必须使用grep -E扩展正则
{,m} 匹配前一个字符最多m次, 可以没有, 必须使用grep -E扩展正则
^$ (代表空行的意思)组合符
. 表示任意一个字符, 有且只有一个, 不包含空行
* 表示找出前一个字符0次或一次以上
.* 表示所有内容, 包括空行
^.*t 以任意内容开头, 直到t结束
[] 表示匹配中括号中任意一个字符, [a-z]匹配所有小写单个字母, [A-Z]匹配所有单个大写字母, [a-zA-Z]匹配所有的单个大小写字母, [0-9]匹配所有单个数字, [a-zA-ZO-9]匹配所有数字和字母
[^x] "^"符号在中括号中第一位表示排除, [^abc]就是排除字符a,b,c
举例:
[root@xxxxxxxx]#
[root@xxxxxxxx]#more log
2011-08-23 19:57:00,610 [] INFO bo.CommodityCerOrderBO - =====>属性订正任务执行开始|每页读取100条数据
2011-08-23 19:57:05,012 [] INFO bo.CommodityCerOrderBO - 当前正在处理页数:1
2011-08-23 19:57:30,688 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids不含0跳过
2011-08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:32,727 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids成功保存为0|100104|0|100105|100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids不含0跳过
2011-08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids成功保存为6|100104|0|0|100107|46|100106|100105|3|3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:attr_ids不含0跳过
2011-08-23 19:57:36,928 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,942 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:36,955 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,969 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
I aaam teacher
I aaaaaam student
I like Linux
I like JAVA
Hello World
世界,你好!
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# grep "10226" log 【查询文本中含有【10226】的行】
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids不含0跳过
2011-08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids成功保存为6|100104|0|0|100107|46|100106|100105|3|3
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#grep "^i" log -i -n -o 【匹配以【I/i】开头的行,并打印行号,只输出匹配内容】
25:I
26:I
27:I
28:I
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#grep "^i" log -i -n -B3 【匹配以【I/i】开头的行,并打印行号,并输出匹配行的前三行】
22-2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
23-2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
24-2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
25:I aaam teacher
26:I aaaaaam student
27:I like Linux
28:I like JAVA
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#grep "^i" log -i -n -B3 -A2
22-2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
23-2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
24-2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
25:I aaam teacher
26:I aaaaaam student
27:I like Linux
28:I like JAVA
29-Hello World
30-世界,你好!
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#grep "^i" log -i -n -C2
23-2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
24-2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
25:I aaam teacher
26:I aaaaaam student
27:I like Linux
28:I like JAVA
29-Hello World
30-世界,你好!
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#grep -E "aa|id" log -i -n 【打印包含aa或者id的行】
3:2011-08-23 19:57:30,688 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids不含0跳过
4:2011-08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100104
5:2011-08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100105
6:2011-08-23 19:57:32,727 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100107
7:2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids成功保存为0|100104|0|100105|100107
8:2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids不含0跳过
9:2011-08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
10:2011-08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
11:2011-08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
12:2011-08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
13:2011-08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
14:2011-08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
15:2011-08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
16:2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids成功保存为6|100104|0|0|100107|46|100106|100105|3|3
17:2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:attr_ids不含0跳过
18:2011-08-23 19:57:36,928 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
19:2011-08-23 19:57:36,942 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
20:2011-08-23 19:57:36,955 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
21:2011-08-23 19:57:36,969 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
22:2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
23:2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
24:2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
25:I aaam teacher
26:I aaaaaam student
34:fdjsoifjidosa
35:joijofids.
[root@xxxxxxxx]#
[root@xxxxxxxx]#
6、cut
语法:
cut(选项)(参数)
选项:
-b:仅显示行中指定直接范围的内容;
-c:仅显示行中指定范围的字符;
-d:指定字段的分隔符,默认的字段分隔符为“TAB”;
-f:显示指定字段的内容;
-n:与“-b”选项连用,不分割多字节字符;
--complement:补足被选择的字节、字符或字段;
--out-delimiter= 字段分隔符:指定输出内容是的字段分割符;
--help:显示指令的帮助信息;
--version:显示指令的版本信息。
参数
文件:指定要进行内容过滤的文件。
举例:
[root@xxxxxxxx]#
[root@xxxxxxxx]#more log
2011-08-23 19:57:00,610 [] INFO bo.CommodityCerOrderBO - =====>属性订正任务执行开始|每页读取100条数据
2011-08-23 19:57:05,012 [] INFO bo.CommodityCerOrderBO - 当前正在处理页数:1
2011-08-23 19:57:30,688 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids不含0跳过
2011-08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:32,727 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids成功保存为0|100104|0|100105|100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids不含0跳过
2011-08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids成功保存为6|100104|0|0|100107|46|100106|100105|3|3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:attr_ids不含0跳过
2011-08-23 19:57:36,928 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,942 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:36,955 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,969 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
I aaam teacher
I aaaaaam student
I like Linux
I like JAVA
Hello World
世界,你好!
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# cut -d "-" -f 2,3 log 【以'-'为分隔符,打印分割出来的第2、3列】
08-23 19:57:00,610 [] INFO bo.CommodityCerOrderBO
08-23 19:57:05,012 [] INFO bo.CommodityCerOrderBO
08-23 19:57:30,688 [] INFO bo.CommodityCerOrderBO
08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:32,727 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO
08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO
08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO
08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO
08-23 19:57:36,928 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,942 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,955 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,969 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO
08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO
I aaam teacher
I aaaaaam student
I like Linux
I like JAVA
Hello World
世界,你好!
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
[root@xxxxxxxx]#
[root@xxxxxxxx]#
7、awk
awk是一行一行的读取文本内容,并且将一行分成数个字段来处理。
语法:
awk 'BEGIN{commands} pattern{commands} END{commands}' filename
BEGIN: 处理数据前执行的命令
END: 处理数据后执行的命令
pattern: 模式,每一行都执行的命令
BEGIN和END里的命令只是执行一次
pattern里的命令会匹配每一行去处理
选项:
-F 指定分隔符,默认分隔符为" "
[root@xxxxxxxx]#
[root@xxxxxxxx]# more log
2011-08-23 19:57:00,610 [] INFO bo.CommodityCerOrderBO - =====>属性订正任务执行开始|每页读取100条数据
2011-08-23 19:57:05,012 [] INFO bo.CommodityCerOrderBO - 当前正在处理页数:1
2011-08-23 19:57:30,688 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids不含0跳过
2011-08-23 19:57:30,709 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:31,721 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:32,727 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:添加属性id,但由于认证分类参数有误默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10117,status:attr_ids成功保存为0|100104|0|100105|100107
2011-08-23 19:57:32,782 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids不含0跳过
2011-08-23 19:57:32,805 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:33,828 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:33,838 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:34,850 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:35,860 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,871 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,884 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10226,status:attr_ids成功保存为6|100104|0|0|100107|46|100106|100105|3|3
2011-08-23 19:57:36,891 [] INFO bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:attr_ids不含0跳过
2011-08-23 19:57:36,928 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
2011-08-23 19:57:36,942 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100104
2011-08-23 19:57:36,955 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100105
2011-08-23 19:57:36,969 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100107
2011-08-23 19:57:36,980 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:46
2011-08-23 19:57:36,992 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:100106
2011-08-23 19:57:37,011 [] ERROR bo.CommodityCerOrderBO - order-fix.curr_id:10222,status:添加属性id,但由于没有属性在该分类下默认取匹配属性名称的第一个属性id:3
I aaam teacher
I aaaaaam student
I like Linux
I like JAVA
Hello World
世界,你好!
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]# awk 'BEGIN{print "+++++++++++++++++"} {print $1 $2 $3 $4} END{print "================"}' log
+++++++++++++++++
2011-08-2319:57:00,610[]INFO
2011-08-2319:57:05,012[]INFO
2011-08-2319:57:30,688[]INFO
2011-08-2319:57:30,709[]ERROR
2011-08-2319:57:31,721[]ERROR
2011-08-2319:57:32,727[]ERROR
2011-08-2319:57:32,782[]INFO
2011-08-2319:57:32,782[]INFO
2011-08-2319:57:32,805[]ERROR
2011-08-2319:57:33,828[]ERROR
2011-08-2319:57:33,838[]ERROR
2011-08-2319:57:34,850[]ERROR
2011-08-2319:57:35,860[]ERROR
2011-08-2319:57:36,871[]ERROR
2011-08-2319:57:36,884[]ERROR
2011-08-2319:57:36,891[]INFO
2011-08-2319:57:36,891[]INFO
2011-08-2319:57:36,928[]ERROR
2011-08-2319:57:36,942[]ERROR
2011-08-2319:57:36,955[]ERROR
2011-08-2319:57:36,969[]ERROR
2011-08-2319:57:36,980[]ERROR
2011-08-2319:57:36,992[]ERROR
2011-08-2319:57:37,011[]ERROR
Iaaamteacher
Iaaaaaamstudent
IlikeLinux
IlikeJAVA
HelloWorld
世界,你好!
12312434
324828
fdjsoifjidosa
joijofids.
joijiodsf.
================
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
[root@xxxxxxxx]#
8、find
8.1、按名字查找
语法:
find ./ -name "file-name"
[root@local_tmp]#
[root@local_tmp]# find ./ -name "t-1"
./t-1
[root@local_tmp]#
[root@local_tmp]# find ./ -name "t-1*"
./t-15
./t-1.cc
./t-13
./t-16.cc
./t-14.cc
./t-12
./t-11.cc
./t-17
./t-10
./t-11
./t-19
./t-13.cc
./t-19-thread.cc
./t-1
./t-18
./t-12.cc
./t-10.cc
./t-15.cc
./t-14
./t-17.cc
./t-18.cc
./t-16
[root@local_tmp]#
[root@local_tmp]# find ./ -name "t-1?"
./t-15
./t-13
./t-12
./t-17
./t-10
./t-11
./t-19
./t-18
./t-14
./t-16
[root@local_tmp]#
[root@local_tmp]#
8.2、按用户信息查找
Linux一共有四种用户信息:
用户名 | -user |
用户ID | -uid |
组名 | -group |
组ID | -gid |
[root@local_tmp]#
[root@local_tmp]# find . -user root
.
./t-9.cc
./t-15
./t-1.cc
./thread-pool.c
./t-13
./t-16.cc
./t-8.cc
./t-14.cc
./t-8
./t-12
./t-6.cc
./t-5.cc
./t-11.cc
./CMakeLists.txt
./t-17
./t-10
./t-7
./t-3.cc
./build
./build/Makefile
./build/test_bin
./build/CMakeFiles
./build/CMakeFiles/TargetDirectories.txt
./build/CMakeFiles/3.21.1
./build/CMakeFiles/3.21.1/CMakeCXXCompiler.cmake
./build/CMakeFiles/3.21.1/CompilerIdC
./build/CMakeFiles/3.21.1/CompilerIdC/CMakeCCompilerId.c
./build/CMakeFiles/3.21.1/CompilerIdC/tmp
./build/CMakeFiles/3.21.1/CompilerIdC/a.out
./build/CMakeFiles/3.21.1/CMakeCCompiler.cmake
./build/CMakeFiles/3.21.1/CMakeSystem.cmake
./build/CMakeFiles/3.21.1/CompilerIdCXX
./build/CMakeFiles/3.21.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
./build/CMakeFiles/3.21.1/CompilerIdCXX/tmp
./build/CMakeFiles/3.21.1/CompilerIdCXX/a.out
./build/CMakeFiles/3.21.1/CMakeDetermineCompilerABI_C.bin
./build/CMakeFiles/3.21.1/CMakeDetermineCompilerABI_CXX.bin
./build/CMakeFiles/CMakeOutput.log
./build/CMakeFiles/Makefile.cmake
./build/CMakeFiles/CMakeTmp
./build/CMakeFiles/CMakeDirectoryInformation.cmake
./build/CMakeFiles/test_bin.dir
./build/CMakeFiles/test_bin.dir/main.cpp.o.d
./build/CMakeFiles/test_bin.dir/depend.make
./build/CMakeFiles/test_bin.dir/cmake_clean.cmake
./build/CMakeFiles/test_bin.dir/main.cpp.o
./build/CMakeFiles/test_bin.dir/progress.make
./build/CMakeFiles/test_bin.dir/flags.make
./build/CMakeFiles/test_bin.dir/compiler_depend.make
./build/CMakeFiles/test_bin.dir/compiler_depend.ts
./build/CMakeFiles/test_bin.dir/link.txt
./build/CMakeFiles/test_bin.dir/DependInfo.cmake
./build/CMakeFiles/test_bin.dir/build.make
./build/CMakeFiles/Makefile2
./build/CMakeFiles/cmake.check_cache
./build/CMakeFiles/progress.marks
./build/CMakeCache.txt
./build/cmake_install.cmake
./t-11
./t-19
./t-2
./t-13.cc
./t-19-thread.cc
./t-1
./t-18
./t-12.cc
./t-10.cc
./t-3
./t-15.cc
./a.out
./aa.cpp
./t-4
./t-14
./t-17.cc
./thread-poo-c++.cpp
./t-4.cc
./t-18.cc
./t-7.cc
./main.cpp
./.vscode
./.vscode/settings.json
./t-6
./t-2.cc
./00
./t-5
./t-16
[root@local_tmp]#
[root@local_tmp]#
8.3、按权限查找
语法:
find ./ -perm 744 # (rwx)
[root@local_tmp]#
[root@local_tmp]# find . -perm 644
./t-9.cc
./t-1.cc
./t-16.cc
./t-8.cc
./t-14.cc
./t-6.cc
./t-5.cc
./t-11.cc
./CMakeLists.txt
./t-3.cc
./build/Makefile
./build/CMakeFiles/TargetDirectories.txt
./build/CMakeFiles/3.21.1/CMakeCXXCompiler.cmake
./build/CMakeFiles/3.21.1/CompilerIdC/CMakeCCompilerId.c
./build/CMakeFiles/3.21.1/CMakeCCompiler.cmake
./build/CMakeFiles/3.21.1/CMakeSystem.cmake
./build/CMakeFiles/3.21.1/CompilerIdCXX/CMakeCXXCompilerId.cpp
./build/CMakeFiles/CMakeOutput.log
./build/CMakeFiles/Makefile.cmake
./build/CMakeFiles/CMakeDirectoryInformation.cmake
./build/CMakeFiles/test_bin.dir/main.cpp.o.d
./build/CMakeFiles/test_bin.dir/depend.make
./build/CMakeFiles/test_bin.dir/cmake_clean.cmake
./build/CMakeFiles/test_bin.dir/main.cpp.o
./build/CMakeFiles/test_bin.dir/progress.make
./build/CMakeFiles/test_bin.dir/flags.make
./build/CMakeFiles/test_bin.dir/compiler_depend.make
./build/CMakeFiles/test_bin.dir/compiler_depend.ts
./build/CMakeFiles/test_bin.dir/link.txt
./build/CMakeFiles/test_bin.dir/DependInfo.cmake
./build/CMakeFiles/test_bin.dir/build.make
./build/CMakeFiles/Makefile2
./build/CMakeFiles/cmake.check_cache
./build/CMakeFiles/progress.marks
./build/CMakeCache.txt
./build/cmake_install.cmake
./t-13.cc
./t-19-thread.cc
./t-12.cc
./t-10.cc
./t-15.cc
./aa.cpp
./t-17.cc
./t-4.cc
./t-18.cc
./t-7.cc
./main.cpp
./.vscode/settings.json
./t-2.cc
./00
[root@local_tmp]#
[root@local_tmp]#
8.4、按文件大小查找
语法:
# -size后跟的文件大小参数单位默认为block
# 表示搜索文件大小为8个磁盘块大小的文件
find . -size 8
# 表示搜索文件大小为8个字节大小的文件
find . -size 8c
# 此外 -size 还支持 +、 -,分别表示大于/小于指定大小的文件
find . -size +8c # 搜索文件大小大于8字节的文件
find . -size -8c # 搜索文件大小小于8字节的文件
find . -empty # 表示搜索大小为0的文件或目录
8.5、按文件类型查找
find ./ -type "file-type"
file-type参数如下:
b block(buffered)special
c character(buffered)special
d directory
p named pipe
f regular file
l symbolic link
s socket
举例如下:
find . -type -
find . -type d
find . -type p
8.6、按时间查找
按时间查找有三种类型:
access 访问时间 对应缩写a; 对应着: -amin/-atime
modify 修改时间 对应缩写m; 对应着: -mmin/-mtime
status change 状态(名字、权限)等修改时间 对应缩写c; 对应着: -cmin/-ctime
find . -mmin +n # 查找n分钟以前被修改过的所有文件
find . -mmin -n # 查找n分钟之内被修改过的所有文件
8.7、其他操作
其他参数:
-a 表示求两个条件的交集
-o 表示求两个条件的并集
! 表示求条件的补集
举例如下:
find . -type f -o -type d # 查找普通文件和目录文件
find . ! -type f # 查找非目录文件
find . -name "*html" -a -size +100b # 查找后缀名为html且大于100字节的文件
9、xargs
语法:
command | xargs [选项] command
参数说明:
-a file 从文件中读入作为标准输入
-p 每执行一次参数询问一次用户。
-n num,以列的个数展开,默认是所有
-t 先打印命令再执行。
-s 命令行的最大字符数
-L num从输入一次读取num行,-l同-L
-d 分隔符,默认的分隔符是空格
-x 代表exit,主要是配合-s使用
-P 修改最大的进程数,默认是1
用途:
给命令传递参数的一个过滤器,也是组合多个命令的一个工具;
将管道或输入数据转换成命令行参数,还可以将其文件的输出中读取数据;
将单行或多行文本输入转换为其他格式,单双行相互转换;
捕获一个命令的输出传递给另外一个命令;
该命令一般结合管道符使用
[root@local_tmp]#
[root@local_tmp]# ll
total 16
-rw-r--r-- 1 root root 4315 May 23 10:56 log
-rw-r--r-- 1 root root 336 May 22 10:36 test-cpu-emory.sh
-rw-r--r-- 1 root root 146 May 22 11:07 test-date.sh
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# find ./ -name "*sh"
./test-date.sh
./test-cpu-emory.sh
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# find ./ -name "*sh" | xargs
./test-date.sh ./test-cpu-emory.sh
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# find ./ -name "*sh" | xargs -n1
./test-date.sh
./test-cpu-emory.sh
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# find ./ -name "*sh" | xargs -n2
./test-date.sh ./test-cpu-emory.sh
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# find ./ -name "*sh" | xargs grep "Cpu" 【查找满足要求的文本中还有Cpu字符的行】
./test-cpu-emory.sh:CPU_USAGE=$(top -b -n1 | grep "Cpu(s)" | awk '{print $2 + $4}')
[root@local_tmp]#
[root@local_tmp]#
10、dirname
获取文件所在目录,返回一个相对路径结果。
# shell脚本如下
#!/bin/bash
file="../shell/s-4.sh"
filename=$(dirname ${file})
echo ${filename}
结果:
[root@local_tmp]#
[root@local_tmp]# ../shell/s-4.sh
../shell
[root@local_tmp]#
[root@local_tmp]#
11、ps
语法:
ps 参数
参数:
-e 显示所有进程
-f 显示所有字段(UID,PPIP,C,STIME字段)
-a 显示一个终端的所有进程
-u 显示当前用户进程和内存使用情况
-x 显示没有控制终端的进程
–sort 按照列名排序
作用:
查看系统进程,比如正在运行的进程有哪些,什么时候开始运行的,哪个用户运行的,占用了多少资源。
常用操作:
ps -ef 查看所有进程
ps -aux 查看所有进程
ps -ef | grep 进程id\name 查看指定进程
11.1、ps -ef
[root@local_tmp]#
[root@local_tmp]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 2 0 0 2023 ? 00:00:00 [kthreadd]
root 8 2 0 2023 ? 00:00:00 [rcu_bh]
root 9 2 0 2023 ? 02:10:21 [rcu_sched]
root 10 2 0 2023 ? 00:00:00 [lru-add-drain]
字段解释:
UID 用户ID,即进程的拥有者
PID 进程ID
PPID 父进程ID
C 进程占用的CPU百分比
STIME 进程开始启动时间
TTY 登入者的终端机位置
TIME 进程使用的CPU(运算)时间
CMD 调用进程的命令
11.2、ps -aux
[root@local_tmp]#
[root@local_tmp]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 2 0.0 0.0 0 0 ? S 2023 0:00 [kthreadd]
root 12 0.0 0.0 0 0 ? S 2023 0:38 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 2023 3:21 [migration/1]
字段解释:
USER 创建进程的用户
PID 进程ID
%CPU 进程占用CPU的百分比
%MEM 进程占用物理内存的百分比
VSZ 进程占用虚拟内存的大小(单位KB)
RSS 进程占用实际物理内存的大小(单位KB)
TTY 进程在哪个终端运行。
STAT 进程状态
START 进程开始启动的时间
TIME 进程使用的CPU(运算)时间
COMMAND 调用进程的命令
11.3、查看CPU/内存占用率最高的进程
[root@local_tmp]#
[root@local_tmp]# ps -aux --sort=-pcpu | head -11 【+、-号可以调整排序,-pcpu 表示降序,+pcpu 表示升序】
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# ps -aux --sort=-pmem | head -11
[root@local_tmp]#
[root@local_tmp]#
12、top
语法:
top 参数
参数:
-b 以批处理模式操作;
-c 显示完整的治命令;
-d 屏幕刷新间隔时间;
-I 忽略失效过程;
-s 保密模式;
-S 累积模式;
-H 显示线程信息;
-i<时间> 设置间隔时间;
-u<用户名> 指定用户名;
-p<进程号> 指定进程;
-n<次数> 循环显示的次数。
作用:
实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。
常用操作:
top -H
top -b -n 1 抓取一次top命令的内容, 其中:-b参数表示以batch模式运行top,即直接输出结果而不需要交互式操作;-n 1参数表示只运行一次top。
12.1、top信息解释
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# top
top - 10:45:58 up 382 days, 37 min, 4 users, load average: 0.17, 0.18, 0.12
Tasks: 247 total, 1 running, 244 sleeping, 0 stopped, 2 zombie
%Cpu(s): 0.8 us, 1.5 sy, 0.8 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 32775668 total, 2203108 free, 3871608 used, 26700952 buff/cache
KiB Swap: 0 total, 0 free, 0 used. 26094856 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 191364 3320 1588 S 0.0 0.0 57:23.33 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.21 kthreadd
3 root 20 0 0 0 0 S 0.0 0.0 1:01.09 ksoftirqd/0
5 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
7 root rt 0 0 0 0 S 0.0 0.0 0:17.41 migration/0
8 root 20 0 0 0 0 S 0.0 0.0 0:00.00 rcu_bh
9 root 20 0 0 0 0 S 0.0 0.0 130:36.59 rcu_sched
10 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 lru-add-drain
(1)
top - 10:45:58 up 382 days, 37 min, 4 users, load average: 0.17, 0.18, 0.12
当前时间 系统运行时间 4个用户 系统负载,即任务队列的平均长度。 三个数值分别为 1分钟、5分钟、15分钟前到现在的平均值。
(2)
Tasks: 247 total, 1 running, 244 sleeping, 0 stopped, 2 zombie
进程总数 正在运行的进程数目 正在休眠的进程数目 停止的进程数目 僵尸进程数目
(3)
%Cpu(s): 0.8 us, 1.5 sy, 0.8 ni, 96.9 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
用户空间占用CPU百分比 内核空间占用CPU百分比 用户进程空间内改变过优先级的进程占用CPU百分比 空闲CPU百分比 等待输入输出的CPU时间百分比 硬中断(Hardware IRQ)占用CPU的百分比 软中断(Software Interrupts)占用CPU的百分比 虚拟CPU等待实际CPU的时间的百分比。
(4)
KiB Mem : 32775668 total, 2203108 free, 3871608 used, 26700952 buff/cache
物理内存总量 空闲内存总量 使用的物理内存总量 用作内核缓存的内存量
KiB Swap: 0 total, 0 free, 0 used. 26094856 avail Mem
交换区总量 空闲交换区总量 缓冲的交换区总量 代表可用于进程下一次分配的物理内存数量
(5)
PID 进程id
USER 进程所有者的用户名
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级。
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行
PPID 父进程id
RUSER Real user name
UID 进程所有者的用户id
GROUP 进程所有者的组名
TTY 启动进程的终端名。不是从终端启动的进程则显示为 ?
P 最后使用的CPU,仅在多CPU环境下有意义
TIME 进程使用的CPU时间总计,单位秒
SWAP 进程使用的虚拟内存中,被换出的大小,单位kb
CODE 可执行代码占用的物理内存大小,单位kb
DATA 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kb
nFLT 页面错误次数
nDRT 最后一次写入到现在,被修改过的页面数。
WCHAN 若该进程在睡眠,则显示睡眠中的系统函数名
Flags 任务标志
13、read
read命令是一个强大的工具,用于从标准输入(键盘)或其他输入流中读取用户的输入。read命令的基本作用是等待用户输入,并将输入的内容赋值给一个或多个变量。这使得脚本能够根据用户的实时输入采取不同的行为,增加了交互性和动态性。
语法:
read [参数] 变量名
参数:
-p 用于在用户输入前提供自定义提示信息。
-s 使得用户的输入不会显示在屏幕上,这通常用于读取密码等敏感信息。
-t 用于设置超时时间,限定用户输入的等待时间。
-a 用于将输入的内容分配给数组。
示例:
[root@local_tmp]#
[root@local_tmp]# more s-6.sh
#!/bin/bash
echo "请输入您的名字:"
read name
echo "您好,$name!"
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# sh s-6.sh
请输入您的名字:
name-name-name
您好,name-name-name!
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# more s-6.sh
#!/bin/bash
read -p "请输入您的年龄: " age
echo "您的年龄是 $age 岁。"
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# sh s-6.sh
请输入您的年龄: 9087
您的年龄是 9087 岁。
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# more s-6.sh
#!/bin/bash
read -p "请输入一个数字(1-100): " -n 3 number
echo
echo "您输入的数字是 $number。"
[root@local_tmp]#
[root@local_tmp]#
[root@local_tmp]# sh s-6.sh
请输入一个数字(1-100): 987
您输入的数字是 987。
[root@local_tmp]#
[root@local_tmp]#
#
# -n 3选项限制了用户只能输入3个字符。
#