菜单

Linux 和操作系统

相关源文件

本文档全面概述了 Linux 操作系统,重点介绍了构成 DevOps 实践基础的核心概念、命令和技能。无论您是 Linux 新手还是希望巩固您的理解,本文档都涵盖了在 Linux 作为主要操作系统的 DevOps 环境中有效工作所需的必备知识。

有关在 Linux 上运行的容器化技术的信息,请参阅容器化

核心 Linux 概念

Linux 是基于 Linux 内核的类 Unix 开源操作系统系列。由于其稳定性、安全性和灵活性,它已成为许多 DevOps 工具和平台的基础。

Linux 架构

Linux 系统组件:

组件描述
内核与硬件直接交互的操作系统核心
Shell接受用户命令的命令行解释器
文件系统组织和管理存储设备上的文件
窗口系统可选的图形界面(X Window System,Wayland)
桌面环境可选 GUI(GNOME、KDE 等)
系统工具管理和系统维护工具

来源:topics/linux/README.md608-645

Linux 发行版家族

Linux 发行版(或简称“distros”)是在 Linux 内核基础上构建的操作系统,具有不同的软件包管理系统和默认配置。

来源:topics/linux/README.md1045-1046

文件系统层级结构

Linux 文件系统遵循一个称为文件系统层级标准 (FHS) 的标准化结构。

目录目的
/bin重要的命令二进制文件
/boot引导加载程序文件和内核
/devDevice files (设备文件)
/etc系统范围的配置文件
/home用户主目录
/lib重要的共享库
/proc提供进程和内核信息的虚拟文件系统
/rootroot 用户的家目录
/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

必学的 Linux 命令

命令描述示例
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 是一个具有强大权限系统的多用户操作系统。

权限结构

权限符号

符号数字描述
rwx7读、写和执行权限
rw-6读写权限
r-x5读执行权限
r--4只读权限
-wx3写执行权限
-w-2只写权限
--x1只执行权限
---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

特殊权限位

  • SetUID(4000:当设置在可执行文件上时,程序将以文件所有者的权限运行
  • SetGID(2000:当设置在可执行文件上时,程序将以文件的所属组的权限运行
  • Sticky Bit(1000:当设置在目录上时,只有所有者才能删除或重命名其中的文件

来源:topics/linux/README.md412-421

I/O 重定向

Linux 通过各种命令和工具提供了强大的输入输出重定向机制。

重定向运算符

运算符描述示例
>将 stdout 重定向到文件(覆盖)ls > files.txt
>>将 stdout 追加到文件echo "text" >> file.txt
<将文件内容重定向到 stdinsort < 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按名称查找进程 IDpgrep nginx
pkill按名称杀死进程pkill nginx
nice以修改后的优先级运行命令nice -n 10 command
renice更改正在运行进程的优先级renice 10 -p 1234

来源:topics/linux/README.md1082-1108

Systemd 管理的系统服务

现代 Linux 发行版使用 systemd 作为 init 系统和服务的管理器。

Systemd 命令

命令描述示例
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 启动过程

Linux 启动过程包括从开机到用户登录的几个阶段。

启动过程包括

  1. BIOS/UEFI:硬件初始化和引导加载程序选择
  2. 引导加载程序 (GRUB):加载内核和初始 RAM 磁盘
  3. 内核初始化:硬件检测和设置
  4. Init 系统 (systemd):启动系统服务
  5. 登录提示:用户认证

来源: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

文件系统概念

  • Inode:包含文件元数据(除文件名和内容外的所有信息)的数据结构
  • 硬链接:指向同一 inode 的多个文件名
  • 软链接(符号链接):指向另一个文件或目录路径的文件
  • 挂载点:文件系统附加到系统层级结构中的目录

来源:topics/linux/README.md902-972

Linux 网络

Linux 通过各种命令和工具提供了强大的网络功能。

常用网络命令

命令描述示例
ip显示/操作路由、设备、策略路由ip addr show
ifconfig配置网络接口(已弃用)ifconfig eth0
netstat网络统计netstat -tuln
ss套接字统计ss -tuln
ping测试网络连通性ping google.com
traceroute显示到目标的路由traceroute google.com
digDNS 查询工具dig google.com
nslookupDNS 查询工具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
iostatI/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

Linux 性能分析

性能分析对于系统优化和故障排除至关重要。

性能监控工具

工具描述示例
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 脚本基础

Shell 脚本允许自动化 Linux 中重复的任务。

基本脚本结构

常用 Shell 内建命令和工具

命令描述示例
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

安全 Shell (SSH)

SSH 是一种用于 Linux 系统远程管理的协议。

SSH 命令和配置

命令描述示例
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

通配符和 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

Linux 安全实践

基本安全措施

  1. 最小权限原则:仅授予用户所需的权限
  2. 定期更新:及时为系统打上安全补丁
  3. 防火墙配置:使用 iptablesufwfirewalld 控制网络访问
  4. SSH 加固:禁用 root 登录,使用基于密钥的身份验证
  5. 服务最小化:仅运行必需的服务
  6. 定期审计:监控日志并检查可疑活动

来源: topics/linux/README.md708-722

结论

本篇关于 Linux 和操作系统的概述为 DevOps 从业人员提供了必要的知识。这里概述的命令、概念和实践构成了在 DevOps 环境中有效使用 Linux 系统的基础。有关更高级的主题和详细练习,请探索存储库中的特定部分。