Linux命令行使用

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个字符。
#

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值