上篇:
一、Linux 是什么
二、文件管理与vim 文本编辑器
三、用户与权限管理
四、文件系统管理与磁盘配额
中篇:
五、正则表达式与文件格式化处理
六、Shell scripts 与工作排程
七、进程管理与 SELinux
八、系统服务与日志分析
下篇
九、开机流程与模块管理
十、基础系统设定与备份策略
十一、软件安装
十二、Linux 核心编译与管理
开源的计算机操作系统。
Linux 中严格区分大小写。
终端| 快捷键 | 说明 |
|---|---|
| Tab | 自动补全,双击显示全部 |
| Ctrl + u | 清空内容至行首 |
| Ctrl + k | 清空内容至行尾 |
| Ctrl + a | 光标移动到最前 |
| Ctrl + e | 光标移动到最后 |
| Ctrl + l | 清屏 |
| Ctrl + s | 暂停屏幕输出 |
| Ctrl + q | 恢复屏幕输出 |
| Ctrl + r | 搜索历史命令 |
| Ctrl + c | 终止命令 |
| Ctrl + z | 挂起命令 |
| Ctrl + d | 退出当前shell命令行 |
Linux 中的指令分为内部指令和外部指令。
Linux 中可以很方便的获取帮助文档,方法有:
help command # 内部指令 command --help # 外部指令 man command # -f 显示相关文件,相当于whatis info command # 同man,可分页
指令的说明文档所在路径:/usr/share/doc/
二、文件管理与vim 文本编辑器 根目录及其子目录“/” 在 Linux 中表示的是根目录,类似 Windows 中的盘符。
| 目录 | 解释 / 存放的内容 |
|---|---|
| /bin | 所有用户都可以使用的指令文件 |
| /sbin | 仅限系统用户和超级用户可以调用的指令文件 |
| /boot | 系统启动引导目录 |
| /dev | 所以的外部设备 |
| /etc | 所有的系统管理所需要的配置文件和子目录 |
| /lib | 系统最基本的动态连接共享库 |
| lib64 | X86_64系统上的辅助共享库文件 |
| /proc | 当前内核运行状态的虚拟文件系统,是系统内存的映射 |
| /run | 存储系统启动以来的信息 |
| /sys | 存储有关系统上的硬件信息 |
| /usr | 存放用户大部分的应用程序和相关文件 |
| /var | 存放会不断变化的数据,如数据库 |
| /home | 用户的家目录 |
| /root | 超级用户的家目录 |
| /media | 系统自动识别并挂载的设备 |
| /mnt | 用户临时挂载别的文件系统的目录 |
| /opt | 额外软件安装目录 |
| /srv | 存放一些服务启动之后需要提取的数据 |
| /tmp | 存放一些临时文件 |
Linux下的目录中都包含两个隐藏目录:“.” 和 “…”,其中 . 目录指的是当前目录,… 目录指的是自己的父目录。从 / 开始的路径是绝对路径,没有从 / 开始的路径,就是相对路径。
Linux 中一切都可以看作是文件。Linux 系统中有三种基本的文件类型:
- 普通/常规文件:使用“-”表示
- 特殊文件:
- 块文件Block:使用“b”表示,设备文件,对访问系统硬件部件提供了缓存接口。它们提供了一种通过文件系统与设备驱动通信的方法。
- 字符文件Character:使用“c”表示,也是设备文件,对访问系统硬件组件提供了非缓冲串行接口。它们与设备的通信工作方式是一次只传输一个字符的数据。
- 符号链接文件Symbolic link:使用“l”表示,符号链接是指向系统上其他文件的引用。因此,符号链接文件是指向其它文件的文件,那些文件可以是目录或常规文件。
- 管道Pipe和命令管道Named pipe:使用“p”表示,将一个进程的输出连接到另一个进程的输入,从而允许进程间通信(IPC)的文件。命名管道实际上是一个文件,用来使两个进程彼此通信,就像一个 Linux 管道一样。
- 套接字文件socket:使用“s”表示,提供进程间通信方法的文件,它们能在运行在不同环境中的进程之间传输数据和信息。
- 目录文件:使用“d”表示
Linux 文件系统中有两种链接link:硬链接hard link和软链接soft link(也称为符号链接symbolic link)。
Linux 中每个文件都有一个包含该文件信息的 inode(index-node 索引节点),包含了该文件的位置信息。在每个文件系统中的 inode 号都是唯一的,所有的硬链接都指向了包含文件元信息的单一 inode,对于系统来说,文件始终是同一个文件。
软链接看做为源文件的一个快捷方式,此时创建的是新文件。
文件管理指令基础管理指令
ls [-adl] PATH # 列出目录下的文件 cd # 切换工作目录 pwd [-P] # 显示当前工作目录的绝对路径 mkdir [-mp] DIRECTORY # 创建新目录 rmdir DIRECTORY # 删除空目录 cp [-afiIprs] SOURCE DEST # 复制文件 mv [-fiu] SOURCE DEST # 移动或重命名文件 rm [-fir] FILE... # 删除文件 touch [-am] FILE... # ,更改文件时间戳,如果文件不存在,默认创建新文件 ln [-fibns] TARGET link_NAME # 创建硬链接
查看文件信息或内容的指令
file FILE # 判断文件的类型 stat [-Lf] FILE # 显示文件或文件系统的状态 cat [-AbnvET] FILE # 显示文件全部内容 tac FILE # 同 cat,从最后一行开始显示 nl # 显示文件全部内容并注明行号 more [-N] [+N] [-fspc] FILE # 分页显示文件内容 less FILE # 和 more 相似,可上下翻页 head [-N] FILE # 显示前 N 行,默认10行 tail [-N] FILE # 显示后 N 行,默认10行 od FILE # 以八进制显示文件内容vim 文本编辑器
Vim是从 vi 发展出来的一个文本编辑器。vi 则是 Linux自带的老式的字处理器,不过功能已经很齐全了。
文件的压缩与打包gzip [-c] [-d] [-N] file... # 压缩与解压缩 # -c 标准输出,保留源文件 # -d 解压缩 # -N N越大,压缩比越高。默认6 bzip2 [-cdzk] file... # 同 gzip tar [-j|-z] [-ctx] [-f filename] [file...] # -j 压缩与解压缩使用 bzip2,建议*.tar.bz2 # -z 压缩与解压缩使用 gzip,建议*.tar.gz # -c 打包文件;-t 查看打包的文件;-x 解包 # -f 目标文件 # -v 显示处理的文件;-C 解包指定的目录三、用户与权限管理
Linux 的用户根据 UID 分为:超级用户(UID为0),程序用户(UID在1-999之间),普通用户(UID为1000及以上)。
相关文件:
- /etc/passwd:记录了用户基本信息
- /etc/shadow:记录了用户密码及密码相关信息
- /etc/group:记录了群组的基本信息
- /etc/login.defs:新用户创建时默认的属性
- /etc/default/useradd:useradd 指令的默认配置文件
用户管理常用命令:
whoami # 显示当前用户 id [-gG] [USER] # 显示用户的ID信息 groups [USER] # 显示用户所在的组 finger [-lmsp] [user ...] # 显示用户详细信息 useradd [-gGs] LOGIN # 创建新用户或更改新用户默认值 usermod [-gGsLU] LOGIN # 修改用户信息 userdel [-r] LOGIN # 删除用户信息,-r删除家目录和邮箱 groupadd [-g] group # 创建新群组 groupmod [-gn] group # 修改已存在的群组信息 groupdel GROUP # 删除已存在的群组信息 passwd [-lu] [--stdin] [username] # 更新用户密码 chage [-dmMW] LOGIN # 修改用户密码策略基础权限、特殊权限和 ACL 权限
Linux 一般将文件可存取的身份分为三个类别,分别是 owner/group/others,且三种身份各有 read/write/execute 等权限。
| 权限 | 权限数字 | 针对文件 | 针对目录 |
|---|---|---|---|
| r | 4 | 打开和读取文件内容 | 读取目录结构列表 |
| w | 2 | 修改文件内容(但不能删除) | 在目录中增加和删除文件(需要x权限) |
| x | 1 | 可以执行文件 | 可以进入目录,同时可以查看目录中文件的详细信息 |
Linux 用四位数字表示文件的权限,分别代表:特殊权限、属主权限、属组权限、其他权限。
Linux 特殊权限有:
- SUID(Set UID):权限数字为4,作用于二进制文件(指令)上,执行者临时(运行时)具有程序拥有者的权限。chmod u+s
- SGID(Set GID):权限数字为2,作用于二进制文件或目录上,执行者临时具有程序所属组的权限,如果是目录,则在进入目录后以目录所属组的身份工作。chmod g+s
- SBIT(Sticky Bit):权限数字为1,只针对目录生效,面向other用户,只有root和文件拥有者能够删除目录下对应的文件。chmod o+t
- 大写的 S 和 T 表示文件没有对应的 x 权限。
Linux 中文件默认权限为666,目录默认权限777,同时每个用户都有一个 umask 值。用户创建文件时,会用默认权限减去对应的 umask 值,得到最终的权限。
ACL 是 Access Control List的缩写。针对以下方面:
- 使用者(user):针对特定用户设置权限
- 群组(group):针对特定群组设置权限
- 默认属性(mask):规范新文件的默认权限
相关指令:
chown [OWNER][:[GROUP]] FILE... # 修改文件属主和属组
chgrp GROUP FILE... # 修改文件属组
chmod MODE[,MODE] FILE... # 修改文件权限,MODE 可以使用数字
getfacl file... # 获取文件的访问控制列表
setfacl [{-m|-x} acl_spec] [{-M|-X} acl_file] file... # 设置文件的访问控制列表
指令执行身份切换
su [-] [user] # 切换到其他用户 sudo [-u user] [command] # 以其他用户的身份执行指令,默认 root visudo # 使用 vi 打开 /etc/sudoers,该文件设置了 sudo 指令的使用规则 ### sudo 规则 #使用者账号 登入者来源主机=(可切换的身份) 可下达指令 root ALL=(ALL) ALL账号认证
PAM 模块
四、文件系统管理与磁盘配额索引式文件系统:
- superblock:记录文件系统的整体信息
- inode:记录文件的属性
- block:文件的实际内容
日志式文件系统会专门划出一个区块记录系统写入和修改文件的步骤,此时写文件的步骤如下:
- 准备:当系统写入一个文件时,会在日志记录区块记录文件要写入的信息;
- 写入:写入文件的权限和数据,更新元数据的内容;
- 完成:在数据与元数据更新完成后,在日志记录区块中完成文件的记录。
常用命令和选项:
lsblk # 列出所有可用块设备的信息 fdisk [device...] # 管理磁盘分区 partprobe [device...] # 识别新分区 # /proc/partitions 查看分区信息 mkfs.* device # 创建文件系统 # ext4 rhel6 默认文件系统,使用tune2fs查看 # 出现问题使用 fsck.ext4 指令 # xfs rhel7 默认文件系统,使用xfs_info查看 # 出现问题使用 xfs_repair 指令 df [-Th] # 查看系统磁盘的使用情况 blkid # 查看存储设备的UUID swapoff [-a|sp_file] # 开启虚拟内存 swapon [-a|sp_file] # 关闭虚拟内存 mount # 挂载文件系统 umount # 取消挂载文件系统
/etc/fstab 文件记录了开启自动挂载的磁盘分区信息。每行信息分为六列:
- 第一列表示待挂载的文件系统,挂载方式可以是设备路径(/dev/sdb1),可以是LABEL,可以是UUID
- 第二列是挂载点,表示设备使用后,从哪个接入点使用磁盘空间
- 第三列是文件系统类型,制作文件系统时的格式写在这个位置
- 第四列是挂载时的磁盘参数,默认包含可读可写等
- 第五列是是否对磁盘做dump备份,1表示备份,0表示不备份
- 第六列是是否对磁盘做fsck检查,非0的正整数代表通过fsck -a检查,0表示不检查
创建新的磁盘分区的步骤:
- 添加并识别硬件设备:fdisk -l
- 创建分区并识别分区:fdisk /dev/sdb ;partprobe /dev/sdb
- 制作文件系统:mkfs.ext4 /dev/sdb1
- 制作磁盘标签(非必须):e2label /dev/sdb1 newpart
- 创建挂载点:mkdir /mnt/ext
- 将分区信息写入文件系统分区表(实现永久挂载):vim /etc/fstab
- 挂载文件系统:mount -a
Logical Volume Manager(LVM)可以动态调整文件系统的大小,本质上是一个虚拟设备驱动。逻辑卷的创建步骤:
- 创建新的磁盘分区,或将已有的分区修改为 Linux LVM 类型;
- 在分区或者整个磁盘的基础上,创建物理卷(PV);
- 创建卷组(VG),卷组由一个或多个多个 PV 组成;
- 创建逻辑卷(LV),从指定卷组中取出部分空间;
- 在逻辑卷上创建文件系统。
pvcreate device # 将设备初始化为物理卷 vgcreate VG_name PV_device # 将物理卷加入卷组 lvcreate -L size -n lv_name VG... # 在已有的卷组中,创建逻辑卷磁盘阵列 RAID
RAID 有如下几种模式:
- RAID 0:等量模式,效能最佳。此模式会将硬盘分割出大小相等的区块,数据存入时切割数据为相同大小区块分别存入各块硬盘。没有冗余,安全性差。
- RAID 1:镜像模式。让同一份数据完整保存在两颗磁盘上。
- RAID 1+0,RAID 0+1:所谓的 RAID 1+0 就是(1)先让四个磁盘两两组成 RAID 1,(2)再将这两组 RAID 1 组成一组 RAID 0。反过来 RAID 0+1 就是先组成 RAID 0 再组成 RAID 1。
- RAID 5:至少3块硬盘组成。数据写入类似 RAID 0,划分大小相同的区块,写入时有一颗磁盘通过奇偶校验进行数据备份,其余磁盘进行数据写入。任意一颗磁盘损坏都可以进行数据回复。
可以通过硬件设备实现 RAID,也可以通过软件:
mdadm # -C 创建阵列存储设备 # -n 添加磁盘的数量 # -l RAID的等级 # -s 扫描可用的磁盘阵列 # -Q 查询阵列信息 # -E 检查已扫描/指定磁盘的元数据 # --detail 显示阵列的完整信息 # --brief 以简短格式显示输出(对于mdadm.conf) # --examine显示阵列成员磁盘的信息磁盘配额
quota 限制:
- 仅能针对整个文件系统,不能针对某个目录;
- 只能针对普通用户和用户组,无法对超级用户限制;
- 实现磁盘配额,需要系统内核支持(grep CONFIG_QUOTA /boot/config-3.10.0-514.el7.x86_64);
- 需要安装管理工具 quota (rpm -qa | grep quota)。
quota 的设定项目:容量限制(block)和文件数量限制(inode);柔性劝导(soft)与硬性规定(hard);宽限时间(grace time)。
针对不同的文件系统,需要使用不同的指令和配置方式,区别和步骤如下表:
| 序号 | EXT文件系统 | XFS文件系统 |
|---|---|---|
| /etc/fstab 磁盘参数设置 | usrquota / grpquota | usrquota/grpquota/prjquota |
| 生成quota配置文件 | quotacheck | 不需要 |
| 设置用户/群组限制值 | edquota 或 setquota | xfs_quota -x-c “lim…” |
| 设置grace time(警告时间) | edquota | xfs_quota -x-c “tim…” |
| 设置目录限制值 | 无 | xfs_quota -x-c “limt…” |
| 观察报告 | repquota 或 quota | xfs_quota -x-c “report…” |
| 启动与关闭quota | quotaoff,quotaon | xfs_quota -x-c “[disable|enable]…” |
| 限制发送警告信给用户 | warnquota | 目前版本尚未支持 |



