本文档全面概述了 Linux 操作系统,重点介绍了构成 DevOps 实践基础的核心概念、命令和技能。无论您是 Linux 新手还是希望巩固您的理解,本文档都涵盖了在 Linux 作为主要操作系统的 DevOps 环境中有效工作所需的必备知识。
有关在 Linux 上运行的容器化技术的信息,请参阅容器化。
Linux 是基于 Linux 内核的类 Unix 开源操作系统系列。由于其稳定性、安全性和灵活性,它已成为许多 DevOps 工具和平台的基础。
Linux 系统组件:
| 组件 | 描述 |
|---|---|
| 内核 | 与硬件直接交互的操作系统核心 |
| Shell | 接受用户命令的命令行解释器 |
| 文件系统 | 组织和管理存储设备上的文件 |
| 窗口系统 | 可选的图形界面(X Window System,Wayland) |
| 桌面环境 | 可选 GUI(GNOME、KDE 等) |
| 系统工具 | 管理和系统维护工具 |
来源:topics/linux/README.md608-645
Linux 发行版(或简称“distros”)是在 Linux 内核基础上构建的操作系统,具有不同的软件包管理系统和默认配置。
来源:topics/linux/README.md1045-1046
Linux 文件系统遵循一个称为文件系统层级标准 (FHS) 的标准化结构。
| 目录 | 目的 |
|---|---|
/bin | 重要的命令二进制文件 |
/boot | 引导加载程序文件和内核 |
/dev | Device files (设备文件) |
/etc | 系统范围的配置文件 |
/home | 用户主目录 |
/lib | 重要的共享库 |
/proc | 提供进程和内核信息的虚拟文件系统 |
/root | root 用户的家目录 |
/sbin | 系统二进制文件 |
/tmp | 临时文件(重启时清除) |
/usr | 只读用户数据的二级层级结构 |
/var | 可变数据(日志、邮件假脱机文件、临时文件) |
来源:topics/linux/README.md325-346
Linux 中的某些目录具有特殊属性
/proc:提供进程和内核信息的虚拟文件系统/dev:包含代表硬件组件的设备文件/tmp:这里的文件通常在重启时清除/var/tmp:类似于/tmp,但文件会在重启后保留来源:topics/linux/README.md355-380 topics/linux/README.md1036-1041
| 命令 | 描述 | 示例 |
|---|---|---|
pwd | 打印当前工作目录 | pwd |
ls | 列出目录内容 | ls -la |
cd | 更改目录 | cd /tmp |
mkdir | 创建目录 | mkdir directory |
touch | 创建文件或更新时间戳 | touch file.txt |
cp | 复制文件或目录 | cp file.txt /tmp/ |
mv | 移动或重命名文件 | mv file.txt newname.txt |
rm | 删除文件或目录 | rm -rf directory/ |
cat | 显示文件内容 | cat file.txt |
来源:topics/linux/README.md80-100 topics/linux/exercises/navigation/README.md1-19 topics/linux/exercises/create_remove/README.md1-15 topics/linux/exercises/copy/README.md1-15
来源:topics/linux/exercises/navigation/README.md8-16
来源:topics/linux/exercises/create_remove/solution.md14-21
来源:topics/linux/exercises/copy/solution.md14-24
Linux 是一个具有强大权限系统的多用户操作系统。
| 符号 | 数字 | 描述 |
|---|---|---|
rwx | 7 | 读、写和执行权限 |
rw- | 6 | 读写权限 |
r-x | 5 | 读执行权限 |
r-- | 4 | 只读权限 |
-wx | 3 | 写执行权限 |
-w- | 2 | 只写权限 |
--x | 1 | 只执行权限 |
--- | 0 | 无权限 |
| 命令 | 描述 | 示例 |
|---|---|---|
chmod | 更改文件权限 | chmod 755 script.sh |
chown | 更改文件所有者 | chown user:group file.txt |
chgrp | 更改文件所属组 | chgrp newgroup file.txt |
umask | 设置默认权限 | umask 022 |
来源:topics/linux/README.md382-421 topics/linux/README.md426-432
4000):当设置在可执行文件上时,程序将以文件所有者的权限运行2000):当设置在可执行文件上时,程序将以文件的所属组的权限运行1000):当设置在目录上时,只有所有者才能删除或重命名其中的文件来源:topics/linux/README.md412-421
Linux 通过各种命令和工具提供了强大的输入输出重定向机制。
| 运算符 | 描述 | 示例 |
|---|---|---|
> | 将 stdout 重定向到文件(覆盖) | ls > files.txt |
>> | 将 stdout 追加到文件 | echo "text" >> file.txt |
< | 将文件内容重定向到 stdin | sort < unsorted.txt |
2> | 将 stderr 重定向到文件 | find / -name "file" 2> errors.txt |
&> | 将 stdout 和 stderr 重定向到文件 | command &> output.txt |
| | 将 stdout 管道传递给另一个命令 | ls | grep ".txt" |
来源:topics/linux/README.md280-322
进程是正在运行的程序的一个实例。Linux 提供了各种管理进程的工具。
| 命令 | 描述 | 示例 |
|---|---|---|
ps | 显示进程状态 | ps aux |
top | 显示动态进程信息 | top |
htop | 交互式进程查看器 | htop |
kill | 向进程发送信号 | kill -9 1234 |
killall | 按名称杀死进程 | killall firefox |
pgrep | 按名称查找进程 ID | pgrep nginx |
pkill | 按名称杀死进程 | pkill nginx |
nice | 以修改后的优先级运行命令 | nice -n 10 command |
renice | 更改正在运行进程的优先级 | renice 10 -p 1234 |
来源:topics/linux/README.md1082-1108
现代 Linux 发行版使用 systemd 作为 init 系统和服务的管理器。
| 命令 | 描述 | 示例 |
|---|---|---|
systemctl start | 启动服务 | systemctl start nginx |
systemctl stop | 停止服务 | systemctl stop nginx |
systemctl restart | 重启服务 | systemctl restart nginx |
systemctl status | 检查服务状态 | systemctl status nginx |
systemctl enable | 开机时启用服务 | systemctl enable nginx |
systemctl disable | 开机时禁用服务 | systemctl disable nginx |
journalctl | 查看 systemd 日志 | journalctl -u nginx |
来源:topics/linux/README.md489-527
Linux 启动过程包括从开机到用户登录的几个阶段。
启动过程包括
来源:topics/linux/README.md881-900
| 命令 | 描述 | 示例 |
|---|---|---|
df | 显示磁盘空间使用情况 | df -h |
du | 显示目录空间使用情况 | du -sh /var |
lsblk | 列出块设备 | lsblk |
fdisk | 分区管理工具 | fdisk /dev/sda |
mount | 挂载文件系统 | mount /dev/sda1 /mnt |
umount | 卸载文件系统 | umount /mnt |
来源:topics/linux/README.md902-972
Linux 通过各种命令和工具提供了强大的网络功能。
| 命令 | 描述 | 示例 |
|---|---|---|
ip | 显示/操作路由、设备、策略路由 | ip addr show |
ifconfig | 配置网络接口(已弃用) | ifconfig eth0 |
netstat | 网络统计 | netstat -tuln |
ss | 套接字统计 | ss -tuln |
ping | 测试网络连通性 | ping google.com |
traceroute | 显示到目标的路由 | traceroute google.com |
dig | DNS 查询工具 | dig google.com |
nslookup | DNS 查询工具 | nslookup google.com |
主机 | DNS 查询 | host google.com |
来源: topics/linux/README.md551-552
Linux 提供了各种工具来对问题进行故障排除和调试。
重要的日志文件
| 日志文件 | 描述 |
|---|---|
/var/log/syslog 或 /var/log/messages | 通用系统日志 |
/var/log/auth.log 或 /var/log/secure | 身份验证日志 |
/var/log/kern.log | 内核日志 |
/var/log/dmesg | 启动时硬件设备日志 |
/var/log/apache2/ 或 /var/log/httpd/ | Web 服务器日志 |
| 命令 | 目的 | 示例 |
|---|---|---|
dstat | 系统资源统计信息 | dstat -t |
iostat | I/O 统计信息 | iostat -xz 1 |
vmstat | 虚拟内存统计信息 | vmstat 1 |
strace | 跟踪系统调用 | strace -f command |
ltrace | 跟踪库调用 | ltrace command |
lsof | 列出打开的文件 | lsof -p 1234 |
tcpdump | 捕获网络数据包 | tcpdump -i eth0 |
来源: topics/linux/README.md529-598
性能分析对于系统优化和故障排除至关重要。
| 工具 | 描述 | 示例 |
|---|---|---|
top | 进程的动态实时视图 | top |
htop | 交互式进程查看器 | htop |
uptime | 显示负载平均值 | uptime |
sar | 收集和报告系统活动 | sar -u 1 5 |
iostat | 报告 CPU 和 I/O 统计信息 | iostat -xz 1 |
mpstat | 报告处理器统计信息 | mpstat -P ALL 1 |
free | 显示内存使用情况 | free -m |
perf | 性能分析工具 | perf top |
来源: topics/linux/README.md1043-1081
Shell 脚本允许自动化 Linux 中重复的任务。
| 命令 | 描述 | 示例 |
|---|---|---|
echo | 打印文本 | echo "Hello" |
grep | 搜索模式 | grep "error" logfile |
awk | 文本处理工具 | awk '{print $1}' file |
sed | 流编辑器 | sed 's/old/new/g' file |
cut | 从行中提取部分 | cut -d "," -f 1 file.csv |
sort | 对文本行进行排序 | sort file.txt |
uniq | 报告或过滤重复的行 | uniq -c file.txt |
find | 搜索文件 | find . -name "*.txt" |
来源: topics/linux/README.md157-175
SSH 是一种用于 Linux 系统远程管理的协议。
| 命令 | 描述 | 示例 |
|---|---|---|
ssh | 连接到远程主机 | ssh user@host |
ssh-keygen | 生成 SSH 密钥对 | ssh-keygen -t rsa |
ssh-copy-id | 将公钥复制到服务器 | ssh-copy-id user@host |
scp | 安全地复制文件 | scp file.txt user@host:/path |
sftp | 安全文件传输 | sftp user@host |
SSH 使用非对称加密进行身份验证,使用对称加密进行会话。
来源: topics/linux/README.md706-740
通配符和 globbing 模式允许用单个模式匹配多个文件。
| 模式 | 描述 | 示例 |
|---|---|---|
* | 匹配任意数量的字符 | ls *.txt |
? | 匹配任何单个字符 | ls file?.txt |
[abc] | 匹配集合中的任何一个字符 | ls file[123].txt |
[!abc] | 匹配集合中除 abc 之外的任何字符 | ls file[!123].txt |
[a-z] | 匹配范围内的任何一个字符 | ls file[a-z].txt |
来源: topics/linux/README.md805-837
iptables、ufw 或 firewalld 控制网络访问来源: topics/linux/README.md708-722
本篇关于 Linux 和操作系统的概述为 DevOps 从业人员提供了必要的知识。这里概述的命令、概念和实践构成了在 DevOps 环境中有效使用 Linux 系统的基础。有关更高级的主题和详细练习,请探索存储库中的特定部分。
刷新此 Wiki
最后索引时间2025 年 4 月 18 日(eac6c6)