E11. Linux 操作系统
1.1. Linux 是具有多分支版本的开源操作系统
Linux 是一个由社区驱动的开源操作系统内核,其发行版分支众多,各具特色。
1.1.1. 主流发行版分支对比
发行版 | 特点 | 典型用户场景 | 包管理工具 |
---|---|---|---|
Debian | 社区主导,严格遵循 GNU 规范,稳定性高,适合服务器。 | 企业服务器、开发者 | apt /dpkg |
Ubuntu | 基于 Debian,界面友好,硬件兼容性好,适合桌面和服务器。 | 个人用户、开发环境 | apt /dpkg |
CentOS/Rocky Linux | 企业级稳定系统,长期支持(LTS),适合生产环境。 | 企业服务器、云计算 | yum /dnf |
Fedora | Red Hat 家族前沿技术试验场,包含最新功能,适合开发者。 | 开发测试、新技术探索 | dnf |
Arch Linux | 滚动更新,高度定制化,适合追求前沿技术的用户。 | 硬件爱好者、极客 | pacman |
FreeBSD | BSD 系统,性能高效,但非 Linux 内核,适合服务器(需注意兼容性)。 | 服务器、嵌入式系统 | pkg /ports |
1.1.2. 分支选择指南
- 服务器场景:优先选择 CentOS/Rocky Linux(稳定)、Debian(社区支持)。
- 开发/桌面:推荐 Ubuntu(易用性)、Fedora(新技术)。
- 嵌入式/极客:尝试 Arch Linux(高度定制)或 Gentoo(源码编译)。
TIP
FreeBSD 虽与 Linux 类似,但内核不同,需注意软件兼容性!
1.2. Linux 拥有严谨的权限管理模型
1.2.1. 用户与权限层级
Linux 权限分为 用户(User)、组(Group) 和 其他(Others),每个层级有 读(r)、写(w)、执行(x) 三种权限。
bash
# 示例:查看文件权限
ls -l /etc/passwd
-rw-r--r-- 1 root root 2216 Jan 1 00:00 /etc/passwd
- 权限符号:
rwx
对应7
(二进制111
),如755
表示用户可读写执行,组和其他可读执行。 - chmod 命令:修改权限的核心工具。bash
# 数字模式(推荐):chmod 755 filename # 符号模式:chmod u+x,g-w,o-r filename
1.2.2. 特殊权限
- SUID:文件执行时以所有者权限运行(如
passwd
)。bashchmod u+s /usr/bin/vim
- SGID:文件执行时以组权限运行(如
/tmp
目录)。 - 粘滞位:防止非所有者删除文件(如
/tmp
)。bashchmod +t /tmp
1.2.3. 用户与组管理
bash
# 添加用户
sudo useradd -m newuser -s /bin/bash
# 修改用户权限组
sudo usermod -aG sudo newuser
# 查看当前用户权限
whoami && groups
WARNING
高危操作:修改 /etc/passwd
或 chmod 777 /
可能导致系统崩溃!
1.3. 使用 Linux 命令行启动与结束程序
1.3.1. 启动程序
- 前台运行:直接输入命令(如
gedit
)。 - 后台运行:
nohup
或&
符号。bash# 后台运行并忽略挂起 nohup python3 server.py > output.log 2>&1 &
1.3.2. 结束程序
- 信号(Signal):通过
kill
命令发送信号。bash# 查找进程 PID ps aux | grep "python3 server.py" # 终止进程(SIGTERM) kill 1234 # 强制终止(SIGKILL) kill -9 1234
1.3.3. 信号详解
信号名 | 编号 | 作用 |
---|---|---|
SIGINT | 2 | 中断进程(Ctrl+C) |
SIGTERM | 15 | 默认终止信号 |
SIGKILL | 9 | 强制终止(不可捕获) |
1.4. Linux 的配置系统以文件为核心
1.4.1. 配置文件示例
文件路径 | 功能描述 | 修改方法 |
---|---|---|
/etc/passwd | 用户账户信息 | vipw (安全编辑) |
/etc/hosts | 主机名到 IP 的静态映射 | sudo nano |
/etc/fstab | 硬盘分区挂载配置 | sudo blkid 辅助 |
~/.bashrc | 用户 Shell 环境变量 | source 重载 |
1.4.2. 配置文件修改注意事项
- 备份文件:修改前备份(如
sudo cp /etc/hosts /etc/hosts.bak
)。 - 权限控制:配置文件通常需保持默认权限(如
644
)。 - 语法检查:修改后用工具验证(如
systemctl restart sshd
检查 SSH 配置)。
1.5. Linux 命令行中的文件操作
1.5.1. 文件重定向
bash
# 输出重定向(覆盖)
echo "Hello" > file.txt
# 追加内容
echo "World" >> file.txt
# 输入重定向(从文件读入)
cat < file.txt
1.5.2. 文件查看与编辑
bash
# 查看文件内容
cat file.txt # 全显示
less file.txt # 分页查看
head -n 5 file.txt # 显示前 5 行
tail -f file.txt # 实时追加显示
# 文件修改
nano file.txt # 简单编辑器
sed 's/old/new/g' file.txt # 即时替换
1.5.3. 文件管理命令
bash
# 复制与移动
cp file.txt /backup/
mv oldname.txt newname.txt
# 删除文件/目录
rm -f file.txt # 强制删除
rm -r directory/ # 递归删除目录
TIP
管道符 |
的妙用:grep "error" log.txt | wc -l
可统计错误行数。
1.6. Linux Shell Bash 初步介绍
1.6.1. Shell 基础语法
- 变量定义:bash
MY_VAR="Hello" echo $MY_VAR # 或 ${MY_VAR}
- 条件判断:bash
if [ -f "file.txt" ]; then echo "文件存在" fi
- 循环结构:bash
# 数值循环 for i in {1..5}; do echo $i; done # 文件遍历 for file in *.txt; do echo $file; done
1.6.2. 脚本编写示例
bash
#!/bin/bash
# 这是一个计算器脚本
read -p "输入第一个数字: " num1
read -p "输入第二个数字: " num2
echo "和为: $((num1 + num2))"
1.6.3. Shell 特殊功能
- 函数:bash
greet() { echo "欢迎使用 $1!" } greet "Linux"
- 环境变量:bash
export PATH=$PATH:/new/dir # 扩展执行路径
WARNING
脚本执行权限:务必使用 chmod +x script.sh
赋予执行权限!
知识回顾
- 发行版选择:根据场景选择(如服务器选 CentOS,桌面选 Ubuntu)。
- 权限管理:
chmod
控制权限,谨慎使用SUID
和chmod 777
。 - 进程控制:
kill
发送信号,nohup
后台运行。 - 配置文件:修改前备份,保持权限规范。
- 重定向与管道:
>
覆盖、>>
追加,|
组合命令。 - Bash 脚本:变量、条件、循环是核心,需添加
#!/bin/bash
头部。
课后练习
(单选)以下哪个命令用于强制终止进程 PID 1234?
- A.
kill 1234
- B.
kill -9 1234
- C.
kill -SIGTERM 1234
- D.
kill -SIGINT 1234
- A.
(填空)修改文件权限为
rwxr-xr--
的数字模式是____
。(操作)编写一个 Bash 脚本,统计当前目录下
.log
文件的数量并输出结果。
参考答案
- B
- 754
- 示例脚本:bash
#!/bin/bash COUNT=$(ls *.log 2>/dev/null | wc -l) echo "日志文件数量: $COUNT"