12.23 dmesg命令:显示开机信息
-
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.
12.24 free命令:查看内存使用状态
- free 命令用来显示系统内存状态,包括系统物理内存、虚拟内存(swap 交换分区)、共享内存和系统缓存的使用情况,其输出和 top 命令的内存部分非常相似。free 命令的基本格式如下:
[root@localhost ~]# free [选项]
- 常用的选项及各自的含义。
选项 | 含义 |
---|---|
-b | 以 Byte(字节)为单位,显示内存使用情况。 |
-k | 以 KB 为单位,显示内存使用情况,此选项是 free 命令的默认选项。 |
-m | 以 MB 为单位,显示内存使用情况。 |
-g | 以 GB 为单位,显示内存使用情况。 |
-t | 在输出的最终结果中,输出内存和 swap 分区的总量。 |
-o | 不显示系统缓冲区这一列。 |
-s 间隔秒数 | 根据指定的间隔时间,持续显示内存使用情况。 |
[root@CncLucZK test]# free -mts 3
total used free shared buff/cache available
Mem: 1829 682 85 0 1061 980
Swap: 1024 7 1017
Total: 2854 689 1103
total 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
-
第一行显示的是各个列的列表头信息,各自的含义如下所示:
- total 是总内存数;
- used 是已经使用的内存数;
- free 是空闲的内存数;
- shared 是多个进程共享的内存总数;
- buffers 是缓冲内存数;
- cached 是缓存内存数。
-
Mem 一行指的是内存的使用情况;-/buffers/cache 的内存数,相当于第一行这些字段 used-buffers-cached的逻辑运算。+/buffers/cache 的内存数,相当于第一行这些字段 free+buffers+cached的逻辑运算;Swap 一行指的就是 swap 分区的使用情况。
-
可以看到,系统的物理内存为 1829MB,已经使用了 682MB,空闲 85MB。而 swap 分区总大小为 1024MB,已经使用了 7MB,空闲 1017MB。
3.15 wc命令
- 统计指定文件中的字节数、字数、行数,并将统计结果显示输出。利用wc指令我们可以计算文件的Byte数、字数或是列数,若不指定文件名称,或是所给予的文件名为“-”,则wc指令会从标准输入设备读取数据。wc同时也给出所指定文件的总统计数。命令格式:
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
3.16 xargs 命令
-
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
- 读取 stdin,将格式化后的参数传递给命令。结合 -I 选项,xargs 的一个 选项 -I ,使用 -I 指定一个替换字符串{},这个字符串在 xargs 扩展时会被替换掉,当 -I 与 xargs 结合使用,每一个参数命令都会被执行一次:
#假设一个命令为 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
- xargs 结合 find 使用:用 rm 删除太多的文件时候,可能得到一个错误信息:
/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
选项会在执行每一个命令时弹出确认,当你需要非常准确的确认每一次操作时可以使用-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
three
cat foo.txt | xargs -I % sh -c 'echo %; mkdir %'
one
two
three
ls
one two three
- xargs 其他应用:假如你有一个文件包含了很多你希望下载的 URL,你能够使用 xargs 下载所有链接:
cat urlist.txt | xargs wget -c
- 子 Shell(Subshells):运行一个 shell 脚本时会启动另一个命令解释器.,就好像你的命令是在命令行提示下被解释的一样,类似于批处理文件里的一系列命令。每个 shell 脚本有效地运行在父 shell(parent shell) 的一个子进程里。这个父 shell 是指在一个控制终端或在一个 xterm 窗口中给你命令指示符的进程。
#如果 cmd2 是 cd /,那么就会改变子 Shell 的工作目录,这种改变只是局限于子 shell 内部,cmd5 则完全不知道工作目录发生的变化。子 shell 是嵌在圆括号 () 内部的命令序列,子 Shell 内部定义的变量为局部变量。
cmd1 | ( cmd2; cmd3; cmd4 ) | cmd5
#子 shell 可用于为一组命令设定临时的环境变量:
COMMAND1
COMMAND2
COMMAND3
(
IFS=:
PATH=/bin
unset TERMINFO
set -C
shift 5
COMMAND4
COMMAND5
exit 3 # 只是从子 shell 退出。
)
# 父 shell 不受影响,变量值没有更改。
COMMAND6
COMMAND7
参考文献:
Linux dmesg命令:显示开机信息
下一篇:Linux学习-57-Linux数据备份与恢复
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/123735.html