文章目录
- 1-前言
- 2-Linux常用命令总结
- 2-1-Linux下常用命令
- 2-2-时间管理命令
- 2-3-帮助命令
- 2-4-init
- 2-5-文件管理命令
- 2-6-用户管理命令
- 2-7-查看用户相关命令:
- 2-8-改变文件的所属关系用到命令:
- 2-9-rpm相关命令
- 2-10-配置yum源
- 2-11-yum 使用
- 2-12-tar
- 2-13-zip 管理压缩文件
- 2-14-file
- 2-15-du
- 2-16-df
- 2-17-sort
- 2-18-使用 ps 查看进程工具
- 2-19-uptime查看cpu负载工具
- 2-20-top动态管理进程命令
- 2-21-lsof 命令
- 2-22-pstree工具
- 2-23-系统任务相关的几个命令(了解)
- 2-24-kill 关闭进程
- 2-25-tee命令
- 2-26-查找文件命令
- 2-27-软链接和硬链接
- 2-28-RAID磁盘阵列
- 2-29-LVM管理
- 2-30-计划任务
- 2-31-日志服务
- 2-32-Linux网络管理
- 2-33-查看端口的监听状态
- 2-34-路由信息
- 2-35-Linux文本三剑客
- 2-36-正则表达式
- 2-37-sosreport诊断数据打包命令
- 2-38-xsos
- 总结
提示:以下是本篇文章正文内容,下面案例可供参考
1-前言
这是我三年来学习Linux操作系统命令的笔记,总结的可能不太全面,但是对于大多数人我觉得还是有帮助,里面我没有详细去介绍单个命令,我列出了一些常用的用法,如果想要透彻学习一个命令,我首先推荐man,它给出的解释十分详细,不过在Linux系统中,这部分默认是英文,其次可以度娘,很多博主都写这类文章,我觉得我的笔记收藏起来需要的时候查一下某些命令还是很好用的,因为我自己就是这么干的,喜欢的话点赞收藏,感谢各位看官老爷们~
2-Linux常用命令总结
2-1-Linux下常用命令
2-2-1-ls
作用:查看当前目录下有哪些文件(list)
语法:ls 目录/文件 ,如果什么也不加,那么查看的是当前目录下的内容
-l 列出文件的详细信息,如创建者,创建时间,文件的读写权限列表等等,长列表
第一个字符文件类型中:
d:目录文件
l:链接文件
b:块设备文件
c:字符设备文件
p:管道文件
-: 表示普通文件
-a 列出目录下所有的文件,包括以“.“开头的隐藏文件(linux 下隐藏文件是以 . 开头的,如果存在 2 个点代表存在着父目录,1 个点表示当前目录)
-d 查看目录(不查看里面的内容)
-S 以文件的大小进行排序
2-1-2-cd
作用:切换目录(change directory)
语法:cd 目录
直接输入 cd 表示回到当前用户的家目录
cd ~表示返回根目录
cd .. 表示返回到上级目录位置,也就是父目录
cd . 表示进入到当前用户所在的目录
2-1-3-pwd
作用:显示当前目录
语法:什么也不加
2-1-4-history
作用:显示历史命令
技巧:
ctrl+r ->输入某条命令的关键字->找出来对应的命令,按右光标键
!数字 //执行历史命令中第 N 条命令
!字符串 //搜索历史命令中最近一个以 xxxx 字符开头的命令,例如!vim
!!执行最近执行过的的一条命令
2-2-时间管理命令
2-2-1-查看硬件时间:hwclock
[root@localhost ~]# hwclock
Thu 10 Aug 2023 06:37:02 PM CST -0.867814 seconds
2-2-2-查看系统时间:date
UTC (Universal Time Coordinated):世界标准时间
GMT (Greenwich Mean Time):格林尼治时间
CST (China standard Time):中国标准时间
date 命令相关参数:
date --help
-s, --set=STRING 把时间设为字符串所描述的时间
#把时间设为字符串所描述的时间
date -s “2018-11-2 22:30”
#按指定格式显示时间
date “+参数”
参数:
%F 完整日期格式,等价于 %Y-%m-%d
%y 年份最后两位数位 (00-99)
%Y 年份
%m month (01..12)
%d 按月计的日期(例如:01)
%M minute (00..59)
%H 小时(00-23)
%S 秒(00-60)
2-3-帮助命令
遇到命令不知道添加哪个参数,可以使用命令帮助查看相关介绍,常用的查看帮助信息命令有如下几个
2-3-1-man命令
#查看手册页或命令描述
man find
man 命令查看帮助时,支持它支持上翻下翻,搜索(直接输入斜线),退出用 q
使用-h 或--help 查看命令选项
ls -h
find --help
2-4-init
作用:切换系统运行级别
语法:init 0-6
Linux 7 个启动级别:
0 系统停机模式,系统默认运行级别不能设置为 0,否则不能正常启动,机器关闭
1 单用户模式,root 权限,用于系统维护,禁止远程登陆,就像 Windows 下的安全模式登录
2 多用户模式,没有 NFS 和网络支持
3 完整的多用户文本模式,有 NFS 和网络,登陆后进入控制台命令行模式
4 系统未使用,保留一般不用,在一些特殊情况下可以用它来做一些事情。例如在笔记本电脑的电池用尽时,可以切换到这个模式来做一些设置
5 图形化模式,登陆后进入图形 GUI 模式,X Window 系
6 重启模式,默认运行级别不能设为 6,否则不能正常启动。运行 init 6 机器就会重启
#查看默认的启动级别
systemctl get-default
#设置默认第三启动级别
systemctl set-default multi-user.target
#设置默认第五启动级别
systemctl set-default graphical.target
2-5-文件管理命令
创建/修改/移动/删除/复制: touch mkdir mv vi rm cp
2-5-1-touch
作用:常用来创建空文件,如果文件存在,则修改这个文件的时间
语法:touch 文件名
2-5-2-mkdir
作用:创建目录
语法:mkdir (选项) 文件名
在创建一个目录的时候,如果这个目录的上一级不存在的话,要加参数-p
2-5-3-rm
作用:可以删除一个目录中的一个或多个文件或目录,对于链接文件,只是删除整个链接文件,而原文件保持不变的
语法:rm (选项) 处理对象
选项:
-f 强制删除,没有提示
-r 删除目录
2-5-4-cp
命令:cp 源文件/目录 目录文件/目录
选项:-R/r:递归处理,将指定目录下的所有文件与子目录一并处理
2-5-5-mv
语法:mv 源文件/目录 目标文件/目录
支持移动之后改目录或文件名
查看文件命令
2-5-6-cat
语法:cat 文件名
作用:查看文件内容,一次显示整个文件的内容
2-5-7-more
作用:以分页形式显示文件内容
语法:more + 文件名
说明: 按下回车刷新一行,按下空格刷新一屏,输入 q 键退出
2-5-8-less
作用:和 more 功能一样
语法:less +文件名
说明:linux 中 more 与 less 的区别
more:不支持后退,但几乎不需要加参数,空格键是向下翻页,Enter 键是向下翻一行,在不需要后退的情况下比较方便
less:支持前后翻滚,既可以向上翻页(pageup 按键),也可以向下翻页(pagedown 按键)。,空格键是向下翻页,
Enter 键是向下翻一行
2-5-9-head
作用: 用于显示文件的开头的内容。在默认情况下,head 命令显示文件的头 10 行内容
语法:head(选项)文件名
参数: -n 显示从文件头开始的行数
2-5-10-tail
作用: 用于显示文件中的尾部内容。默认在屏幕上显示指定文件的末尾 10 行
语法:tail (选项)文件名
参数:
-n 显示文件尾部多少行的内容(n 为数字)
-f 动态显示数据(不关闭),常用来查看日志
2-5-11-diff
作用:比较两个文件的差异
语法:diff 文件1 文件2
2-6-用户管理命令
2-6-1-useradd
作用:添加用户
语法:useradd -d "家目录"-u “UID” -g "初始组" -G "附加组" -s "登陆的 shell” 用户
-d: -d 用户主目录路径, 可以指定用户家目录
-M: 不创建用户的主目录
-g:设置用户初始组的名称或数字 ID;该组必须是存在的;如果没有设置该选项,useradd 会根据
/etc/login.defs 文件中的 USERGROUPS_ENAB 环境变量进行设置。
默认 USERGROUPS_ENAB yes 会用和用户名相同的名字创建群组,GID 等于 UID.
-G:用户要加入的附加组列表;使用逗号分隔多个组,不要添加空格;如果不设置,用户仅仅加入初始组。
(一个用户只允许有一个主组,可以有多个附属组)
-s:用户默认登录 shell 的路径;启动过程结束后,默认启动的登录 shell 在此处设定;请确保使用的 shell
已经安装,默认是 Bash。有时候需要禁止某些用户执行登录动作,例如用来执行系统服务的用户。将
shell设置成 /sbin/nologin 就可以禁止用户登录。
2-6-2-userdel
作用:删除用户
语法:userdel [options] 用户名
选项:-r 删除的时候,会同时删除用户的家目录和/var/mail 下的目录
2-6-3-usermod
-C =我们可以为useraccount添加注释字段。
-d =要修改目录的任何现有的用户帐户。
-e =使用此选项,我们可以在特定时期的帐户到期。
-g =更改主组用户。
-G =添加补充组。
-a =要添加该组的任何一个次要组。
-l =从howtoing更改登录名称howtoing_admin。
-L =锁定用户帐户。 这将锁定密码,所以我们不能使用该帐户。
-m =从现有的家目录到新的目录移动主目录的内容。
-p =要为新密码使用未加密的口令。 (不是安全的)。
-s =创建新帐户指定的外壳。
-u =可用于为999 0之间的用户帐户分配UID。
-U =要解锁的用户帐户。 这将删除密码锁,并允许我们使用用户帐户。
向用户添加信息
在**‘-c’选项用来设置有关用户帐号的一个简短的评论(信息)。 例如,让我们添加上“howtoing’**用户信息,使用下面的命令。
# usermod -c "This is Howtoing" howtoing
添加的用户信息后,同样的评论可以在**/ etc / passwd**文件中查看。
# grep -E --color 'howtoing' /etc/passwd
howtoing:x:500:500:This is Howtoing:/home/howtoing:/bin/sh
更改用户主目录
从**/home/ howtoing变化home目录到/ var / WWW /**,改变后确认家目录位置。
# usermod -d /var/www/ howtoing
# grep -E --color '/var/www/' /etc/passwd
howtoing:x:500:500:This is Howtoing:/var/www:/bin/sh
设置用户帐户到期日期
选项**'-e’是用来设置到期日与日期格式YYYY-MM-DD**的用户帐户
# usermod -e 2014-11-01 howtoing
# chage -l howtoing
Last password change : Nov 02, 2014
Password expires : never
Password inactive : never
Account expires : Nov 01, 2014
Minimum number of days between password change : 0
Maximum number of days between password change : 99999
Number of days of warning before password expires : 7
更改用户主组
要设置或更改用户主组,我们使用选项**“-g”**与usermod命令
# usermod -g babin howtoing_test
# id howtoing_test
uid=501(howtoing_test) gid=502(babin) groups=502(howtoing_test)
向用户添加组
如果你想添加一个名为**“howtoing_test0”新组“howtoing’用户,可以使用选项’-G’**与usermod命令,如下图所示。
# usermod -G howtoing_test0 howtoing
# id howtoing
注意 :要小心,同时增加了一个新的群体单独**“-G”选项中的现有用户,将删除该用户所属的所有现有组。 因此,随时添加的“-a”(附加)以“-G”**选项,添加或追加新组。
更改用户登录名
要更改任何现有用户的登录名,我们可以用**“-L”(新登录)选项。 在下面的例子中,我们更改登录名称howtoing到howtoing_admin。** 因此,用户名howtoing已被重命名使用新的名称howtoing_admin。
# usermod -l howtoing_admin howtoing
锁定用户帐户
锁定任何系统用户账号,我们可以用**“-L”(锁定)选项,帐户被锁定后,我们不能使用密码登录,您将看到一个!在/ etc / shadow文件中**的加密密码前加入,表示禁用密码。
# usermod -L babin
检查锁定的帐户。
# grep -E --color 'babin' cat /etc/shadow
解锁用户帐户
'-U’选项用于解锁任何锁定的用户,这将加密的密码之前删除!
# grep -E --color 'babin' /etc/shadow
# usermod -U babin
解锁后验证用户。
# grep -E --color 'babin' /etc/shadow
2-7-查看用户相关命令:
id #用户和组的信息
whoami #查看当前有效用户名
who #显示目前登入系统的用户信息。
w #w 命令用于显示已经登陆系统的用户列表
users #用于显示当前登录系统的所有用户的用户列表
2-8-改变文件的所属关系用到命令:
chown:可以用来改变文件(或目录)的属主
chgrp:可以用来改变文件(或目录)的默认属组
如果你要对目录进行操作,加参数 -R
2-8-1-chown
语法:
chown user:group filename
#比如:chown hr:san a.txt 把文件的属主和属组改为 hr,san
chown user filename
#比如:chown san a.txt 把文件的属主改为 san 用户
chown :group filename
#比如: chown :miao a.txt 把文件的属组改为 miao 这个组
chown user: filename
#比如:chown san: a.txt 自动继承这个用户所有的组
chgrp hr filename
#比如: chgrp hr f.txt
-R :递归(目录下的所有内容都更改,否则只修改目录)
2-8-2-chmod
作用:修改文件,目录的权限
语法:chmod [对谁操作] [操作符] [赋于什么权限] 文件名
对谁操作:
u----> 用户 user,表示文件或目录的所有者
g---->用户组 group,表示文件或目录所属的用户组
o---->其它用户 others
a---->所有用户 all
操作符:
+ #添加权限 ;
- # 减少权限 ;
= #直接给定一个权限
权限:r w x
八进制数字表示权限
权限 | 二进制值 | 八进制值 | 描述 |
---|---|---|---|
— | 000 | 0 | 没有任何权限 |
–x | 001 | 1 | 只有执行权限 |
-w- | 010 | 2 | 只有写入权限 |
-wx | 011 | 3 | 有写入和执行权限 |
r– | 100 | 4 | 只有读取权限 |
r-x | 101 | 5 | 有读取和执行权限 |
rw- | 110 | 6 | 有读取和写入权限 |
rwx | 111 | 7 | 有全部权限 |
权限对文件和目录的影响
权限 | 对文件的影响 | 对目录的影响 |
---|---|---|
r | 读取 | 查看目录内容(目录内的文件名或子目录名) |
w | 更改 | 创建或删除目录下的文件或子目录 |
x | 执行 | 访问目录内的文件内容(取决于目录下的文件的权限) |
2-8-3-文件的特殊权限
1、SUID(set uid 设置用户 ID):限定:只能设置在二进制可执行程序上面。对目录设置无效
功能:程序运行时的权限从执行者变更成程序所有者的权限
2、SGID:限定:既可以给二进制可执行程序设置,也可以对目录设置
功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会,继承上级目录的所属组
3、Stickybit:粘滞位权限是针对目录的,对文件无效,也叫防删除位
这 3 个特殊权限对应的数值为
SUID | SGID | Stickybit |
---|---|---|
u+s或u=4 | g+s或g=2 | o+t 或 o=1 |
SUID 属性一般用在可执行文件上,当用户执行该文件时,会临时拥有该执行文件的所有者权限。使用”ls -l” 或者”ll” 命令浏览文件时,如果可执行文件所有者权限的第三位是一个小写的”s”,就表明该执行文件拥有SUID 属性。
chmod u+s xxx.sh
SGID:
限定:既可以给二进制可执行程序设置,也可以给目录设置。
功能:在设置了 SGID 权限的目录下建立文件时,新创建的文件的所属组会继承上级目录的权限。
chmod g+s /xx/xx
Stickybit
限定:只作用于目录
功能:目录下创建的文件只有 root、文件创建者、目录所有者才能删除。
chmod o+t /xxx/xxx
2-8-4-ACL权限
文件或目录的三个固有权限组: 属主, 属组, 其他组;
此外, 假设还有guest用户,则通过ACL权限来解决.
ACl权限主要功能是提供固有的的三组权限之外的其他用户权限的设置。ACL可以针对单一用户或用户组, 文件或目录来进行rwx的权限设置。
新建目录权限:目录最大权限777-022(默认umask值)=755
新建文件权限:文件最大权限666-022(默认umask值)=644
getfacl 文件或目录
#查询文件(目录)的ACL权限
注释: 同时会查出3种传统权限, 如果未设置ACL权限则只显示传统权限)
setfacl [选项] 文件或目录 #设定单一文件或目录的ACL权限
[-m ] #设定ACL权限
[u: 用户名:权限模式(或数字)]
[g: 用户组:权限模式]
[示例]:
setfacl -m u:用户名:rwx或7(数字) 文件或目录 #对单一文件或目录的ACL权限设置
setfacl -m g:组名:权限 文件或目录 #设置用户组的ACL权限
setfacl -m u:用户:权限 -R 父级目录/ #递归设置"父级目录及其内已存在的文件"的ACL权限. -R 递归
setfacl -m d:u:用户:权限 -R 父级目录/ "ACL默认递归设置权限。 注意:默认递归权限只能赋予目录且只对之后的新建文件生效."
[注意.如果给目录赋予ACL权限, 则一般情况下两条命令都要输入]:
也即 递归与默认的区别:
setfacl -m u:用户:rx -R 目录/ #对目录内已经存在的文件生效
setfacl -m d:u:用户:rwx -R 目录/ #对目录内以后新建的文件生效[注意.递归会产生"权限溢出"的问题]: 当递归给目录x执行权限时, 同时会给目录内的文件和目录赋予x执行权限.
x执行权限对目录是可进入权限,但是对文件是可执行权限(属于非法操作),由此造成权限溢出.
解决办法是通过shell编程分别赋予目录和文件不同的权限模式.
删除ACL权限
setfacl -x u:用户 文件或目录/ #删除指定用户的ACL权限
setfacl -x g:用户组 文件或目录/ #删除指定用户组的ACL权限
setfacl -b 文件或目录/ #删除该文件或目录的所有ACL权限
2-8-5-chattr
Linux chattr命令用于改变文件属性。
这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
1. a:让文件或目录仅供附加用途。
2. b:不更新文件或目录的最后存取时间。
3. c:将文件或目录压缩后存放。
4. d:将文件或目录排除在倾倒操作之外。
5. i:不得任意更动文件或目录。
6. s:保密性删除文件或目录。
7. S:即时更新文件或目录。
8. u:预防意外删除。
用chattr命令防止系统中某个关键文件被修改:
chattr +i /etc/resolv.conf
lsattr /etc/resolv.conf
会显示如下属性
----i-------- /etc/resolv.conf
让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
chattr +a /var/log/messages
常见于messages文件的权限,清日志使用>messages命令
2-9-rpm相关命令
2-9-1-rpm包安装
命令格式:rpm [参数] 软件包
参数:
-i 是 install 的意思, 安装软件包
-v 显示附加信息,提供更多详细信息
-V 校验,对已经安装的软件进行校验
-h --hash 安装时输出####标记
rpm -ivh 包全名
2-9-2-rpm 查询功能
用法:rpm -q(query) 常与下面参数组合使用
-a(all) 查询所有已安装的软件包
-f(file)系统文件名(查询系统文件所属哪个软件包),反向查询
-i 显示已经安装的 rpm 软件包信息,后面直接跟包名
-l(list) 查询软件包中文件安装的位置
-p 查询未安装软件包的相关信息,后面要跟软件的命名
-R 查询软件包的依赖性
查看软件包内容是否被修改
rpm -V 包名
rpm -Vf 文件路径
注:如果出现的全是点,表示测试通过
出现下面的字符代表某测试的失败:
5 — MD5 校验和是否改变,你也看成文件内容是否改变
S — 文件长度,大小是否改变
L — 符号链接,文件路径是否改变
T — 文件修改日期是否改变
D — 设备
U — 用户,文件的属主
G — 用户组
M — 模式 (包含许可和文件类型)
? — 不可读文件
再后面的 c 文件名,它表示的是文件类型
c 配置文件
d 普通文件
g 不该出现的文件,意思就是这个文件不该被这个包所包含
l 授权文件(license file)
r 描述文件
2-9-3-rpm包卸载和升级
卸载
rpm -e 包名
-nocteps选项,即可以不检测依赖性直接卸载,但此方式不推荐大家使用,因为此操作很可能导致其他软件进程也无法使用。
升级
rpm -Uvh 包名
-U(大写)选项的含义是:如果该软件没安装过则直接安装;若没安装则升级至最新版本
在做RPM软件适配的时候,经常会出现需要自己安装额外的安装包,包名中的版本号不一致也会出现提示,要安装统一版本号的软件包,并且还会出现对更新软件包的依赖,在已经存在软件包的情况下,按需升级软件包,可以使用升级安装:
rpm -Uvh *.rpm
如果升级出错,可以执行强制安装实现对软件包的版本更新:
rpm -ivh --replacefiles --force --nodeps *.rpm
如果想要强制卸载某软件包,可以使用如下命令:
rpm -e *.rpm --nodeps
注意:在有很多依赖时,不推荐强制卸载,如果非要试一试,要做好系统备份啊~~
另外,一个使用的查看软件包安装脚本的命令:
rpm --script -qp *.rpm
2-10-配置yum源
2-10-1-本地配置yum源文件
vim /etc/yum.repos.d/centos7.repo
#必须以.repo结尾
[centos7]
name=CentOS7
baseurl=file:///mnt
enable=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-CentOS-7
注释:
[centos7] #yum 源名称,在本服务器上唯一的,用来区分不同的 yum 源
name= CentOS7 #对 yum 源描述信息
baseurl=file:///mnt #yum 源的路径,提供方式包括 FTP(ftp://...)、HTTP(http://...)、
#本地(file:///...光盘挂载目录所在的位置)
enabled=1 #为 1,表示启用 yum 源;0 为禁用
gpgcheck=0 #为 1,使用公钥检验 rpm 包的正确性;0 为不校验
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7 #指定进行 rpm 校验的公钥文件地址
2-10-2-网络配置yum源
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
wget 下载文件 ,-O 将 wget 下载的文件,保存到指定的位置,保存时可以重新起一个名字,或者直接写
一个要保存的路径,这样还用原来的文件名
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
注:$releasever 系统的版本的值等于
cat /etc/centos-release
CentOS Linux release 7.4.1708 (Core)
$basearch 等于:x86_64
2-11-yum 使用
yum 常用操作:
yum install -y httpd #安装软件包, -y 直接安装
yum -y update #升级软件包,改变软件设置和系统设置,系统版本内核都升级
yum -y upgrade #升级软件包,不改变软件设置和系统设置,系统版本升级,内核不改变
yum -y update #不加任何包,表示整个系统进行升级
yum info httpd #查询 rpm 包作用
yum provides /usr/bin/find #查看命令是哪个软件包安装的
yum -y remove 包名 #卸载
yum search keyword #按关键字搜索软件包
yum grouplist #查看有哪些软件包组
2-12-tar
作用:打包、压缩文件
查看 man tar
用法:tar [OPTION...] [FILE]...
参数:
-c create 创建文件
-x -extract [ˈekstrækt] 提取 解压还原文件
-v --verbose 显示执行详细过程
-f --file 指定备份文件
-t --list 列出压缩包中包括哪些文件,不解包,查看包中的内容
-C(大写) --directory 指定解压位置
示例:
#指定解压位置
tar xvf grub.tar.bz2 -C /opt/
#将文件back/和/etc/passwd打包,名称伟back.tar,放在/boot/grub目录下
tar -cvf back.tar /boot/grub back/ /etc/passwd
#不解包,查看包中的内容
tar -tvf grub.tar
tar -xf grub.tar
2-12-1-tar 归档+压缩:
语法:tar czvf newfile.tar.gz SOURCE
常用参数:
-z --gzip 以 gzip 方式压缩 扩展名: tar.gz
-j 以 bz2 方式压缩的 扩展名:tar.bz2
-J 以 xz 方式压缩 扩展名:tar.xz
例 1:创建.tar.gz 包
tar zcvf etc.tar.gz /etc #归档,注意备份的名字后缀
tar zxvf etc.tar.gz #解压缩
例 2:创建.tar.bz2 包
语法: #tar jcvf newfile.tar.bz2 SOURCE
tar -jcvf etc.tar.bz2 /etc
tar -jxvf etc.tar.bz2 /etc #解压缩
tar jxvf etc.tar.bz2 -C /opt #解压到 opt 目录下
例 3:创建.tar.xz 包
tar -Jcvf etc.tar.xz /etc
tar -xvf etc.tar.xz #tar.xz 这类包,解压缩
或:
tar -Jxvf etc.tar.xz
2-13-zip 管理压缩文件
zip 是压缩程序
unzip 是解压程序。
-d 目录 :解压到指定的目标
#压缩文件
zip a.zip /etc/passwd
#压缩目录
zip -r grub.zip /boot/grub
#解压缩
unzip grub.zip
unzip grub.zip -d /opt/ # -d 解压到指定的目标/opt
2-14-file
作用: file - determine file type #确定文件类型
用法: file /etc/passwd
注:linux 系统不根据后缀名识别文件类型
2-15-du
作用:查看目录大小
用法:
du /etc
du -sh * 查看目录下每个文件的大小
2-16-df
作用:查看分区大小
用法:df -h 快速查看磁盘大小和存储空间
2-17-sort
作用:排序
用法:sort [option] [filename]
参数:
-n 按数据排数,默认从小到大
-M 按月份排序
-r 反序排序
-t 指定一个用来区分键位置字符
-k 后面跟数字,指定按第几列进行排序
sort -t ":" -k3 -r /etc/passwd | more #按: 做分隔符,以第 3 列,也就是用户 UID,来从大到小排序
du -h /etc | sort -r | more #把 etc 目录下所有文件,按从大到小排序
2-18-使用 ps 查看进程工具
1、ps 查看进程工具
常用的参数:
a: 显示跟当前终端关联的所有进程
u: 基于用户的格式显示(U: 显示某用户 ID 所有的进程)
x: 显示所有进程,不以终端机来区分进程
ps aux 是用 BSD 的格式来显示进程。
ps -ef 是用标准的格式显示进程
常用的选项组合 ps -aux
USER: 启动这些进程的用户
PID: 进程的 ID
%CPU 进程占用的 CPU 百分比;
%MEM 占用内存的百分比;
VSZ:进程占用的虚拟内存大小(单位:KB)
RSS:进程占用的物理内存大小(单位:KB)
STAT:该程序目前的状态,Linux 进程有 5 种基本状态:
R :该程序目前正在运作,或者是可被运作;
S :该程序目前正在睡眠当中 (可说是 idle 状态啦!),但可被某些讯号(signal) 唤醒。
T :该程序目前正在侦测或者是停止了;
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
D 不可中断状态.
START:该 process 被触发启动的时间;
TIME :该 process 实际使用 CPU 运作的时间。
COMMAND:该程序的实际指令
常用的选项组合 ps -ef
e 显示所有进程
-f 显示完整格式输出
UID: 启动这些进程的用户
PID: 进程的 ID
PPID: 父进程的进程号
C: 进程生命周期中的 CPU 利用率
STIME: 进程启动时的系统时间
TTY: 表明进程在哪个终端设备上运行。如果显示 ?表示与终端无关,这种进程一般是内核态进程。另外,
tty1-tty6 是本机上面的登入者程序,若为 pts/0 等,则表示运行在虚拟终端上的进程。
TIME: 运行进程一共累计占用的
CPU 时间
CMD: 启动的程序名称
2-19-uptime查看cpu负载工具
作用:查看 CPU 负载工具
消息详解
例:13:22:30 up 20days, 2 users, load average: 0.06, 0.60, 0.48
消息 | 解释 |
---|---|
13:22:30 | 当前时间 |
up 20days | 系统运行时间 ,说明此服务器连续运行 20 天了 |
2 users | 当前登录用户数 |
load average: 0.06, 0.60, 0.48 | 系统负载,即任务队列的平均长度。 三个数值分别为 1 |
分钟、5 分钟、15 分钟前到现在的平均值。 |
2-20-top动态管理进程命令
第一行:和uptime弹出的内容相同
第二行、第三行:
字段 | 含义 |
---|---|
Tasks: 481 total | 进程总数 |
1 running | 正在运行的进程数 |
480 sleeping | 睡眠的进程数 |
0 stopped | 停止的进程数 |
0 zombie | 僵尸进程数 |
Cpu(s): 0.0% us | 系统用户进程使用 CPU 百分比。 |
0.0% sy | 内核中的进程占CPU的百分比 |
0.0% ni | 用户进程空间内改变过优先级的进程占用 CPU 百分比 |
98.7% id | 空闲CPU百分比 |
0.0% wa | cpu 等待 I/0 完成的时间总量 |
0.0% hi(了解) | 硬中断消耗时间:硬中断,占的 CPU 百分比。硬中断是由硬件产生的,比如,像磁盘,网卡,键盘,时钟等。每个设备或设备集都有它自己的 IRQ(中断请求)。基于 IRQ,CPU 可以将相应的请求分发到对应的硬件驱动上(注:硬件驱动通常是内核中的一个子程序,而不是一个独立的进程) |
0.0% si(了解) | 软中断消耗时间:软中断,占的 CPU 百分比。通常,软中断是一些对 I/O 的请求。这些请求会调用内核中可以调度 I/O 发生的程序。对于某些设备,I/O 请求需要被立即处理,而磁盘 I/O 请求通常可以排队并且可以稍后处理。根据 I/O 模型的不同,进程或许会被挂起直到 I/O 完成,此时内核调度器就会选择另一个进程去运行。I/O 可以在进程之间产生并且调度过程通常和磁盘 I/O 的方式是相同 |
0.0 st (steal 偷) | st:虚拟机偷取物理的时间。比如:物理机已经运行了 KVM,XEN 虚拟机。KVM 虚拟机占用物理机的 cpu 时间 |
第四行、第五行:内存信息
字段 | 含义 |
---|---|
Mem: 2033552k total | 物理内存总量 |
340392k used | 使用的物理内存总量 |
1376636k free | 空闲内存总量 |
316524k buff/cache | 用作内核缓存的内存量。和 free -m 一个意思 |
Swap: 2017948k total | 交换区总量 |
0k used | 使用的交换区总量 |
192772k free | 空闲交换区总量 |
1518148 avail Mem | 总的可利用内存是多少 |
注:如果 swap 分区,被使用,那么你的内存不够用了。
第 七行进程信息
列名 | 含义 |
---|---|
PID | 进程id |
USER | 进程所有者的用户名 |
PR | 优先级(由内核动态调整),用户不能 |
NI | 进程优先级。 nice 值。负值表示高优先级,正值表示低优先级,用户可以自己调整 |
VIRT(virtual memory usage) | 虚拟内存,是进程正在使用的所有内存(ps 中标为 VSZ) VIRT:virtual memory usage 虚拟内存 1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等 2、假如进程申请 100m 的内存,但实际只使用了 10m,那么它会增长 |
100m,而不是实际的使用量 | |
RES(resident memory usage) | 是进程所使用的物理内存。实际实用内存(ps 中标为 RSS)RES:resident memory usage 常驻内存 1、进程当前使用的内存大小,但不包括 swap out 2、包含其他进程的共享 3、如果申请 100m 的内存,实际使用 10m,它只增长 10m,与 VIRT相反 4、关于库占用内存的情况,它只统计加载的库文件所占内存大小 |
| SHR | 共享内存大小,单位 kb
SHR:shared memory 共享内存
1、除 M 了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out 后,它将会降下来
S 进程状态
D=不可中断的睡眠状态
R=运行中或可运行
S=睡眠中
T=已跟踪/已停止
Z=僵停 |
| %CPU | 上次更新到现在的 CPU 时间占用百分比 |
| %MEM | 进程使用的物理内存百分比 |
| TIME+ | 进程使用的 CPU 时间总计,单位 1/100 秒 |
| COMMAND | 命令名/命令行 |
top 快捷键:
默认 3s 刷新一次,按 s 修改刷新时间
按空格 :立即刷新。
q 退出
P:按 CPU 排序
M:按内存排序
T 按时间排序
p: 进程 IP,查看某个进程状态
数字键 1:显示每个内核的 CPU 使用率
u/U:指定显示的用户
h:帮助
2-21-lsof 命令
lsof 命令用于查看你进程打开的文件,打开文件的进程,进程打开的端口(TCP、UDP)
-i<条件>:列出符合条件的进程。(4、6、协议、:端口、 @ip )
-p<进程号>:列出指定进程号所打开的文件;
2-22-pstree工具
pstree:(display a tree of processes)以树状图显示进程,只显示进程的名字,且相同进程合并显示。
格式
pstree
pstree -p #以树状图显示进程,还显示进程 PID。
2-23-系统任务相关的几个命令(了解)
& 用在一个命令的最后,可以把这个命令放到后台执行.
ctrl+z 将一个正在前台执行的命令放到后台,并且暂停.
jobs 查看当前有多少在后台运行的进程.它是一个作业控制命令
fg (foreground process) 将后台中的命令调至前台继续运行, 如果后台中有多个命令,可以用fg %jobnumber 将选中的命令调出,%jobnumber 是通过 jobs 命令查到的后台正在执行的命令的序号(不是 pid)
bg (background process) 将一个在后台暂停的命令,变成继续执行; 如果后台中有多个命令,可以用
bg %jobnumber 将选中的命令调出,%jobnumber 是通过 jobs 命令查到的后台正在执行的命令的序号(不是 pid)
2-24-kill 关闭进程
关闭进程 3 个命令:kill killall pkill
kill 关闭进程:kill 进程号 关闭单个进程
killall 和 pkill 命令用于杀死指定名字的进程
通过信号的方式来控制进程的
kill -l =====> 列出所有支持的信号(了解) 用最多的是: 9 信号
信号编号 | 信号名 | |
---|---|---|
1 | SIGHUP | 重新加载配置 |
2 | SIGINT | 键盘中断 crtl+c |
3 | SIGQUIT | 退出 |
9 | SIGKILL | 强制终止 |
15 | SIGTERM | 终止(正常结束),缺省信号 |
18 | SIGCONT | 继续 |
19 | SIGSTOP | 停止 |
20 | SIGTSTP | 暂停 crtl+z |
2-25-tee命令
功能:读取标准输入的数据,并将其内容输出成文件。
语法:tee [-a][--help][--version][文件...]
参数:
-a, --append
内容追加到给定的文件而非覆盖
--help 在线帮助
tee 指令会从标准输入设备读取数据,将其内容输出到标准输出设备,同时保存成文件
例 1:将磁盘使用的信息写入文件
df -h | tee disk.log
例 2:将文件系统使用的信息追加到文件
df -h | tee -a disk.log
注: 可以使用来记录日志
2-26-查找文件命令
which 查看可执行文件的位置
whereis 查看可执行文件的位置及相关文件
locate 配合数据库缓存,快速查看文件位置
grep 过滤匹配,它是一个文件搜索工具
find 查找相关文件
2-26-1-locate
locate 命令和 find -name 功能差不多,是它的另外一种写法,但是这个要比 find 搜索快的多,因为 find命令查找的是具体目录文件,而 locate 它搜索的是一个数据库/var/lib/mlocate/mlocate.db,这个数据库中存
有本地所有的文件信息;这个数据库是 Linux 自动创建并每天自动更新维护。相关的配置信息在
/etc/updatedb.conf,查看定时任务信息在/etc/cron.daily/mlocate
touch /opt/xuegod.txt
locate xuegod.txt #发现找不到
updatedb #如果对当天文件查找,需要手动更新数据库 updatedb
2-26-2-grep 查找使用
作用:过滤,它能够使用正则表达式来搜索文本,并把结果打印出来
参数:
-v 取反
-i 忽略大小写
^# 以#开头
#$ 以#结尾
^$ 空行
-n 对过滤的内容加上行号
| 或者的意思
2-26-3-find 命令使用
格式:find pathname -options [-print]
命令字 路径名称 选项 输出
参数
:
pathname: find 命令所查找的目录路径,不输入代表当前目录例如用 . 来表示当前目录,用 / 来表示系
统根目录。
find 命令选项:
-name 按照文件名查找文件。 “名称”
-perm 按照文件权限来查找文件。666 777 等
-user 按照文件属主来查找文件
-group 按照文件所属的组来查找文件
-mtime -n / +n 按照文件的更改时间来查找文件,
- n 表示文件更改时间距现在 n 天以内
+ n 表示文件更改时间距现在 n 天以前
-type 查找某一类型的文件
b - 块设备文件
d - 目录
c - 字符设备文件
p - 管道文件
l- 符号链接文件
f - 普通文件
-size n 查找符合指定的文件大小的文件
-exec 对匹配的文件执行该参数所给出的其他 linux 命令, 相应命令的形式为' 命令 {} \;,注
意{ }和 \;之间的空格,{}代表查到的内容
2-27-软链接和硬链接
2-27-1-软链接
语法:ln -s 源文件 软链接的名字
跨分区创建(源文件必须写绝对路径)
注:源文件被删除,链接文件失效
2-27-2-硬链接
语法格式:ln 源文件 目标文件
注意:源文件被删除,不影响链接文件的正常使用,不能跨分区创建
2-28-RAID磁盘阵列
RAID 的创建有两种方式:软 RAID(通过操作系统软件来实现)和硬 RAID(使用硬件阵列卡);在企业中用的最多的是:raid1、raid5 和 raid10。
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-665LVUyK-1691634830317)(RAID磁盘阵列.png)]
RAID关键技术
镜像:提供了数据的安全性;
chunk条带(块大小也可以说是条带的粒度),它的存在的就是为了提高I/O,提供了数据并发性
数据的校验:提供了数据的安全
RAID-0工作原理
条带(strping),也是我们最早出现的RAID模式
需磁盘数量:2块以上(大小最好相同),是组建磁盘阵列中最简单的一种形式,只需要2块以上的硬盘即可.
特点:成本低,可以提高整个磁盘的性能和吞吐量。RAID0没有提供冗余或错误修复能力,速度快.
任何一个磁盘的损坏将损坏全部数据;磁盘利用率为100%。
RAID-1工作原理
mirroring(镜像卷),需要磁盘两块以上
原理:是把一个磁盘的熟路镜像到另一个磁盘上,也就是说数据在写入一块磁盘的同时,会在另一块闲置的磁盘上生成镜像文件(同步)
RAID-1 mirroring(镜像卷),至少需要两块硬盘,raid大小等于两个raid分区中最小的容量(最好将分区的大小分为一样),数据有冗余,在存储时同时写入两块硬盘,实现了数据备份
RAID-5工作原理
需要三块以上硬盘,可以提供热备盘实现故障的恢复;只损坏一块,没有问题。但如果同时损坏两块磁盘,则数据将会损坏,空间利用率:(n-1)/n 2/3
2-28-1-硬RAID
需要raid卡,我们的磁盘是接在RAID卡的,由它统一管理和控制,数据也由它来进行分配和维护,它有自己的CPU,处理速度快
2-28-2-软RAID
通过操作系统实现,Linux内核中有一个md(multiple devices)模块在底层管理RAID设备,它会在应用层给我们提供一个应用程序的工具mdadm,mdadm是Linux下用于创建和管理软件RAID的命令
mdadm命令常见参数解释
参数 | 命令 |
---|---|
-C或–creat | 建立一个新阵列 |
-A | 激活磁盘阵列 |
-D或–detail | 打印磁盘阵列设备的详细信息 |
-s或–scan | 扫描配置文件或/proc/mdstat得到阵列缺失信息 |
-f | 将设备状态定为故障 |
-a或-add | 添加设备到阵列 |
-v | –verbose显示详细信息 |
-r | 移除设备 |
-l或–level= | 设定磁盘阵列的级别 |
-n | 指定阵列成员(分区/磁盘)的数量 |
-x | 指定阵列中备用盘的数量 |
-c | 设定阵列的块chunk块大小,单位为KB |
-G | 改变阵列大小或形态 |
-S | 停止阵列 |
2-29-LVM管理
LVM逻辑卷管理,就是在磁盘分区和文件系统之间添加的一个逻辑层,来为文件系统屏蔽下层磁盘分区布局,提供一个抽象的盘卷,在盘卷上建立文件系统。管理员利用LVM可以在餐盘不用重新分区的情况下动态调整文件系统的大小,并且利用LVM管理的文件系统可以跨越磁盘
物理存储介质(the physical media):LVM存储介质可以是磁盘分区,整个磁盘,RAID阵列或SAN磁盘,设备必须初始化为LVM物理卷,才能与LVM结合使用
物理卷PV(physical volume):物理卷就是LVM的基本存储介质(如分区,磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身
卷组VG(volume group):一个LVM卷组由一个或多个物理卷组成
逻辑卷LV(logical volume):LV建立在VG之上建立文件系统
PE(physical extents):PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
LE(logical extent):LV逻辑卷中可以分配的最小存储单元,在同一个卷组中,LE的大小和PE是相同且一一对应的
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CeLVYeVF-1691634830320)(LVM示意图.png)]
创建并使用LVM卷示例:
创建pv
添加一个sdb磁盘
fdisk /dev/sdb #创建主分区
ls /dev/sdb* #查看分区列表
fdisk /dev/sdb
t
选择分区号
8e
w
pvcreate /dev/sdb{1,2,3,4} #创建pv
pvdisplay /dev/sdb1 #查看物理卷信息
创建vg卷组
#语法: vgcreate vg名字 pv的名字 可以跟多个pv
vgcreat vg01 /dev/sdb1
vgs
vgdisplay vg01
创建lv
#lvcreate -n 指定新逻辑卷的名称 -L 指定lv大小的size(M,G)vgname
lvcreate -n lv02 -l 4 vg01
lvs
pvdisplay /dev/sdb1
vgdisplay vg01
文件系统格式与挂载
mkdir /vg01
ls /dev/vg01/ #查看逻辑卷
mkfs.ext4/dev/vg01/lv01
mount /dev/vg01/lv01 /lv01
df -Th /lv01
指定PE大小
#指定PE大小用的参数 -s
vgcreate -s 16M vg02 /dev/sdb2
vgdisplay vg02
LV扩容
vgs #确认是否有可用的扩容空间,因为空间是从VG里面创建的,并且LV不能跨VG扩容
扩容逻辑卷
vextend -L +30m /dev/vg01/lv01
注意:扩容30m和扩容到30m是不一样的写法
扩容30m:-L +30m
扩容到30m:-L 30m
lvs #查看LV是否扩容成功
df -Th /lv01
扩容文件系统
#ext4文件系统扩容使用命令语法:resize2f 逻辑卷名称
#xfs文件系统扩容使用命令语法:xfs_growfs 挂载点
vg卷组扩容
vgs
pvcreate /dev/sda3 #创建pv
vgexted vg01 /dev/sdb3 #扩容
vgs
LVM删除
umount卸载 > lvremove lv移除卷组中所有逻辑卷 > vgremove vg 移除卷组 > pvremove 移除pv
umount /lv01
lvremove /dev/vg01/lv01
lvs
vgremove vg01
vgs
pvs
pvremove /dev/sdb1
pvs
2-30-计划任务
分类:
周期性计划任务
临时性计划任务
at
处理仅执行一次就结束的任务
systemctl start atd
~]# at 20:46 #注意:如果是上午时间,后面加上 am,比如 9:20am
at> mkdir /tmp/xuegod #输入你要执行的命令
at> touch /tmp/xuegod/a.txt
at> <EOT> #结束:ctrl+d
~]# at -l #查看计划任务
~]# atq #查看计划任务
检查 at 计划任务运行结果
~]# ls /tmp/xuegod/
a.txt
这个查看,只能看到还没有执行的。如果这个任务已经开始执行或者执行完成了,是看不到的
~]# at -l
~]# at -c 5 #-c 打印任务的内容到标准输出, 查看 5 号计划任务具体内容
查看定时任务内容
删除 at 计划任务
语法: atrm 任务编号
~]# at -l
3 Tue May 22 08:43:00 2018 a root
5 Mon May 21 23:00:00 2018 a root
~]# atrm 5
~]# at -l
3 Tue May 22 08:43:00 2018 a root
crontab
处理周期性任务
crontab 的参数:
crontab -u hr #指定 hr 用户的 cron 服务
crontab -l
#列出当前用户下的 cron 服务的详细内容
crontab -u mk -l #列出指定用户 mk 下的 cron 服务的详细内容
crontab -r #删除 cron 服务
crontab -e #编辑 cron 服务
符号 | 含义 | 示例 |
---|---|---|
* | 代表取值范围内的数字 | 任意/每 |
/ | 指定时间的间隔频率 | */10 |
- | 代表从某个数字到某个数字 | 9-15 |
, | 分开几个离散的数字 | 3,6-13,17 |
2-31-日志服务
在 centos7 中,系统日志消息由两个服务负责处理:systemd-journald 和 rsyslog
/var/log 目录保管由 rsyslog 维护的,里面存放的一些特定于系统和服务的日志文件
日志目录 | 用途 |
---|---|
/var/log/message | 大多数系统日志消息记录在此处。有也例外的:如与身份验证,电子邮件处理相关的定期作业任务等 |
/var/log/secure | 安全和身份验证相关的消息和登录失败的日志文件。 ssh 远程连接产生的日志 |
/var/log/maillog | 与邮件服务相关的消息日志文件 |
/var/log/cron | 与定期执行任务相关的日志文件 |
/var/log/boot.log | 与系统启动相关的消息记录 |
/var/log/dmesg | 与系统启动相关的消息记录 |
清除日志:
~]# > /var/log/message
一般不建议清,更不建议使用rm -rf /var/log/message清除,如果使用这条命令,需要重启rsyslog服务
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FOX8sdsR-1691634830320)(日志优先级.png)]
日志切割配置文件:
**/etc/logrotate.conf 以及 /etc/logrotate.d/ **
logrotate 的执行由 crond 服务调用的。
~]# vim /etc/cron.daily/logrotate #查看 logrotate 脚本内容
日志强制轮询
logcreate -vf 日志文件名(/var/log/mmessage)
-v 显示指令执行过程
-f 强制执行
2-32-Linux网络管理
centos7以上版本默认使用NetworkManager进行网络管理,主要的配置方式有两种nmtui(图形化配置)nmcli(命令行配置)
nmcli命令行配置介绍
nmcli是NetworkManager的一个命令行工具,它提供了使用命令行配置由NetworkManager管理网络连接的方法
nmcli命令的基本格式为:
nmcli [OPTIONS] OBJECT { COMMAND | help }
OBJECT选项可以是general、networking、radio、connection或device等。在日常使用中,最常使用的是-
t, --terse(用于脚本)、-p, --pretty选项(用于用户)及-h, --help选项。用户可以使用“ nmcli help”获取更多
参数及使用信息。
nmcli常用命令
显示NetworkManager状态:
$ nmcli general status
显示所有连接状态:
$ nmcli connection show
只显示当前活动连接,如下所示添加 -a, --active:
$ nmcli connection show --active
显示由NetworkManager识别到设备及其状态:
$ nmcli device status
使用nmcli工具启动和停止网络接口,在root权限下执行如下命令:
nmcli connection up id em1
nmcli device disconnect em1
设备管理
使用如下命令,NetworkManager将连接到对应网络设备,尝试找到合适的连接配置,并激活配置。
$nmcli device connect "$IFNAME"
说明: 如果不存在相应的配置连接,NetworkManager将创建并激活具有默认设置的新配置文件。
使用如下命令,NetworkManager将断开设备连接,并防止设备自动激活。
$nmcli device disconnect "$IFNAME"
说明: 如果不存在相应的配置连接,NetworkManager将创建并激活具有默认设置的新配置文件。
使用如下命令,NetworkManager将断开设备连接,并防止设备自动激活。
配置动态IP连接
要使用 DHCP 分配网络时,可以使用动态IP配置添加网络配置文件,命令格式如下:
nmcli connection add type ethernet con-name connection-name ifname interface-name
要例如创建名为net-test的动态连接配置文件,在root权限下使用以下命令:
要例如创建名为net-test的动态连接配置文件,在root权限下使用以下命令:
nmcli connection add type ethernet con-name net-test ifname enp3s0
Connection 'net-test' (a771baa0-5064-4296-ac40-5dc8973967ab) successfully added
在root权限下使用以下命令激活网络连接:
nmcli con up net-test
检查这些设备及连接的状态,使用以下命令:
$ nmcli device status
添加静态 IPv4 配置的网络连接,可使用以下命令:
nmcli connection add type ethernet con-name connection-name ifname interface-name ip4 address gw4 address
例如创建名为 net-static的静态连接配置文件,在root权限下使用以下命令:
例如创建名为 net-static的静态连接配置文件,在root权限下使用以下命令:
nmcli con add type ethernet con-name net-static ifname enp3s0 ip4 192.168.0.10/24 gw4 192.168.0.254
激活新的网络连接,在root权限下使用以下命令:
nmcli con up net-static ifname enp3s0
检查这些设备及连接的状态,使用以下命令:
$ nmcli device status
查看配置的连接详情,使用以下命令(使用 -p, --pretty 选项在输出结果中添加标题和分段):
$ nmcli -p con show net-static
使用nmcli命令为网络连接配置静态路由,使用命令如下:
$ nmcli connection modify enp3s0 +ipv4.routes "192.168.122.0/24 10.10.10.1"
在root权限下使用 ip route 命令显示当前的 IP 路由表
# ip route
启动关闭指定网卡:
~]# ifconfig ens38 down
~]# ifconfig
~]# ifconfig ens38 up
2-33-查看端口的监听状态
netstat 命令: 查看系统中网络连接状态信息,
常用的参数格式 : netstat -anutp
-a, --all 显示本机所有连接和监听的端口
-n, --numeric don't resolve names 以数字形式显示当前建立的有效连接和端口
-u 显示 udp 协议连接
-t 显示 tcp 协议连接
-p, --programs 显示连接对应的 PID 与程序名
2-34-路由信息
查看路由信息
route -n
注:0.0.0.0 192.168.1.1 0.0.0.0 #0.0.0.0 是 32 位二进制转换成十进制的写法。32 位子
网掩码都为 0。表示 IP 地址 32 位都是主机位。如果 IP 地址是 0.0.0.0,子网掩码也是0.0.0.0,则表示所有的 IP地址,或者是没有 IP 地址。
添加/删除路由条目
# route add [-net|-host] [网域或主机] netmask [mask] [gw|dev]
# route del [-net|-host] [网域或主机] netmask [mask] [gw|dev]
增加 (add) 与删除 (del) 路由的相关参数:
-net :表示后面接的路由为一个网域;
-host :表示后面接的为连接到单部主机的路由;
netmask :与网域有关,可以设定 netmask 决定网域的大小;
gw :gateway 的简写,后续接的是 IP 的数值喔,与 dev 不同;
dev :如果只是要指定由那一块网路卡连线出去,则使用这个设定,后面接 eth0 等
例:
route add -net 192.168.2.0 netmask 255.255.255.0 dev ens38
2-35-Linux文本三剑客
grep更适合单纯地查找或匹配文本;sed更适合编辑匹配到的文本,awk更适合格式化文本,对文本进行较复杂格式处理。
grep
Linux系统中grep命令是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并将匹配的行打印出来(匹配到的标红)。grep全称是Global Regular Expression Print,表示全局正则表达式版本,它的使用权限是所有用户。
grep的工作方式是这样的,它在一个或多个文件中搜索字符串模板。如果模板包括空格,则必须被引用,模板后的所有字符串被看做是文件名。搜索的结果被送到标准输出,不影响原文件内容。
grep可用于shell脚本,因为grep通过一个返回状态值来说明搜索的状态,如果模板搜索成功,则返回0;如果搜索不成功,则返回1;如果搜索的文件不存在,则返回2。可利用这些返回值进行一些自动化的文本处理工作。
egrep等同于grep -E:扩展的正则表达式(除了<,>,\b之外,使用其他正则都可以去掉\)
命令格式:
grep [option] pattern file
命令用途:用于过滤/搜索特定字符。可配合正则表达式来进行使用,使用上十分灵活。
命令参数:
-A<显示行数>:除了显示符合样式的那一行之外,并显示该行之后的内容。
-B<显示行数>:除了显示符合样式的那一行之外,并显示该行之前的内容。
-C<显示行数>:除了显示符合样式的那一行之外,并显示该行之前后的内容。
-c:统计匹配的行数
-e:实现多个选项间的逻辑or关系
-E:扩展的正则表达式
-f file:从file获取pattern匹配
-F:相当于fgrep
-i --ignore-case:忽略字符大小写的差别
-n:显示匹配的行号
-o:仅显示匹配到的字符串
-q:静默模式,不输出任何信息
-s:不显示错误信息
-v:显示不被pattern匹配到的行,相当于[^]反向匹配
-w:匹配整个单词
grep搭配正则表达式使用:
grep -n "" test.txt #""内什么都没有,默认匹配全文件的内容,因此会显示整个文件的内容
grep -n "^$" text.txt #^$表示空行
grep -n ".n" text.txt #.表示匹配任意一个字符
grep -n "\." text.txt #\.转义之后仅代表字符.
grep -n "n*" text.txt #匹配前一个字符0个或多个,假如匹配0个的时候,实际上就等于空,这种情况默认就匹配全文件的内容,匹配的字符大于0,默认输出匹配的行
grep -n ".*" text.txt #匹配任意字符
grep -n "[abc]" text.txt #匹配a或b或c
grep -n "[^abc]" text.txt #匹配不是a或b或c的任意字符
grep搭配扩展正则表达式使用:
egrep "^[abc]+" text.txt #查找以括号里的任意字符开头且重复前一个字符一次或多次的行
egrep "^[abc]?" text.txt #?匹配前面的字符0次或一次,如果匹配0次,就默认为空,显示全文
netstat -antup | egrep "1137 | 1056" #|表示或,查找多个字符
sed
sed基础
sed是一种流编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为**“模式空间”,接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。然后读入下一行,执行下一个循环。如果没有使用诸如“D”的特殊命令,那会在两个循环之间清空模式空间,但不会清空保留空间**。这样不断重复,直到文件末尾。文件内容并没有改变,除非使用重定向存储输出或-i。
功能:主要用来自动编辑一个或多个文件,简化对文件的反复操作。
命令格式
sed [选项] [command] 文件名
常用选项
- -n:不输出模式空间内容到屏幕,即不自动打印,只打印匹配到的行
- -e:多点编辑,对每行处理时,可以有多个script
- -f:把script写到文档中,在执行sed时,-f指定文件路径;如果有多个script,换行写入
- -r:支持扩展的正则表达式
- -i:直接将处理的结果写入文件
- -i.bak:在将处理的结果写入文件之前备份一份
地址定界
- 不给地址:对全文进行处理
- 单地址:
- #: 指定的行
- /pattern/:被此处模式所能够匹配到的每一行
- 地址范围:
- #,#
- #,+#
- /pat1/,/pat2/
- #,/pat1/
- ~:步进
- sed -n ‘1~2p’ 只打印奇数行 (1~2 从第1行,一次加2行)
- sed -n ‘2~2p’ 只打印偶数行
编辑命令
- d:删除模式空间匹配的行,并立即启用下一轮循环
- p:打印当前模式空间内容,追加到默认输出之后
- a:在指定行后面追加文本,支持使用\n实现多行追加
- i:在行前面插入文本,支持使用\n实现多行追加
- c:替换行为单行或多行文本,支持使用\n实现多行追加
- w:保存模式匹配的行至指定文件
- r:读取指定文件的文本至模式空间中匹配到的行后
- =:为模式空间中的行打印行号
- !:模式空间中匹配行取反处理
- s///:查找替换,支持使用其它分隔符,如:s@@@,s###;
- 加g表示行内全局替换;
- 在替换时,可以加一下命令,实现大小写转换
- \l:把下个字符转换成小写。
- \L:把replacement字母转换成小写,直到\U或\E出现。
- \u:把下个字符转换成大写。
- \U:把replacement字母转换成大写,直到\L或\E出现。
- \E:停止以\L或\U开始的大小写转换
常用格式:
sed "/aaa/p" demo #匹配到的行会打印一遍,不匹配的行也会打印
sed -n "/aaa/p" demo #仅打印匹配的行,-n,不显示没匹配的行
sed -e "s/a/A/" -e "s/b/B/" demo #-e多点编辑
cat sedscript.sed
s/a/A/g
sed -f sedscript.sed demo #-f 使用文件处理
sed -i.bak "s/a/A/g" demo #-i.bak直接对文本进行处理,同时将原文本备份为.bak文件
sed -i "s/a/A/g" demo #-i直接对文本进行处理
地址界定示例:
sed -n "p" demo #不指定行,打印全部内容
sed "2s/b/B/g" demo #替换第2行的b为B
sed -n "1,2p" demo #打印1-2行
sed -n "/aaa/,/DD/p" demo #打印aaa-DD行
sed -n "2,/DD/p" demo #打印2-DD行
sed "1~2s/[aA]/E/g" demo #将奇数行的a或A替换为E
编辑命令示例:
[root@aliyun shell]# cat demo
aaa
bbbb
AABBCCDD
[root@aliyun shell]# sed "2d" demo #删除第2行
aaa
AABBCCDD
[root@aliyun shell]# sed -n "2p" demo #打印第二行
bbbb
[root@aliyun shell]# sed "2a123" demo #将123添加到第二行后面
aaa
bbbb
123
AABBCCDD
[root@aliyun shell]# sed "1i123" demo #将123添加到第一行前面
123
aaa
bbbb
AABBCCDD
[root@aliyun shell]# sed "3c123\n456" demo #将123\n456替换第三行
aaa
bbbb
123
456
[root@aliyun shell]# sed -n "3w/home/shell/demo3" demo #将第三行写到/home/shell/demo3文件中
[root@aliyun shell]# cat demo3
AABBCCDD
[root@aliyun shell]# sed "1r/home/shell/demo3" demo #将/home/shell/demo3文件中内容读取到第一行后面
aaa
AABBCCDD
bbbb
AABBCCDD
[root@aliyun shell]# sed -n "=" demo #打印行号
1
2
3
[root@aliyun shell]# sed "s@[a-z]@\u&@g" demo #将所有小写字母转换为大写
AAA
BBBB
AABBCCDD
[root@aliyun shell]# sed -n '2!p' demo #除第二行内容外,全部打印
aaa
AABBCCDD
sed高级编辑命令
格式
- h:将模式空间中的内容覆盖至保持空间中
- H:将模式空间中的内容追加至保持空间中
- g:从保持空间取出数据覆盖至模式空间
- G:从保持空间取出数据追加至模式空间
- x:将模式空间中的内容与保持空间中的内容进行互换
- n:读取匹配到的行的下一行覆盖至模式空间
- N:读取匹配到的行的下一行追加至模式空间
- d:删除模式空间中的行
- D:删除当前模式空间开端到\n的内容(不再传至标准输出),放弃之后的命令,但是对剩余模式空间重新执行sed
awk
awk是一种编程语言,用于在linux/unix下对文本和数据进行处理。数据可以来自于标准输入、一个或多个文件、或其他命令的输出。它支持用户自定义函数和动态正则表达式等功能,是linux/unix下的一个强大的编程工具。它在命令行中使用,但更多是作为脚本使用。awk有很多内建的功能,比如数组、函数等。
语法
awk [选项] '脚本命令' 文件名
常用命令选项
- -F fs:指定以fs作为输入行的分隔符,awk命令默认分隔符为空格或制表符
- -v var=value:在执行处理过程之前,设置一个变量var,并给其设置初始值
- -f scriptfile:从脚本文件中读取awk命令,以取代直接在命令行中输入指令
awk的强大之处在于脚本命令,它由两部分组成,分别为匹配规则和执行命令,如下所示:
'匹配规则{执行命令}'
这里的匹配规则,用来指定脚本命令中可以作用到文本内容中的具体行,可以使用字符串(比如/demo/,表示查看含有demo字符串的行)或正则表达式指定。
注:整个脚本命令是用单引号括起来,而其中的执行命令部分需要用大括号括起来
变量 | 描述 |
---|---|
FS | 输入字符分隔符,默认为空白字符 |
OFS | 输出字段分隔符,默认为空白字符 |
RS | 输入记录分隔符,指定输入时的换行符,原换行符仍有效 |
ORS | 输出记录分隔符,输出时用指定符号代替换行符 |
NF | 字符数量,共有多少个字段, N F 引用最后一列, NF引用最后一列, NF引用最后一列,(NF-1)引用倒数第二列 |
NR | 行号,后可跟多个文件,第二个文件行号则继续从第一个文件最后行号开始 |
FNR | 各文件分别计数,行号;后跟一个文件和NR一样,跟多个文件,第二个文件行号从1开始 |
FILENAME | 当前文件名 |
ARGC | 命令行参数的个数 |
ARGV | 数组,保存的是命令行所给定的各参数,查看参数 |
示例:
[root@aliyun shell]# cat awkdemo
hello:world
linux:redhat:lalala:hahaha
along:love:you
[root@aliyun shell]# awk -v FS=":" '{print $1,$2}' awkdemo #FS指定输入分隔符
hello world
linux redhat
along love
[root@aliyun shell]# awk -v FS=":" -v OFS="---" '{print $1,$2}' awkdemo #OFS指定输出分隔符
hello---world
linux---redhat
along---love
[root@aliyun shell]# awk -v RS=":" '{print $1,$2}' awkdemo
hello
world linux
redhat
lalala
hahaha along
love
you
[root@aliyun shell]# awk -v FS=":" -v ORS="---" '{print $1,$2}' awkdemo
hello world---linux redhat---along love---
[root@aliyun shell]# awk -F: '{print NF}' awkdemo
2
4
3
[root@aliyun shell]# awk -F: '{print $(NF-1)}' awkdemo
hello
lalala
love
[root@aliyun shell]# awk END'{print NR}' awkdemo
3
自定义变量
1、先定义变量,后执行动作
[root@aliyun shell]# cat awkdemo
hello:world
linux:redhat:lalala:hahaha
along:love:you
[root@aliyun shell]# awk -v name="along" -F: '{print name":"$0}' awkdemo
along:hello:world
along:linux:redhat:lalala:hahaha
along:along:love:you
2、先执行动作,后定义变量
[root@aliyun shell]# awk -F: '{print name":"$0;name="along"}' awkdemo
:hello:world
along:linux:redhat:lalala:hahaha
along:along:love:you
3、调用脚本进行定义
[root@aliyun shell]# cat awk.txt
{name="along";print name,$1}
[root@aliyun shell]# awk -F: -f awk.txt awkdemo
along hello
along linux
along along
[root@aliyun shell]#
2-36-正则表达式
分类:
POSIX规范将正则表达式分为了两种
- 基本正则表达式(BRE,basic regular expression)
- 高级功能:扩展正则表达式(ERE,extended regular expression)
RE和ERE的区别仅仅是元字符的不同
- BRE只承认的元字符有 ^ $ . [] * 其他字符识别为普通字符;
- ERE则添加了 () {} ? + | 等
- 只用在用反斜杠“\”进行转义的情况下,字符串(){}才会在BRE被当做元字符处理,而在BRE中,任何元字符前面加上反斜杠反而会使其被当做普通字符来处理。
基本正则表达式
字符 | 描述 |
---|---|
^ | ^word:搜索以word开头的内容 |
$ | word$:搜索以word结尾的内容 |
^$ | 表示空行,不是空格 |
. | 代表且只能代表任意一个字符(不匹配空行) |
\ | 转义字符,让有特殊含义的字符脱掉马甲,现出原形,如 \. 只表示小数点 |
* | 匹配前面的字符任意次,包括0次,贪婪模式:尽可能长的匹配 |
.* | 任意长度的任意字符,不包括0次 |
^.* | 以任意多个字符串开头,.*尽可能多,有多少算多少,贪婪性 |
[^abc] | 匹配不包含^后的任意字符a或b或c,是对[abc]的取反 |
a\ | 重复前面a字符至少n次,至多m次(如使用egrep或sed -r可去掉斜线) |
[abc] | 匹配包含字符a或b或c |
扩展正则表达式
特殊字符 | 描述 |
---|---|
+ | 重复前一个字符一次或多次 |
? | 重复前一个字符0次或1次(.是有且只有一个) |
| | 表示或,查找多个字符串 |
() | 分组过滤,被括起来的东西表示一个整体(一个字符) |
基础正则表达式和扩展正则表达式的区别:
所谓基础正则,实际上就是得需要转义字符配合表达的正则,而扩展正则就是让命令扩展它的权限让其直接就认识正则表达符号
补充说明
预定义
正则表达式 | 描述 | 示例 |
---|---|---|
[:alnum:] | [a-zA-Z0-9]匹配任意一个字母或数字字符 | [[:alnum:]]+ |
[:alpha:] | 匹配任意一个字母字符(包括大小写字母) | [[:alpha:]] |
[:blank:] | 空格与制表符(横向纵向) | [[:blank:]]* |
[:digit:] | 匹配任意一个数字字符 | [[:digit:]]? |
[:lower:] | 匹配小写字母 | [[:lower:]] |
[:upper:] | 匹配大写字母 | ([[:upper:]]+)? |
[:punct:] | 匹配标点符号 | [[:punct:]] |
[:space:] | 匹配一个包括换行符,回车等在内的所有空白符 | [[:space:]]+ |
[:graph:] | 匹配任何一个可以看得见的且可以打印的字符 | [[:graph:]] |
[:xdigit:] | 任何一个十六进制数 | [[:xdigit:]]+ |
[:cntrl:] | 任何一个控制字符(ASCII字符集中的前32个字符) | [[:cntrl:]] |
[:print:] | 任何一个可以打印的字符 | [[:print:]] |
元字符
元字符是一种Perl风格的正则表达式,只有一部分文本处理工具支持它,并不是所有的文本处理工具都支持。
正则表达式 | 描述 | 示例 |
---|---|---|
\b | 单词边界 | \bcool\b匹配cool,不匹配coolant |
\B | 非单词边界 | cool\B匹配coolant不匹配cool |
\d | 单个数字字符 | b\db匹配b2b,不匹配bcb |
\D | 单个非数字字符 | b\Db匹配bcb不匹配b2b |
\w | 单个单词字符(字母,数字与_) | \w匹配1或a,不匹配& |
\W | 单个非单词字符 | \W匹配&,不匹配1或a |
\n | 换行符 | \n匹配一个新行 |
\s | 单个空白字符 | x\sx匹配xx,不匹配xx |
\S | 单个非空白字符 | x\S\x匹配xkx,不匹配xx |
\r | 回车 | \r匹配回车 |
\t | 横向制表符 | \t匹配一个横向制表符 |
\v | 垂直制表符 | \v匹配一个垂直制表符 |
\f | 换页符 | \f匹配一个换页符 |
2-37-sosreport诊断数据打包命令
sosreport命令从正在运行的系统生成配置和诊断信息存档,存档文件可以存储在本地或集中,命令来源于sos 包
语法格式
sosreport [命令参数]
一般生成的打包文件保存在/var/tmp目录下
常用参数:
参数 | 介绍 |
---|---|
-l | 列出所有可用的插件及选项 |
-n | 禁用指定的插件 |
-e | 启用指定的插件 |
-a | 对于所有的插件都启用,将所有布尔值都设置为Ture |
-v | 增加日志报告的详细程度 |
–no-report | 禁用HTML报告写入 |
–config-file CONFIG | 指定备用配置文件 |
示例:
列出所有可用的插件及其选项:
[root@linuxcool ~]# sosreport -l
使用-e参数,启用指定apache.log插件:
[root@linuxcool ~]# sosreport -e apache.log
使用-n参数,禁用指定yum.yumlist插件:
[root@linuxcool ~]# sosreport -n yum.yumlist
使用-a参数,启用所有列出来的插件:
[root@linuxcool ~]# sosreport -a
使用批处理模式(不在屏幕输出信息)
]# sosreport --batch
2-38-xsos
xsos是一个帮助用户轻松读取 Linux 系统上的 sosreport
的工具。另一方面,我们可以说它是 sosreport
考官。
它可以立即从 sosreport
或正在运行的系统中汇总系统信息。
xsos
将尝试简化、解析、计算并格式化来自数十个文件(和命令)的数据,以便为你提供有关系统的详细概述。
你可以通过运行以下命令立即汇总系统信息。
# curl -Lo ./xsos bit.ly/xsos-direct; chmod +x ./xsos; ./xsos -ya
两种方法轻松安装 xsos
如果你正在寻找最新的前沿版本。使用以下步骤:
# curl -Lo /usr/local/bin/xsos bit.ly/xsos-direct# chmod +x /usr/local/bin/xsos
下面是安装 xsos
的推荐方法。它将从 rpm 文件安装 xsos
。
# yum install http://people.redhat.com/rsawhill/rpms/latest-rsawaroha-release.rpm
# yum install xsos
如何在 Linux 上使用 xsos
一旦通过上述方法之一安装了 xsos。只需运行 xsos
命令,不带任何选项,它们会显示有关系统的基本信息。
我们需要份 SOSReport 以使用 xsos
命令进一步阅读。
是的,我已经生成了一个 SOSReport,文件如下。
# ls -lh /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa.tar.xz
9.8M -rw-------. 1 root root 9.8M May 12 10:13 /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa.tar.xz
运行如下命令解开它。
# tar xf sosreport-CentOS7-01-1005-2019-05-12-pomeqsa.tar.xz
要查看全部信息,带上 -a
或 --all
开关运行 xsos
:
# xsos --all /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
要查看 BIOS 信息,带上 -b
或 --bios
开关运行 xsos
。
# xsos --bios /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
DMIDECODE
BIOS:
Vend: innotek GmbH
Vers: VirtualBox
Date: 12/01/2006
BIOS Rev:
FW Rev:
System:
Mfr: innotek GmbH
Prod: VirtualBox
Vers: 1.2
Ser: 0
UUID: 002f47b8-2af2-48f5-be1d-67b67e03514c
CPU: 0 of 0 CPU sockets populated, 0 cores/0 threads per CPU 0 total cores, 0 total threads
Mfr:
Fam:
Freq:
Vers:
Memory:
Total: 0 MiB (0 GiB)
DIMMs: 0 of 0 populated
MaxCapacity: 0 MiB (0 GiB / 0.00 TiB)
要查看系统基本信息,如主机名、发行版、SELinux、内核信息、正常运行时间等,请使用 -o
或 --os
开关运行 xsos
。
# xsos --os /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
OS
Hostname: CentOS7.2daygeek.com
Distro: [redhat-release] CentOS Linux release 7.6.1810 (Core)
[centos-release] CentOS Linux release 7.6.1810 (Core)
[os-release] CentOS Linux 7 (Core) 7 (Core)
RHN: (missing)
RHSM: (missing)
YUM: 2 enabled plugins: fastestmirror, langpacks
SELinux: enforcing (default enforcing)
Arch: mach=x86_64 cpu=x86_64 platform=x86_64
Kernel:
Booted kernel: 3.10.0-957.el7.x86_64
GRUB default: 3.10.0-957.el7.x86_64
Build version:
Linux version 3.10.0-957.el7.x86_64 ([email protected]) (gcc version 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC) ) #1 SMP Thu Nov 8 23:39:32 UTC 2018
Booted kernel cmdline:
root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
LANG=en_US.UTF-8
GRUB default kernel cmdline:
root=/dev/mapper/centos-root ro crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet
LANG=en_US.UTF-8
Taint-check: 536870912 (see https://access.redhat.com/solutions/40594) 29 TECH_PREVIEW: Technology Preview code is loaded
- - - - - - - - - - - - - - - - - - -
Sys time: Sun May 12 10:12:22 CDT 2019
Boot time: Sun May 12 09:50:20 CDT 2019 (epoch: 1557672620)
Time Zone: America/Chicago Uptime: 22 min, 1 user
LoadAvg: [1 CPU] 1.19 (119%), 0.27 (27%), 0.14 (14%)
/proc/stat:
procs_running: 8 procs_blocked: 2 processes [Since boot]: 9005
cpu [Utilization since boot]:
us 1%, ni 0%, sys 1%, idle 99%, iowait 0%, irq 0%, sftirq 0%, steal 0%
要查看 kdump 配置,请使用 -k
或 --kdump
开关运行 xsos
。
# xsos --kdump /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
KDUMP CONFIG
kexec-tools rpm version:
kexec-tools-2.0.15-21.el7.x86_64
Service enablement:
UNIT STATE
kdump.service enabled
kdump initrd/initramfs:
13585734 Feb 19 05:51 initramfs-3.10.0-957.el7.x86_64kdump.img
Memory reservation config:
/proc/cmdline { crashkernel=auto }
GRUB default { crashkernel=auto }
Actual memory reservation per /proc/iomem:
2a000000-340fffff : Crash kernel
kdump.conf:
path /var/crash
core_collector makedumpfile -l --message-level 1 -d 31
kdump.conf "path" available space:
System MemTotal (uncompressed core size) { 1.80 GiB }
Available free space on target path's fs { 22.68 GiB } (fs=/)
Panic sysctls:
kernel.sysrq [bitmask] = "16" (see proc man page)
kernel.panic [secs] = 0 (no autoreboot on panic)
kernel.hung_task_panic = 0
kernel.panic_on_oops = 1
kernel.panic_on_io_nmi = 0
kernel.panic_on_unrecovered_nmi = 0
kernel.panic_on_stackoverflow = 0
kernel.softlockup_panic = 0
kernel.unknown_nmi_panic = 0
kernel.nmi_watchdog = 1
vm.panic_on_oom [0-2] = 0 (no panic)
要查看有关 CPU 的信息,请使用 -c
或 --cpu
开关运行 xsos
。
# xsos --cpu /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
CPU
1 logical processors
1 Intel Core i7-6700HQ CPU @ 2.60GHz (flags: aes,constant_tsc,ht,lm,nx,pae,rdrand)
要查看内存利用情况,请使用 -m
或 --mem
开关运行 xsos
。
# xsos --mem /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
MEMORY
Stats graphed as percent of MemTotal:
MemUsed ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊..................... 58.8%
Buffers .................................................. 0.6%
Cached ▊▊▊▊▊▊▊▊▊▊▊▊▊▊▊................................... 29.9% HugePages .................................................. 0.0%
Dirty .................................................. 0.7%
RAM:
1.8 GiB total ram
1.1 GiB (59%) used
0.5 GiB (28%) used excluding Buffers/Cached
0.01 GiB (1%) dirty
HugePages:
No ram pre-allocated to HugePages
LowMem/Slab/PageTables/Shmem:
0.09 GiB (5%) of total ram used for Slab
0.02 GiB (1%) of total ram used for PageTables
0.01 GiB (1%) of total ram used for Shmem
Swap:
0 GiB (0%) used of 2 GiB total
要查看添加的磁盘信息,请使用 -d
和 -disks
开关运行 xsos
。
# xsos --disks /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
STORAGE
Whole Disks from /proc/partitions:
2 disks, totaling 40 GiB (0.04 TiB)
- - - - - - - - - - - - - - - - - - - - -
Disk Size in GiB
---- -----------
sda 30
sdb 10
要查看网络接口配置,请使用 -e
或 --ethtool
开关运行 xsos
。
# xsos --ethtool /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
ETHTOOL
Interface Status:
enp0s10 0000:00:0a.0 link=up 1000Mb/s full (autoneg=Y) rx ring 256/4096 drv e1000 v7.3.21-k8-NAPI / fw UNKNOWN
enp0s9 0000:00:09.0 link=up 1000Mb/s full (autoneg=Y) rx ring 256/4096 drv e1000 v7.3.21-k8-NAPI / fw UNKNOWN
virbr0 N/A link=DOWN rx ring UNKNOWN drv bridge v2.3 / fw N/A
virbr0-nic tap link=DOWN rx ring UNKNOWN drv tun v1.6 / fw UNKNOWN
要查看有关 IP 地址的信息,请使用 -i
或 --ip
开关运行 xsos
。
# xsos --ip /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
IP4
Interface Master IF MAC Address MTU State IPv4 Address
========= ========= ================= ====== ===== ==================
lo - - 65536 up 127.0.0.1/8
enp0s9 - 08:00:27:0b:bc:e9 1500 up 192.168.1.8/24
enp0s10 - 08:00:27:b2:08:91 1500 up 192.168.1.9/24
virbr0 - 52:54:00:ae:01:94 1500 up 192.168.122.1/24
virbr0-nic virbr0 52:54:00:ae:01:94 1500 DOWN -
要通过 ps
查看正在运行的进程,请使用 -p
或 --ps
开关运行 xsos
。
# xsos --ps /var/tmp/sosreport-CentOS7-01-1005-2019-05-12-pomeqsa
总结
不足之处还请指正,如有侵权私信本人修改,希望大家可以一起学习,共同进步~