linux系统管理
一、磁盘设备与文件系统管理
(一)文件系统管理基础
文件系统管理的核心基础是磁盘和磁盘分区管理。在 Linux 世界里,磁盘和磁盘分区都以设备文件的形式存在。这些设备文件的命名规则因设备类型而异,其实质是将设备抽象成可编程接口,方便用户通过各类系统工具进行操作。
(二)磁盘和磁盘分区操作
- 分区命令
- fdisk:这是一款经典的命令行磁盘分区工具,主要适用于 MBR 分区表。比如,当我们要对
/dev/sda
磁盘进行分区时,在终端输入sudo fdisk /dev/sda
即可开启操作。此外,fdisk -l
能用来查看文件系统分区的具体情况。另外,lsblk
命令可列出块设备信息,blkid
则用于查看块设备的文件系统类型、LABEL 以及 UUID 等信息 - parted:功能更为强大,支持 GPT 分区表,能够对分区进行更复杂的操作。若要对
/dev/sdb
磁盘进行分区,使用sudo parted /dev/sdb
命令就可以开始相关操作。
- fdisk:这是一款经典的命令行磁盘分区工具,主要适用于 MBR 分区表。比如,当我们要对
- 格式化命令
mkfs
命令主要用于在分区上创建文件系统。例如,要将/dev/sda1
分区格式化为 ext4 文件系统,可执行sudo mkfs -t ext4 /dev/sda1
,其中-t
选项用于明确指定要创建的 Linux 文件系统类型。 - 挂载命令
mount
命令的格式为mount [选项] 设备文件(磁盘分区) 挂载点(目标目录)
,作用是把文件系统挂载到指定的挂载点。比如,要将/dev/sda1
分区挂载到/mnt/data
目录下,使用sudo mount /dev/sda1 /mnt/data
。值得注意的是,直接使用mount
命令可以查看已挂载的文件系统。而卸载操作则通过umount
命令来完成,格式为umount 设备文件名/用于挂载文件系统的目录名
。 - 磁盘空间使用情况查看命令
- df:
df [选项] [目录/文件]
,无参数时会显示所有已挂载的文件系统的磁盘空间使用情况(默认以 1k 块为单位);当有参数时,会显示包含该文件或目录的文件系统信息。使用-h
选项,能以更易读的形式展示磁盘空间使用情况(使用合适的单位来展示)。 - du:
du [选项] [目录/文件]
,默认以磁盘块为单位输出,无参数时会递归显示当前目录下的目录占用总和。
- df:
合理的分区策略能够有效隔离系统文件和用户数据,避免单点故障的扩散。格式化操作通过初始化元数据结构,为文件的高效读写提供保障。
磁盘设备文件的命名遵循<接口类型><磁盘编号><分区编号>
的规则,例如/dev/xxxxyn
,其中xxxx
代表接口类型,y
是磁盘编号(从a
开始),n
是分区编号(从1
开始) ,像sda1
就表示 SCSI 磁盘的 1 号磁盘的 1 分区。
二、归档和压缩文件
把多个文件打包成一个文件,这个文件就被称为打包文件或归档文件,常用于文件备份、传输以及存储等场景。
(一)打包操作
使用tar -cvf 打包后的文件名 文件/目录
,其中c
表示创建归档文件,v
用于显示打包文件信息,f
指定生成的存档文件名。
(二)列出打包内容
tar -tvf 打包的文件名
,这里t
列出文件内容,v
显示文件的详细信息,f
指定存档的文件名。
(三)解包文件
tar -xvf xxxx.tar
,x
用于还原打包文件。还可以只解包打包文件中的特定文件,如tar -xvf xxx.tar innerfile1
。
(四)压缩与解压缩
若需要进行压缩,可使用选项z
、j
、Z
。打包命令为tar -cvzf 指定的名字 文件/目录
,解包命令为tar -xvzf 名字
,并且这里可以配合通配符使用,比如tar -cvf xxx.tar *
,可以将当前目录下所有文件打包。
另外,gzip
用于压缩单个文件,语法为gzip 文件名
;
gunzip
用于解压缩文件,语法为gunzip 文件名
,
这两个命令一般和tar
联合使用来实现压缩打包与解包解压缩。
三、任务管理
(一)一次性任务
使用at [时间]
,输入任务命令后按Ctrl + D
,即可将任务添加到作业队列,由atd
守护进程在后台执行,它会检查任务队列并在指定时间运行任务。
时间参数若不写日期,默认是今天。
at
命令常用选项有:
l
列出所有at
命令提交的作业;
m
表示作业完成时,向用户发送一个确认消息;
r
从at
调度算法作业中删除指定的作业号。
实例:
(二)周期性任务
crontab
用于设置周期性任务,语法格式为crontab [-u 用户名] 文件
或crontab [-u 用户名] {-l | -r | -e}
。
其中,l
列出用户定时任务的详细内容;
u
设定某个用户的定时任务;
r
删除用户的所有定时任务;
e
编辑用户的定时任务。
crontab -e
的编辑语法为f1 f2 f3 f4 f5 命令
,一行执行一个命令,fx
之间用空格或制表符分割.
*
是通配符,表示 “每” 的意思 ,比如f1
上是*
,则表示每分钟都会执行。
四、用户管理
(一)用户类型
- 根用户账户:即
root
,拥有对系统不受限制的完全控制权。 - 系统账户:主要用于对系统特定组件进行操作。
- 普通用户账户:供用户日常使用系统,提供对系统的交互式访问,但对关键的系统文件和目录访问权限有限。
(二)用户组账户
组是具有相同特性的用户集合,是一种对用户进行资源分配的方式。按照性质划分,可分为系统组和私有组账户。组账号不能用于登录计算机,其存在意义在于方便权限的统一管理和分配。
(三)用户管理配置文件
- /etc/passwd:保存用户账户信息,只有
root
账户具有可读可写权限,其他用户仅可读。一行信息格式为 “用户名:x: 用户 ID: 主组 ID: 用户详细信息:家目录地址:启动时启动的 shell 地址” ,这里的x
表示设置了密码,真实的密码保存在/etc/shadow
。 - /etc/shadow:专门保存用户密码信息。
- /etc/group:用于保存组账户信息。
(四)用户管理命令
useradd:useradd [选项] 用户名
, 常用选项包括u
指定用户名;c
指定账户详细信息;g
指定用户的主组;d
指定账户的家目录;s
指定用户的默认 shell 。默认情况下,useradd
创建的用户没有设置密码,无法直接登录,可使用passwd 用户名
来设置密码。还可以通过id 用户名
来查看用户的基本信息(包括uid
用户 id、gid
主组 id、groups
所有组 id,涵盖附加组和主组) 。
usermod:usermod [选项] 用户名 ,l修改账户名;u修改uid;c修改账户详细信息;g修改用户的主组;d修改用户的家目录;s修改用户启动时的默认 shell ;m必须和d连用,单独使用-d选项只是在/etc/passwd配置文件中把源目录名改成指定的新目录名,不会移动源目录下的内容;-m与-d一起使用时,会将原有的家目录移动到指定目录并根据需要改名,同时把源目录下的内容也移动到新目录 ,并确保目标目录拥有与源目录相同的权限和所有权。例如,修改linuxer的家目录为/home/linuxer 同时修改用户名为unixer 。
userdel:userdel [选项] 用户名 ,删除用户账号后会默认保留家目录,若要删除对应的家目录,可使用-r选项。
(五)组用户管理
- groupadd:用于添加用户组,若不使用
-g
选项指定组 id,系统会自动分配。 - groupmod:使用
-n
修改组名 ,使用-g
修改组 id 。 - groupdel:用于删除空组,若要删除非空组,可使用
-f
选项。
(六)身份切换
su
命令用于切换到另外一个用户,格式为su [-] 用户名
。
使用-
时 ,会切换工作环境(包括用户的 shell、环境变量、当前目录打开的文件和窗口等);若不使用-
,则会继承当前的环境。平级切换和升级切换需要输入密码,而降级切换不需要输入密码。