linux在系统启动过程中,内核还会进行一次系统检测(第一次是 BIOS 进行加测),但是检测的过程不是没有显示在屏幕上,就是会快速的在屏幕上一闪而过那么,如果开机时来不及查看相关信息,使用 dmesg 命令可以在开机后查看.无论是系统启动过程中,还是系统运行过程中,只要是内核产生的信息,都会被存储在系统缓冲区中,如果开机时来不及查看相关信息,可以使用 dmesg 命令将信息调出,此命令常用于查看系统的硬件信息。除此之外,开机信息也可以通过 /var/log/ 目录中的 dmesg 文件进行查看。
dmesg 命令的用法很简单,基本格式如下:
[root@localhost ~]# dmesg
[root@CncLucZK test]# dmesg
[ 0.000000] Linux version 4.18.0-80.el8.x86_64 (mockbuild@kbuilder.bsys.centos.org) (gcc version 8.2.1 20180905 (Red Hat 8.2.1-3) (GCC)) #1 SMP Tue Jun 4 09:19:46 UTC 2019
[ 0.000000] Command line: BOOT_IMAGE=/boot/vmlinuz-4.18.0-80.el8.x86_64 root=UUID=659e6f89-71fa-463d-842e-ccdf2c06e0fe ro crashkernel=auto console=ttyS0 console=tty0 panic=5 net.ifnames=0 biosdevname=0 intel_idle.max_cstate=1 intel_pstate=disable
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x001: 'x87 floating point registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x002: 'SSE registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x004: 'AVX registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x008: 'MPX bounds registers'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x010: 'MPX CSR'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x020: 'AVX-512 opmask'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x040: 'AVX-512 Hi256'
[ 0.000000] x86/fpu: Supporting XSAVE feature 0x080: 'AVX-512 ZMM_Hi256'
[ 0.000000] x86/fpu: xstate_offset[2]: 576, xstate_sizes[2]: 256
[ 0.000000] x86/fpu: xstate_offset[3]: 960, xstate_sizes[3]: 64
...
#查看系统学习
[root@CncLucZK test]# dmesg | grep System
[ 0.000000] Reserving 160MB of memory at 576MB for crashkernel (System RAM: 2047MB)
[ 1.159035] systemd[1]: Reached target Local File Systems.
[root@localhost ~]# free [选项]
| 选项 | 含义 |
|---|---|
| -b | 以 Byte(字节)为单位,显示内存使用情况。 |
| -k | 以 KB 为单位,显示内存使用情况,此选项是 free 命令的默认选项。 |
| -m | 以 MB 为单位,显示内存使用情况。 |
| -g | 以 GB 为单位,显示内存使用情况。 |
| -t | 在输出的最终结果中,输出内存和 swap 分区的总量。 |
| -o | 不显示系统缓冲区这一列。 |
| -s 间隔秒数 | 根据指定的间隔时间,持续显示内存使用情况。 |
[root@CncLucZK test]# free -mts 3total used free shared buff/cache available
Mem: 1829 682 85 0 1061 980
Swap: 1024 7 1017
Total: 2854 689 1103total used free shared buff/cache available
Mem: 1829 682 85 0 1061 980
Swap: 1024 7 1017
Total: 2854 689 1102[root@CncLucZK ~]#free
total used free shared buffers cached available
Mem: 1030796 130792 900004 0 15292 55420
-/+ buffers/cache: 60080 970716
Swap: 2047992 0 2047992
第一行显示的是各个列的列表头信息,各自的含义如下所示:
Mem 一行指的是内存的使用情况;-/buffers/cache 的内存数,相当于第一行这些字段 used-buffers-cached的逻辑运算。+/buffers/cache 的内存数,相当于第一行这些字段 free+buffers+cached的逻辑运算;Swap 一行指的就是 swap 分区的使用情况。
可以看到,系统的物理内存为 1829MB,已经使用了 682MB,空闲 85MB。而 swap 分区总大小为 1024MB,已经使用了 7MB,空闲 1017MB。
wc(选项)(参数)
wc [选项]... [文件]...
wc [选项]... --files0-from=F
选项如下:
-c # 统计字节数,或--bytes或——chars:只显示Bytes数;。
-l # 统计行数,或——lines:只显示列数;。
-m # 统计字符数。这个标志不能与 -c 标志一起使用。
-w # 统计字数,或——words:只显示字数。一个字被定义为由空白、跳格或换行字符分隔的字符串。
-L # 打印最长行的长度。
-help # 显示帮助信息
--version # 显示版本信息
例子
#当前目录以及子目录的所有文件行数及总计行数。
find . * | xargs wc -l #查看文件的字节数、字数、行数
wc test.txt
# 输出结果
7 8 70 test.txt
# 行数 单词数 字节数 文件名
#wc命令只打印统计数字不打印文件名
wc -l < test.txt
# 输出结果
7
#统计当前目录下的文件数(不包含隐藏文件)
# 要去除TOTAL行
expr $(ls -l | wc -l) - 1
# 输出结果
8
xargs 命令 是给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具。它擅长将标准输入数据转换成命令行参数,xargs 能够处理管道或者 stdin 并将其转换成特定命令的命令参数。xargs 也可以将单行或多行文本输入转换为其他格式,例如多行变单行,单行变多行。xargs 的默认命令是 echo,空格是默认定界符。这意味着通过管道传递给 xargs 的输入将会包含换行和空白,不过通过 xargs 的处理,换行和空白将被空格取代。xargs 是构建单行命令的重要组件之一。
xargs 用作替换工具,读取输入数据重新格式化后输出。
#定义一个测试文件,内有多行文本数据:
cat test.txt
a b c d e f g
h i j k l m n#多行输入单行输出:
cat test.txt | xargs
a b c d e f g h i j k l m n o#使用 -n 进行多行输出
cat test.txt | xargs -n3
a b c
d e f
g h i
j k l
m n o#使用 -d 分割输入 -d 选项 可以自定义一个定界符:
echo "nameXnameXnameXname" | xargs -dX
name name name name#结合 -n 选项 使用:
echo "nameXnameXnameXname" | xargs -dX -n2
name name
name name
#假设一个命令为 sk.sh 和一个保存参数的文件 arg.txt:
#!/bin/bash
#sk.sh 命令内容,打印出所有参数。
echo $*
#arg.txt 文件内容:
cat arg.txt
aaa
bbb
ccc
# -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
cat arg.txt | xargs -I {} ./sk.sh -p {} -l
-p aaa -l
-p bbb -l
-p ccc -l
#复制所有图片文件到 /data/images 目录下:
ls *.jpg | xargs -n1 -I cp {} /data/images
/bin/rm Argument list too long. 用 xargs 去避免这个问题:xargs -0 将
\0作为定界符。
find . -type f -name "*.log" -print0 | xargs -0 rm -f
#统计一个源代码目录中所有 php 文件的行数:
find . -type f -name "*.php" -print0 | xargs -0 wc -l
#查找所有的 jpg 文件,并且压缩它们:
find . -type f -name "*.jpg" -print0 | xargs tar -czvf images.tar.gz
-t 选项可以打印出 xargs 执行的命令#会输出当前目录下的文件列表和执行的 echo 命令
ls | xargs -t -I{} echo {}
[root@cucluczk /]# ls|xargs -t -I {} echo {}
echo bin
bin
echo boot
boot
echo data
...
-p 选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用 -p 参数,比如,查找当前目录下 .log 文件,每一次删除都需要确认:find . -maxdepth 1 -name "*.log" | xargs -p -I{} rm {}
#当前目录下的文件
[root@cucluczk /]# cd /etc
[root@cucluczk etc]# find . -maxdepth 1 -name "profile" | xargs -p -I {} cat {}
cat ./profile ?...n
#整体系统目录下的文件
[root@cucluczk /]# find . -type f -name "profile" | xargs -p -I {} cat {}
cat ./etc/profile ?...n
-I 选项可以让 xargs 执行多个命令cat foo.txt
one
two
threecat foo.txt | xargs -I % sh -c 'echo %; mkdir %'
one
two
threels
one two three
cat urlist.txt | xargs wget -c
#如果 cmd2 是 cd /,那么就会改变子 Shell 的工作目录,这种改变只是局限于子 shell 内部,cmd5 则完全不知道工作目录发生的变化。子 shell 是嵌在圆括号 () 内部的命令序列,子 Shell 内部定义的变量为局部变量。
cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5#子 shell 可用于为一组命令设定临时的环境变量:
COMMAND1
COMMAND2
COMMAND3
(IFS=:PATH=/binunset TERMINFOset -Cshift 5COMMAND4COMMAND5exit 3 # 只是从子 shell 退出。
)
# 父 shell 不受影响,变量值没有更改。
COMMAND6
COMMAND7
参考文献:
Linux dmesg命令:显示开机信息
上一篇:大街近义词是什么呢