导图社区 linux系统管理总结
操作系统认知,获取帮助,文件管理,权限管理,用户和组管理,软件包管理,firewalld,selinux,磁盘管理,日志管理,进程管理,网络配置管理。
编辑于2024-05-29 15:40:39linux系统管理总结
操作系统认知
linux操作系统的来源
linux kernel
开源
发行版
redhat
fedora
社区发行版本 红帽企业版的先行版本
RHEL
CENTOS
rebuild
centos stream
使用目前由第三方维护的CENTOS镜像
rockey linux
debian
电源管理命令
重启
reboot
shutdown -r
关机
halt
poweroff
shutdown
-r
重启
-h
关机
shutdown 命令可以添加时间,向当前正在使用这个系统的所有用户,提示多长时间后关机
shutdown -h +1 "1 minute after shutdown"
shutdown -c
取消关机命令
命令行的访问
提示符
[user @ hostname dir] $/#
命令格式
命令 选项 参数
装机过程中,对硬盘的存储空间进行规划
获取帮助
命令的 -h/--help
几乎每个命令都会提供-h /--help选项 提供命令自己的语法构成和常用的选项,最常用的查找帮助的方法
MAN 手册
使用方法:
1. man keyword 输出这个关键字的相关信息 ;
2. man -k keyword 输出关键字在手册中的所有相关条目
3. man -K 在所有手册页中搜索一个字符串,速度很慢
手册章节
一般命令
系统调用
库函数,主要是libc的库
特殊文件,通常是 /dev 设备和驱动程序
文件格式和约定
游戏
杂项,协议规范等
系统管理命令和守护进程
Pinfo
与man手册类似,但是自带跳转节点,可以进行跳转,查看相关信息
文件管理
文件目录层次结构
FHS
树状结构
相对路径/绝对路径
相对路径以 ./ 代表当前目录 ../ 代表上一级目录
常用目录
/bin
存放二进制可执行文件(ls,cat,mkdir等),常用命令一般都在这里。
/usr unix software resource
用于存放系统应用程序,比较重要的目录/usr/local 本地系统管理员软件安装目录(安装系统级的应用)。这是最庞大的目录,要用到的应用程序和文件几乎都在这个目录
/boot
存放用于系统引导时使用的各种文件
/dev
用于存放设备文件。
/tmp
用于存放各种临时文件,是公用的临时文件存储点。
/var
可变文件,包括日志、
/home | /root
用于存放运行时需要改变数据的文件,也是某些大文件的溢出区,比方说各种服务的日志文件(系统启动日志等。)等。
普通用户和超级用户的家目录
/etc
存放系统管理和配置文件
文件管理命令
文件
cat 查看文件内容
-n 带上行号
head 显示前几行
tail 显示后几行
less/more 全屏显示文件内容
touch 新建文件 更新文件创建时间
cp 复制
用法
cp 源文件 目标文件
选项
-a:此选项通常在复制目录时使用,它保留链接、文件属性,并复制目录下的所有内容
-d:复制时保留链接
-f:覆盖已经存在的目标文件而不给出提示
-i:与-f选项相反,在覆盖目标文件之前给出提示,要求用户确认是否覆盖
-p:除复制文件的内容外,还把修改时间和访问权限也复制到新文件中
-r:若给出的源文件是一个目录文件,此时将复制该目录下所有的子目录和文件
mv 移动或者重命名
用法
mv [option] 源文件 目标文件
选项
-i:若指定目录已有同名文件,则先询问是否覆盖旧文件
-f:覆盖已有文件时,不给任何指示
rm 删除文件
用法:rm [options] name
选项
-i: 删除前逐一提问
-f: 即使源文件属性只读,也直接删除
-r:将目录及以下的文件全部删除
ln 创建链接文件
软链接
以路径的形式存在,类似于快捷方式
可以跨文件系统,跨磁盘分区使用
不能对一个不存在的文件名进行链接
软链接可以对目录进行链接
硬链接
以文件副本的形式存在
不允许对目录创建硬链接
只能在同一文件系统中创建硬链接文件
选项
-s
软链接
-b
覆盖以前建立的链接
-d
允许超级用户对目录创建硬链接
-v
显示详细处理过程
wc 统计信息 字数 行数 字符数
语法
wc filename
选项
-l 统计行数
-c 统计字符数
stat 查看文件完整的属性信息
语法
stat [tf] filename
选项
-f
显示文件系统信息
-t
以简洁的方式输出
file 判断文件属性
语法
file [options] filename
选项
-c
详细显示指令执行过程
-f
指定文件名称,可以有一个或者多个
-z
尝试解读压缩文件内容
目录
ls 列出文件或者目录的信息
-l 以长格式打开目录中的文件 包含文件中的一些常用属性 通常可以 以 简略的 ll 来代表 ls -l
-a/A 列出所有的文件,包括以点开头的文件 , -A 可以过滤 . .. 这个两个文件
-i 显示 inode节点信息
-Z 显示selinux 安全上下文
-d 只显示目录的内容
cd 切换目录
~ 切换到 家目录
- 切换到之前的工作目录
mkdir 创建目录
-p 创建多级目录
mkdir dir1 dir2 创建多个目录
rmdir 删除目录
不能删除非空目录
pwd 查看当前目录绝对路径
du 统计目录或文件磁盘使用量
-a
统计时,包括所有的文件,不仅仅是目录
-h
以MB GB 等单位显示 使用量
-s
统计一个目录中所有的文件总共占的空间大小
文件内容
vi/vim 编辑器
工作模式
命令模式
启动vim 进入命令模式 ,esc键从其他的模式退回到命令模式
快捷方式
房间键控制光标移动
pagedown/pageup 控制翻页
G 移动到文档末行
gg 移动文档的第一行
/ 从光标一下查找规定的字符串
? 从光标向上查找规定的字符串
:n1 n2 s/str1/str3/g 从n1行到n2行之间所有的str1 替换成str2
dd n 从光标往下n行的内容剪切
yy 复制整行
p 黏贴
u 撤销
末行模式
: 进入末行模式
命令
w 保存文件
q 退出文件
! 代表强制执行
e! 代表放弃所有的修改,并重新打开文档
输入模式
在命令模式键入 a s o i ,均可进入
使用小窍门
可视化模式,进行批量删除或者添加相同字符串的操作
Ctrl+v 配合上下方向键,选择需要调整的行数
删除
将需要删除的内容使用左右方向键选中,然后按delete
添加
按大写的A或O,进入编辑模式,修改完之后,esc退出,所有需要修改的行均发生改变
重定向
标准输入
标准输出
标准错误输出
重定向符
gedit 文件编辑器
与常用的记事本功能类似
文件查找
which
依序从PATH环境变量所列的目录中找出命令的位置,并显示完整路径的名称
whereis
功能 查找命令的二进制文件、源文件、 man手册的条目
locate
根据文件名查找文件路径
从updatedb命令建立的数据库中查找文件路径,可能因为数据库没有及时更新,而导致查找到已删除的文件和查找不到新创建的文件
find
根据设定的条件查找文件路径
语法: find 查看范围 查找条件 [ 对查找结果所做的操作 ]
-atime n :将n*24小时内存取过的的文件列出来
-newer file :把比file还要新的文件列出来
-gid n :寻找群组ID为n的文件/-group name :寻找群组名称为name的文件
-uid n :寻找拥有者ID为n的文件/-user name :寻找用户者名称为name的文件
-name file :寻找文件名为file的文件(可以使用通配符)
-empty : 空的文件-gid n or -group name : gid 是 n 或是 group 名称是 name
-size n : 文件大小 是 n 单位,b 代表 512 位元组的区块,c 表示字元数,k 表示 kilo bytes,w 是二个位元组
-type c : 文件类型是 c 的文件。 d: 目录 c: 字型装置文件 b: 区块装置文件 f: 一般文件 l: 符号连结 s: socket
-perm -perm mode 根据文件权限搜索
--delete·删除搜索到的文件和目录
--exec 选项可以对搜索到的结果执行特定的命令
{} 作为检索到的文件的 占位符 ,而分号 ; 作为命令结束的标志。因为分号是 Shell 中有特殊含义的符号,要使用\转义 \;
文件权限管理
文件权限
权限
r
文件
可读,可以使用类似cat等命令查看文件内容;读是文件的最基本权限,没有读权限,普通文件的一切操作行为都被限制。
目录
可以对目录执行ls以列出目录内的所有文件;读是文件的最基本权限,没有读权限,目录的一切操作行为都被限制。
w
文件
可写,可以编辑此文件
目录
可以在此目录创建或删除文件/子目录;
x
文件
可执行,表示文件可由特定的解释器解释并运行。
目录
可进入此目录,可使用ls -l查看文件的详细信息。
SBIT
当t标记在目录权限的x上时为SBIT。 SBIT(Sticky Bit)只对目录有效,对文件没有效果。
SBIT对目录的作用是
当用户在该目录下创建文件或目录时,仅有自己与root才有权利删除该文件
当用户对于此目录具有w、x权限时
设定方法
chmod o+t
chmod 1xxx
SUID
只有可以执行的二进制程序才能设定 SUID 权限
命令执行者要对该程序拥有 x(执行)权限
命令执行者在执行该程序时获得该程序文件属主的身份
SetUID 权限只在该程序执行过程中有效,也就是说身份改变只在程序执行过程中有效
设定方法
chmod u+s
chmod 4xxx
SGID
和SUID不同的是,SGID对于文件和目录都有效。
对文件来说,SGID有如下功能: 程序执行者对于该程序来说,需具备x的权限; 执行者在执行过程中将会获得该程序用户组的支持;
对目录来说,SGID有如下功能: 用户若对于此目录具有r和x的权限,则能够进入此目录; 用户在此目录下的有效用户组(effective group)将会变成该目录的用户组; 若用户在此目录下具有w的权限,则用户创建的新文件的用户组和此目录的用户组相同;
设定方法
chmod g+s
chmod 2xxx
文件权限对象
user/属主/u
group/属组/g
other/其他用户/o
all/所有用户/a
权限表示方式
数字
r=4
w=2
x=1
字母
权限修改命令
chmod
修改文件权限
chmod nnnn(数字表示具体的权限) filename
chmod 1777 /tmp
chmod [u/g/o/a] [=+-][rwxst] filename
chown
修改属主属组
chown owner.group filename
chown owner:group filename
chgrp
修改文件属组
chgrp group filename
ACL(访问控制列表)
设置ACL
setfacl
使用方法:setfacl [-bkRd] [-m|-x acl 参数] 目标文件名 选项与参数: -m:设置后续的acl参数,不可与-x一起使用 -x: 删除后续的acl参数,不可与-m一起使用 -b:删除所有的acl参数 -k:删除默认的acl参数 -R:递归设置acl参数
-d 设置默认的acl条目
设置权限
u/g:usrename/groupname:rwx(设定对应权限)
查看acl
getfacl filename
用户和组管理
用户
用户文件
/etc/passwd
用来保存用户的账号基本信息 每一行对应一个用户的账号记录 字段1:用户账号的名称 字段2:密码占位符”x“ 字段3:用户账号的UID号 字段4:所属基本组账号GID号 字段5:用户全名 字段6:宿主目录 字段7:登陆shell信息
/etc/shadow
/etc/shadow 用来保存密码字串,密码有效期等信息 每行对应一个用户的密码记录 字段1:用户账号的名称 字段2:加密的密码字串信息(加密 密文) 第一部分:算法对应的数字 加密算法: 1 MD5 2a Blowfish 5 SHA-256 6 SHA-512 通过openssl可以生成密文密码 openssl passwd 第二部分:盐值,salt,随机生成,提高密码安全性 字段3:上次修改密码时间 字段4:密码的最短有效天数,默认值为0 字段5:密码的最长有效天数,默认值为99999 字段6:提前多少天警告用户口令将过期,默认值为7 字段7:在密码过期之后多少天禁用此用户 字段8:账号失效时间,默认值为空 字段9:保留字段(未使用)
管理命令
useradd创建新用户
-d 目录 指定用户主目录,(默认是在/home目录下创建和用户名一样的目录)
-g 用户组 指定用户所属的用户组(主组)
-G 用户组 指定用户所属的附加组(这些组必需事先已经增加过了或者是系统中已经存在)
-s Shell 指定用户的登录Shell
-u UID 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号
-c 描述 指定一段注释性描述
-m 使用者目录若不存在则自动建立
passwd 设定用户密码
-l :是Lock的意思,会将 /etc/shadow 第二栏最前面加上”!”使密码失效
-u :与-l相对,是Unlock的意思
-S :列出密码相关参数,即shadow文件的大部分信息
-i :后面接日期,shadow 的第7字段,密码失效日期
-w :后面接天数,shadow的第6字段,密码过期前的警告天数
-x :后面接天数,shadow的第5字段,多长时间内必须要修改密码
-n :后面接天数,shadow的第4字段,不可修改密码天数
usermod
设定用户信息
大部分和useradd 的选项意义一致
-L :暂时将用户的密码冻结,让他无法登入
-U:将/etc/shadow 密码栏的“!”去掉
userdel
删除用户
-r :删除用户的家目录和用户的邮件池
组
组文件
/etc/group
etc/group 保存组账号信息 主要组(私有组):由用户相关的默认组, 次要组(附属组):用户可以同时属于其他的组 每一行表示一个组的信息 字段1:组名 字段2:密码占位符 字段3:GID 字段4:组成员列表
/etc/gshadow
保存组账号的密码信息
很少设置/使用组账号密码
管理命令
groupadd
-g gid :设置用户组,并指定相应的GID
添加组账号
gpasswd
-a : 增加用户到用户组中
-d :从用户组中删除用户
-r :删除用户组的密码
-M :设置用户组成员(多成员)
-A :设置用户组管理员(列表)
组账号设置密码
root / 授权组管理员
groupmod
-g :修改既有的 GID 数字
-n :修改既有的组名
调整组的信息
groupdel 删除组
软件包管理
rpm
rpm命令是RPM软件包的管理工具。rpm原本是Red Hat Linux发行版专门用来管理Linux各项套件的程序,由于它遵循GPL规则且功能强大方便,因而广受欢迎
选项
-a:查询所有软件
-c:只列出配置文件,本参数需配合"-l"参数使用
-d:只列出文本文件,本参数需配合"-l"参数使用
-e或--erase:删除指定的软件
-f<文件>+:查询拥有指定文件的软件
-l:显示软件的文件列表
-i: 安装软件
-U: 升级软件包
-q: 查询软件信息
-p: 查询指定rpm包的信息
-v:显示指令执行过程
-h或--hash:软件安装时的进度
yum
Yum(全称为 Yellow dogUpdater, Modified)是一个Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令。
子命令
install
安装软件
remove
卸载
list
列出信息。无参数的情况下,列出所有的软件包名
info
查找rpm包的信息
update
更新软件包
repolist
列出所有的镜像源
deplist
查看依赖情况
provides
查询指定的命令由那个软件包释放
clean
packages
清除缓存的软件包
headers
清除header
oldheaders
清除旧的header
all
所有软件包和header
makecache
建立缓存
包组管理
group list
列出所有的包组
group install
安装指定的包组
group remove
删除指定的包组
镜像配置文件
目录
/etc/yum.repos.d/
配置文件使用repo作为后缀
语法
[repoID]这个表示的是yum的ID,必须唯一,本地有多个yum源的时候,这里必须是唯一的
name=具体的yum源名字,其实相当于对它的描述描述信息
baseurl是镜像服务器地址,只能写具体的确定地址。下面的例子中,只能有一个baseurl,但里面可以包含多个url
gpgcheck=0 是否进行rpm公钥验证 0代表不验证 代表 验证
gpgkey 公钥地址
enabled 是否启用
firewalld
区域
trusted
允许所有的数据包进出
home
拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、mdns、ipp-client、amba-client与dhcpv6-client服务相关,则允许进入
internal
同上(home)
work
拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、ipp-client与dhcpv6-client服务相关,则允许进入
public
拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh、dhcpv6-client服务相关,则允许进入
external
拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh服务相关,则允许进入
dmz
拒绝进入的流量,除非与出去的流量相关;而如果流量与ssh服务相关,则允许进入
block
拒绝进入的流量,除非与出去的流量相关
dorp
丢弃进入的流量,除非与出去的流量相关
管理命令
firewalld-cmd
常用的子选项
查询
--get-default-zone 查访默认的区域名称
--get-zones 显示可用的区域
--get-services 显示预定义的服务
--get-active-zones 显示当前正在使用的区域、来源地址和网卡名称
--list-all 显示当前区域的防火墙配置参数 --zone 可以显示指定区域的防火墙配置
--list-all-zones 显示所有区域的网卡配置参数、资源、端口以及服务等信息
添加
--add-source= 将源自此IP或子网的流量导向指定的区域
--add-interface=<网卡名称> 将源自该网卡的所有流量都导向某个指定区域
--add-service=<服务名> 设置默认区域允许该服务的流量
--add-port=<端口号/协议> 设置默认区域允许该端口的流量
--change-interface=<网卡名称> 将某个网卡与区域进行关联
--add-rich-rules
rule
familiy=ipv4/ipv6
source address=
destination address
service name=
port port=number protocol=tcp/udp
protocol value=protocol
forward-port port=number protocol=protocol to-port=number protocol=protocol
masquerade
[accept|reject|drop]
service name 与 port protocol 参数冲突 不可以同时使用
移除
--remove-source= 不再将源自此IP或子网的流量导向这个区域
--remove-service=<服务名> 设置默认区域不再允许该服务的流量
--remove-port=<端口号/协议> 设置默认区域不再允许该端口的流量
--set-default-zone=<区域名称> 设置默认的区域,使其永久生效
--reload 让永久生效的配置规则立即生效,并覆盖当前的配置规则
--permanent 设定为永久规则
防火墙规则应用优先级
富规则优先级最高
source,来源地址
Interface,接收请求的网卡
firewalld配置的默认区域(zone
如果未找到同意访问的规则,则默认拒绝请求
selinux
概念
安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。
作用
SELinux 主要作用就是最大限度地减小系统中服务进程可访问的资源(最小权限原则)
权限管理机制
DAC
在没有使用 SELinux 的操作系统中,决定一个资源是否能被访问的因素是:某个资源是否拥有对应用户的权限(读、写、执行)。
这种权限管理机制的主体是用户,也称为自主访问控制(DAC)
MAC
决定一个资源是否能被访问的因素除了上述因素之外,还需要判断每一类进程是否拥有对某一类资源的访问权限。
这种权限管理机制的主体是进程,也称为强制访问控制(MAC)
基本概念
主体
进程
对象
被主体所访问的资源:文件、目录等、
策略
targeted
minium
mls
安全上下文
安全上下文可以分为「进程安全上下文」和「文件安全上下文」。一个「进程安全上下文」一般对应多个「文件安全上下文。只有两者的安全上下文对应上了,进程才能访问文件。它们的对应关系由政策中的规则决定
构成
用户
system_u 代表系统进程
unconfined 代表用户相关
角色
进程
system_r 系统进程
unconfined_r 用户自己开启的
文件
object_r
类型
在targeted模式下,需要关注的字段
敏感级别
布尔值
selinux的策略规则
工作模式
enforcing
强制模式。违反 SELinux 规则的行为将被阻止并记录到日志中
permissive
宽容模式。违反 SELinux 规则的行为只会记录到日志中。一般为调试用
可以通过setenforce命令直接转化
disabled
关闭 SELinux
切换到这个级别需要重启
更改工作模式
临时修改
setenforce
0 = 宽容模式
1 = 严格模式
永久生效的修改
/etc/selinux/config
SELINUX=
enforcing
permissive
disabled
查看模式
getenforce
查询
进程
ps -Z
文件
ls -Z
stat filename
管理命令
安全上下文
chcon
临时修改文件安全上下文
restorecon
按照selinux设定的目录权限对selinux文件安全上下文进行重置
选项
-v打印操作过程
-R递归操作
semanage fcontext
管理selinux默认的目录文件安全上下文
语法
semanage fcontext 选项 -t <文件安全上下文中的类型字段> "<目录)>(/.*)?"
选项
-l:查询
-a:增加,你可以增加一些目录的默认安全上下文类型设置。
-m:修改
-d:删除
semanage port
管理端口的安全上下文
语法
semanage port {-l|-m|-d|-a } -t type -p protocol port number
布尔值修改
setboolean
-P:直接将设置值写入配置文件,该设置数据将来会生效的。
getboolean
semanage boolean -l
查看策略内容
selinux 日志
SELinux阻止的进程的日志记录存放在/var/log/audit/audit.log文件中,但是该文件中的内容用户阅读体验很差,可以去cat /var/log/audit/audit.log看看,因此系统为我们提供了sealert工具
selinux的日志也记录在/var/log/messages 文件中
查看详细报告
sealter -l UUID
磁盘管理和LVM
文件系统
文件系统是操作系统用于明确存储设备(常见的是磁盘,也有基于NAND Flash的固态硬盘)或分区上的文件的方法和数据结构;即在存储设备上组织文件的方法。操作系统中负责管理和存储文件信息的软件机构称为文件管理系统,简称文件系统。
格式化分区
mkfs
-t 文件系统
语法: mkfs -t filesystem 分区/设备
简化命令
mkfs.filesystem(ext2 ext3 ext4 xfs)
磁盘分区
分区表
MBR
MBR(master boot record)的英文缩写,简称主引导记录,还可以叫做主引导扇区。它是BIOS自检完成之后,引导操作系统和读取数据时的必要软件代码。它的运行机制存在于硬件的基础之上,它存储在硬盘的第一个扇区上。操作系统运行在MBR分区引导之上。没有分区引导,操作系统无法正常启动。MBR占用512个字节空间
MBR占用了其中的446个字节,另外的64个字节交给了 DPT(Disk Partition Table硬盘分区表),最后两个字节“55,AA”是分区的结束标志。这个整体构成了硬盘的主引导扇区。
限制:最多支持四个主分区、系统只能安装在主分区、扩展分区要占一个主分区、MBR最大支持2TB,但拥有最好的兼容性
分区分类
主分区
最多4个
扩展分区
逻辑分区建立在扩展分区的基础上
逻辑分区
分区号从5开始
GPT
LBA0存放启动引导程序和MBR相同,但是后面的位置仅存放GPT标志位(共512字节) LBA1记录备份用的GPT分区(后34块)。放置校验码CRC32 LBA2-33存放4X32组分区记录。每组128字节,其中的64位记录开始,结束扇区。对于每个记录,可以达到8ZB寻址(扇区单位512情况) LBA-34-1作为备份
基础概念
每个盘片的盘面被划分成多个狭窄的同心圆环,数据就存储在这样的同心圆环上面,我们将这样的圆环称为磁道 (Track)。
再把每个磁道划分为若干个弧段,每个弧段就是一个扇区 (Sector)。扇区是硬盘上存储的物理单位,
所有盘面中相对位置相同的磁道组成柱面
lsblk
查看系统分区情况
fdisk
磁盘分区工具
用法:fdisk [必要参数][选择参数]
参数
-l 列出素所有分区表
-u 与"-l"搭配使用,显示分区数目
-s<分区编号> 指定分区
-v 版本信息
操纵说明
m :显示菜单和帮助信息
l :显示分区类型
d :删除分区
p :显示分区信息
n :新建分区
t :设置分区号
w :保存修改
q :退出不保存
partprobe
通知系统分区表的变化
用法: partprobe [OPTION] [DEVICE]
参数
-d 试运行
-h 帮助信息
partx
partx告诉内核去识别某个硬盘上的分区信息。并不是加载,只是识别并记录而已,或者删除某个分区的信息
选项
-a 登记某块盘上的所有分区信息,如果分区信息有记录,则报错。
-d 删除内核中关于某磁盘的所有分区的记录。
blkid
显示关于可用块设备的信息,他可以识别一个块设备内容的类别(如文件系统,交换区)以及从内容的元数据(如卷标或UUID字段)中获取属性
挂载
分区完成的磁盘需要进行格式化并挂载才能正式使用
mount -t fielsyste .device mount_point
/etc/fstab
swap
SWAP分区的作用类似于Windows系统中“虚拟内存” ,可以在一定程度上缓解物理内存不足的情况
mkswap
创建交换文件系统
swapon
启用交换空间
swapoff
停用交换空间
LVM
什么是LVM
LVM(Logical Volume Manager)逻辑卷管理是在Linux2.4内核以上实现的磁盘管理技术。它是Linux环境下对磁盘分区进行管理的一种机制。
工作原理
通过将底层的物理硬盘抽象的封装起来,然后以逻辑卷的方式呈现给上层应用。在传统的磁盘管理机制中,上层应用是直接访问文件系统,从而对底层的物理硬盘进行读取,而在LVM中,其通过对底层的硬盘进行封装,对底层的物理硬盘进行操作时,其不再是针对于分区进行操作,而是通过一个叫做逻辑卷的东西来对其进行底层的磁盘管理操作。
优点
.可以在系统运行的状态下动态的扩展文件系统的大小。
文件系统可以跨多个磁盘,因此文件系统大小不会受物理磁盘的限制。
.可以增加新的磁盘到LVM的存储池中。
可以以镜像的方式冗余重要的数据到多个物理磁盘。
可以方便的导出整个卷组到另外一台机器。
缺点
在从卷组中移除一个磁盘的时候必须使用reducevg命令(这个命令要求root权限,并且不允许在快照卷组中使用)。
当卷组中的一个磁盘损坏时,整个卷组都会受到影响。
基础概念
PV
物理卷就是LVM的基本存储逻辑块,但和基本的物理存储介质(如分区、磁盘等)比较,却包含有与LVM相关的管理参数,创建物理卷它可以用硬盘分区,也可以用硬盘本身;
vg
一个LVM卷组由一个或多个物理卷组成
LV
LV建立在VG之上,可以在LV之上建立文件系统
PE
PV物理卷中可以分配的最小存储单元,PE的大小是可以指定的,默认为4MB
管理命令
PV
pvcreate
pvcreate 设备名
pvremove
pvscan
pvdisplay
vg
vgcreate
vgcreate vgname pvs
vgremove
vgscan
vgdiaplay
lv
lvcreate
-n lv卷名
-L 指定大小
-l 指定PE的格式
lvremove
lvdisplay
lvscan
lvextent
lvreduce
在进行容量的扩充和缩小时,记得检查文件系统完整性华为调整文件系统大小
日志管理
rsyslog
类型
auth:pam产生的日志
authpriv :ssh,ftp等登陆服务的验证信息
cron:时间任务相关
kern:内核
lpr :打印
mail:邮件
news:新闻组
user :用户程序产生的相关信息
uucp:unix to unix copy,unix主机之间相关的通讯
local 1~7 :自定义的日志设备
级别
debug:有调式信息的,日志信息最多
info:一般信息的日志,最常用
notice:最具有重要性的普通条件信息
warning:警告级别
err:错误级别,组织某个功能或者模块不能正常工作的信息
crit:严重级别,组织整个系统或者整个软件不能正常工作的信息
alert :需要立刻修改的信息
emerg :内核崩溃等严重信息
messages
所有的info级别以上的日志/除了 mail authpriv cron
secure
所有authpriv
bootlog
系统启动信息
/var/log
日志转储
logrotate
logrotate 转储规则配置文件
rotate
备份数量
compress
压缩
postscripts
ifmissing
size
weekly
emptyok
将旧的日志文备份,在一定时间后删除。
延伸实验:日志收集服务器
systemd-journald
在开机过程中的所有信息,包括启动 服务与服务若启动失败的情况等等,都可以直接被记录到 systemd-journald。
journalctl
-n :秀出最近的几行的意思~找最新的信息相当有用
-p :秀出后面所接的讯息重要性排序
-r :反向输出,从最新的输出到最旧的数据
-f :类似 tail -f 的功能,持续显示 journal 日志的内容
重定向
建立目录、修改权限
修改属组
重启服务
日志分析
logwatch
进程管理
进程:是程序运行的过程,动态,有生命周期及运行状态
进程的生命周期
进程类型
僵尸进程:一个进程使用fork创建子进程,如果子进程退出,而父进程并没有调用wait或waitpid获取子进程的状态信息,那么子进程的进程描述符仍然保存在系统中。这种进程称之为僵尸进程。
交互进程:是由一个shell启动的进程。交互进程既可以在前台运行,也可以在后台运行;
守护进程:在Linux系统启动时启动的进程,并在后台运行;
超级守护进程:系统启动时由一个统一的守护进程xinet来负责管理一些进程,当相应请求到来时需要通过xinet的转接才可以唤醒被xinet管理的进程。
进程属性
进程ID(PID):是唯一的数值,用来区分进程
进程状态:状态分为运行R(running)、休眠S(sleep)、僵尸Z(zombie)
ps
显示执行命令的时候,系统进程状态
-a:显示跟当前终端关联的所有进程
a:以BSD风格进行展示
u:基于用户的格式显示(U: 显示某用户ID所有的进程)
x:显示所有进程,不以终端机来区分
-e 和 -a 效果相同
-f 以UNIX风格展示进程相关信息
查看进程工具
top
动态显示进程状态
显示内容说明
前五行
第1行:系统时间、运行时间、登录终端数、系统负载(三个数值分别为1分钟、5分钟、15分钟内的平均值,数值越小意味着负载越低)。 第2行:进程总数、运行中的进程数、睡眠中的进程数、停止的进程数、僵死的进程数。 第3行:用户占用资源百分比、系统内核占用资源百分比、改变过优先级的进程资源百分比、空闲的资源百分比等。其中数据均为CPU数据并以百分比格式显示,例如“97.1 id”意味着有97.1%的CPU处理器资源处于空闲。 第4行:物理内存总量、内存使用量、内存空闲量、作为内核缓存的内存量。 第5行:虚拟内存总量、虚拟内存使用量、虚拟内存空闲量、已被提前加载的内存量。
5行之后的内容
第6行: 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 — 进程名称(命令名/命令行)
修改进程优先级
priority
进程cpu资源分配就是指进程的优先权(priority)。优先权高的进程有优先执行权利。
在linux系统中,进程优先级的取值范围是0-139, 这个值越小,优先级越高。 这个值分成两个部分
动态优先级:实时进程优先级[0,99],该区间被称为动态优先级,优先级随着进程执行情况的变化而改变,以便获得更好的调度性能。
静态优先级:代表非实时进程优先级[100,139],被称为静态优先级,该值不会随着时间而进行改变,但系统可以通过nice命令来进行修改。
nice
它是反应一个进程“优先级”状态的值,其取值范围是-20至19,一共40个级别。它对应于静态优先级的[100,139]这个区间,进程启动后默认的nice值为0,则其对应的优先级为120。
PRI 和 NI 的关系 :PRI (最终值) = PRI (原始值) +NI
nice
renice
top 交互方式修改
进程之间的通信
信号
信号是在软件层次上对中断机制的一种模拟。在原理上,一个进程收到一个信号与处理器收到一个中断请求可以说是一样的。
信号是异步的,一个进程不必通过任何操作来等待信号的到达,事实上进程也不知道信号到底什么时候到达。
信号来源
硬件来源。如我们按下了键盘上的按钮 或者出现其他硬件故障;
软件来源。最常用发送信号的系统函数有kill()、raise()、alarm()、setitimer()和sigqueue()等,软件来源还包括一些非法运算等操作。
信号发送
kill [options] pid
killall [option] 进程名
常用信号
SIGHUP 挂起 1
SIGKILL 杀死(尽快终止) 9
SIGTERM 终止(要求终止) 15 默认信号
SIGSTOP 临时停止执行 19
查看所有的信号
kill -l
作业管理
作业管理(job control)是在bash环境下使用的,主要使用在同一个bash中管理多个作业的场景,譬如登录bash之后想同时复制文件、数据搜索,编译。
命令
将命令后台运行的&
把当前作业放在后台并暂停:ctrl+z
观察当前后台作业状态:jobs
将后台作业提到前台处理:fg
使后台作业从暂停到运行:bg
定时作业/计划任务
at
一次性执行定时任务
at命令要想正确执行,需要atd服务的支持。atd服务是独立的服务
格式 at [ioptions] time
两种接受定时任务的方法
at -f a.sh time
at time 进入at的交互界面
时间格式
能够接受在当天的hh:mm(小时:分钟)式的时间指定。假如该时间已过去,那么就放在第二天执行。 例如:04:00
能够使用midnight(深夜),noon(中午),teatime(饮茶时间,一般是下午4点)等比较模糊的词语来指定时间。
能够采用12小时计时制,即在时间后面加上AM(上午)或PM(下午)来说明是上午还是下午。 例如:12pm
能够指定命令执行的具体日期,指定格式为month day(月 日)或mm/dd/yy(月/日/年)或dd.mm.yy(日.月.年),指定的日期必须跟在指定时间的后面。 例如:04:00 2009-03-1
能够使用相对计时法。指定格式为:now + count time-units ,now就是当前时间,time-units是时间单位,这里能够是minutes(分钟)、hours(小时)、days(天)、weeks(星期)。count是时间的数量,几天,几小时。 例如:now + 5 minutes 04pm + 3 days
能够直接使用today(今天)、tomorrow(明天)来指定完成命令的时间。
cron
周期性计划任务
cron (crond) 这个系统服务来控制的
/var/spool/cron/ # 所有用户crontab文件存放的目录,以用户名命名
系统周期任务
crontab文件的含义
用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute hour day month week command
minute: 表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
command:要执行的命令,可以是系统命令,也可以是自己编写的脚本文件。
特殊字符
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次。
相关命令
crontab -e # 创建自己的一个任务调度
crontab -l # 列出定时的任务
crontab -r con_name # 删除crontab文件
systemd及相关管理命令
开机启动过程
post(加电自检,主要用来检查支持系统启动的硬件环境是否满足)
根据bios中设定启动顺序,去加载相应的启动项设备
bootloader(根据启动项设备的mbr去加载bootloader)
kernel(加载内核至内存中)
rootfs(根切换)
systemd进程启动
新特性
基于socket的激活机制,socket与程序分离
基于bus的激活机制
基于device的激活机制
系统快照:保存各unit的当前状态信息于持久存储设备中
向后兼容sysV init脚本:存放在/etc/init.d/目录下的脚本
unit
单元分类
service 定义系统服务
target 用于模拟实现init的运行级别
device 用于定义内核识别的设备
mount 用于定义文件系统挂载点
scoket 用于标识进程间通信用到的socket文件
snapshot 用于管理系统快照
swap 用于标识swap设备
automount 文件系统自动挂载点设置
path 用于定义文件系统中的一个文件或目录
systemctl 管理命令
启动服务 systemctl start NAME[.service]
重启服务 systemctl restart NAME[.service]
停止服务 sytemctl stop NAME[.service]
显示状态 systemctl status NAME[.service]
查看某服务当前激活与否状态 systemctl is-active NAME[.service]
查看某服务能否开机自启动 systemctl is-enabled NAME[.service]
查看所有服务(含已激活和未激活的)systemctl list-units --type service --all
查看所有已激活的服务 systemctl list-units --type service
查看服务的依赖关系 systemctl list-dependencies NAME.[service]
关机 systemctl halt systemctl poweroff
重启 systemctl reboot
切换当前运行的target systemctl isolate NAME.target
获取默认运行级别: systemctl get-default
修改默认运行级别: sytemctl set-default NAME.target
计划任务
cron
systemd-tmpfiles
设定临时文件的管理方案
配合定时任务清理临时文件
网络配置和管理
IP地址管理
配置文件
/etc/sysconfig/network-scripts/ifcfg-*
参数设置
ONBOOT=yes #系统启动时是否激活此设备
IPADDR=192.168.0.1 #ip地址
BOOTPROTO=static #ip地址的分配方式(static表示静态ip地址,dhcp表示自动分配ip地址)
GATEWAY=192.168.0.2 #默认网关
NETMASK=255.255.255.0 PREFIX=24#子网掩码
DNS1=192.168.12.15 #DNS域名解析服务器
命令行工具
使用NetworkManager守护进程来监控和管理网络设置。nmcli是命令行的NetworkManager工具,会自动把配置写到/etc/sysconfig/network-scripts/目录下面
nmcli connection
子命令
show
查看所有连接
nmcli connection show
nmcli connection
查看单个连接属性
nmcli connection show ens33
显示所有活动连接显示所有活动连接
nmcli connection show --active
add
添加新连接
配置的相关参数
ifname
con-name
autoconnect
type
modify
调整属性
ipv4.addresses 192.168.0.58/24
ipv4.dns
ipv4.gateway
ipv4.method manual
delete
删除链接
nmcli connection delete eth0
reload
加载配置
nmcli connection reload
down
停用连接
up
启用设备
nmcli device status
显示所有设备状态
图形化界面
查看IP地址
ifconfig device
ip address show
ip a
主机名
hostnamectl
/etc/hostname
DNS
/etc/hosts
本地的缓存的DNS解析记录
/etc/resolv.conf
指定dns服务器地址
namd
dns服务搭建