Skip to content

E11. Linux 操作系统

1.1. Linux 是具有多分支版本的开源操作系统

Linux 是一个由社区驱动的开源操作系统内核,其发行版分支众多,各具特色。

1.1.1. 主流发行版分支对比

发行版特点典型用户场景包管理工具
Debian社区主导,严格遵循 GNU 规范,稳定性高,适合服务器。企业服务器、开发者apt/dpkg
Ubuntu基于 Debian,界面友好,硬件兼容性好,适合桌面和服务器。个人用户、开发环境apt/dpkg
CentOS/Rocky Linux企业级稳定系统,长期支持(LTS),适合生产环境。企业服务器、云计算yum/dnf
FedoraRed Hat 家族前沿技术试验场,包含最新功能,适合开发者。开发测试、新技术探索dnf
Arch Linux滚动更新,高度定制化,适合追求前沿技术的用户。硬件爱好者、极客pacman
FreeBSDBSD 系统,性能高效,但非 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)。
    bash
    chmod u+s /usr/bin/vim
  • SGID:文件执行时以组权限运行(如 /tmp 目录)。
  • 粘滞位:防止非所有者删除文件(如 /tmp)。
    bash
    chmod +t /tmp

1.2.3. 用户与组管理

bash
# 添加用户
sudo useradd -m newuser -s /bin/bash

# 修改用户权限组
sudo usermod -aG sudo newuser

# 查看当前用户权限
whoami && groups

WARNING

高危操作:修改 /etc/passwdchmod 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. 信号详解

信号名编号作用
SIGINT2中断进程(Ctrl+C)
SIGTERM15默认终止信号
SIGKILL9强制终止(不可捕获)

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 赋予执行权限!

知识回顾

  1. 发行版选择:根据场景选择(如服务器选 CentOS,桌面选 Ubuntu)。
  2. 权限管理chmod 控制权限,谨慎使用 SUIDchmod 777
  3. 进程控制kill 发送信号,nohup 后台运行。
  4. 配置文件:修改前备份,保持权限规范。
  5. 重定向与管道> 覆盖、>> 追加,| 组合命令。
  6. Bash 脚本:变量、条件、循环是核心,需添加 #!/bin/bash 头部。

课后练习

  1. (单选)以下哪个命令用于强制终止进程 PID 1234?

    • A. kill 1234
    • B. kill -9 1234
    • C. kill -SIGTERM 1234
    • D. kill -SIGINT 1234
  2. (填空)修改文件权限为 rwxr-xr-- 的数字模式是 ____

  3. (操作)编写一个 Bash 脚本,统计当前目录下 .log 文件的数量并输出结果。

参考答案
  1. B
  2. 754
  3. 示例脚本:
    bash
    #!/bin/bash
    COUNT=$(ls *.log 2>/dev/null | wc -l)
    echo "日志文件数量: $COUNT"

扩展阅读

Built by Vitepress | Apache 2.0 Licensed