【上海赛申宇机电科技有限公司】 www.saisenyoo.cn 荣誉出品
一套完整的 Linux 教程,从零开始,涵盖 Linux 版本及差异、常用命令行指令、日常使用及运维管理任务,力求让你能够胜任日常的 Linux 系统运维管理工作。
第一部分:Linux 基础知识
-
什么是 Linux?
- Linux 是一种开源的、类 Unix 操作系统内核。
- 我们通常所说的 "Linux" 指的是基于 Linux 内核的各种发行版。
- Linux 具有稳定性、安全性、灵活性和强大的命令行工具等优点。
-
Linux 发行版
- Debian 系:
- Debian: 稳定、安全,软件包管理使用
apt。 - Ubuntu: 基于 Debian,用户友好,桌面环境丰富,软件包管理使用
apt。 - Linux Mint: 基于 Ubuntu,更注重用户体验,开箱即用。
- Debian: 稳定、安全,软件包管理使用
- Red Hat 系:
- Red Hat Enterprise Linux (RHEL): 商业发行版,提供支持和服务,软件包管理使用
yum或dnf。 - CentOS: 基于 RHEL 的社区发行版,免费使用,软件包管理使用
yum或dnf。 - Fedora: Red Hat 赞助的社区发行版,注重创新和新技术,软件包管理使用
dnf。
- Red Hat Enterprise Linux (RHEL): 商业发行版,提供支持和服务,软件包管理使用
- Arch 系:
- Arch Linux: 轻量级、高度可定制,滚动更新,软件包管理使用
pacman。 - Manjaro: 基于 Arch Linux,用户友好,提供图形化安装程序和工具。
- Arch Linux: 轻量级、高度可定制,滚动更新,软件包管理使用
- SUSE 系:
- openSUSE: 社区发行版,提供稳定版和滚动更新版,软件包管理使用
zypper。 - SUSE Linux Enterprise Server (SLES): 商业发行版,提供支持和服务。
- openSUSE: 社区发行版,提供稳定版和滚动更新版,软件包管理使用
选择发行版
- 服务器: 推荐 CentOS、Debian、Ubuntu Server。
- 桌面: 推荐 Ubuntu、Linux Mint、Fedora。
- 学习: 推荐 Ubuntu、CentOS。
- 高级用户: 推荐 Arch Linux、Gentoo。
- Debian 系:
-
Linux 文件系统
- Linux 文件系统是一个树状结构,以根目录
/为起点。 - 常用目录:
/:根目录/bin:存放常用命令/sbin:存放系统管理命令/boot:存放启动文件/dev:存放设备文件/etc:存放配置文件/home:用户家目录/lib:存放库文件/media:挂载可移动设备/mnt:临时挂载点/opt:可选的应用程序/proc:虚拟文件系统,存放内核和进程信息/root:root 用户的家目录/run:存放运行时数据/srv:存放服务数据/sys:虚拟文件系统,存放硬件设备信息/tmp:存放临时文件/usr:存放用户程序和文件/var:存放可变数据,如日志文件
- Linux 文件系统是一个树状结构,以根目录
第二部分:Linux 命令行基础
-
终端(Terminal)
- 终端是与 Linux 系统交互的命令行界面。
- 打开终端:
- 桌面环境:通常有快捷键或菜单项。
- 命令行:
Ctrl+Alt+T(某些发行版)。
-
Shell
- Shell 是一个命令解释器,接收用户输入的命令并执行。
- 常见的 Shell:
- Bash (Bourne Again SHell):大多数 Linux 发行版的默认 Shell。
- Zsh (Z Shell):功能更强大,可定制性更高。
- Fish (Friendly Interactive SHell):用户友好,易于学习。
- 切换 Shell:
chsh -s /bin/zsh(切换到 Zsh)。
-
基本命令格式
command [options] [arguments]command:命令名称。options:选项,通常以-或--开头。arguments:参数,命令操作的对象。
-
常用命令
-
目录操作
pwd:显示当前工作目录。cd:切换目录。cd /path/to/directory:切换到指定目录。cd ..:切换到上级目录。cd -:切换到上一个目录。cd ~或cd:切换到当前用户家目录。
ls:列出目录内容。ls -l:长格式显示,包括权限、所有者、大小、时间等。ls -a:显示所有文件和目录,包括隐藏文件(以.开头)。ls -h:以人类可读的格式显示文件大小(如 1K, 234M, 2G)。ls -t:按修改时间排序。ls -r:反向排序。
mkdir:创建目录。mkdir directory:创建单个目录。mkdir -p dir1/dir2:创建多级目录。
rmdir:删除空目录。rmdir directory:删除单个空目录。
rm:删除文件或目录。rm file:删除文件。rm -r directory:递归删除目录及其内容(谨慎使用!)。rm -f file:强制删除文件,不提示。rm -rf directory:强制递归删除目录及其内容(非常危险!)。
cp:复制文件或目录。cp source destination:复制文件。cp -r source destination:复制目录。
mv:移动文件或目录,也可用于重命名。mv source destination:移动文件或目录。mv old_name new_name:重命名文件或目录。
touch:创建空文件或更新文件时间戳。touch file:创建空文件。touch -a file:仅更新访问时间。touch -m file:仅更新修改时间。
-
文件内容查看
cat:显示文件内容。cat file:显示整个文件内容。cat file1 file2:合并显示多个文件内容。
more:分页显示文件内容。 *more file:按页显示文件内容,空格键翻页,q键退出。less:更强大的分页显示工具,支持上下滚动、搜索等。less file:使用方法与more类似,但功能更强大。
head:显示文件开头部分。 *head file:默认显示文件前 10 行。 *head -n 20 file:显示文件前 20 行。tail:显示文件结尾部分。 *tail file:默认显示文件最后 10 行。 *tail -n 20 file:显示文件最后 20 行。 *tail -f file:持续显示文件新增内容(常用于查看日志)。grep:在文件中搜索指定文本。 *grep pattern file:在文件中搜索包含pattern的行。 *grep -i pattern file:忽略大小写。 *grep -v pattern file:显示不包含pattern的行。 *grep -r pattern directory:在目录中递归搜索。
-
文本处理
wc:统计文件行数、单词数、字节数。wc file:显示行数、单词数、字节数。wc -l file:仅显示行数。wc -w file:仅显示单词数。wc -c file:仅显示字节数。
sort:对文本行进行排序。sort file:按字母顺序排序。sort -n file:按数字顺序排序。sort -r file:反向排序。
uniq:去除重复行。uniq file:去除连续的重复行。sort file | uniq:去除所有重复行(先排序)。
cut:提取文本列。cut -d, -f1 file:以逗号为分隔符,提取第一列。
paste:合并文本行。paste file1 file2:将两个文件的对应行合并。
tr:字符转换或删除。tr a-z A-Z < file:将小写字母转换为大写字母。tr -d abc < file:删除字符 a、b、c。
sed:流编辑器,用于文本替换、删除、插入等。sed 's/old/new/g' file:将文件中所有的old替换为new。
awk:强大的文本处理工具,支持模式匹配、字段提取、计算等。awk '{print $1, $3}' file:打印文件的第一列和第三列。
-
系统信息
uname:显示系统信息。uname -a:显示所有信息。
hostname:显示或设置主机名。whoami:显示当前用户名。date:显示或设置日期和时间。cal:显示日历。uptime:显示系统运行时间。w:显示当前登录用户。who:显示当前登录用户(更详细)。last:显示用户登录历史。ps:显示进程状态。ps aux:显示所有进程的详细信息。
top:动态显示进程状态和系统资源使用情况。htop:更强大的top替代品(需要安装)。free:显示内存使用情况。free -h:以人类可读的格式显示。
df:显示磁盘空间使用情况。df -h:以人类可读的格式显示。
du:显示目录或文件大小。du -h directory:以人类可读的格式显示目录大小。du -sh directory:只显示总大小。
ifconfig或ip:显示或配置网络接口。ifconfig(旧版)。ip addr:显示网络接口信息。ip link set eth0 up:启用网络接口。
ping:测试网络连接。netstat或ss:显示网络连接、路由表等。netstat -tulnp(旧版)。ss -tulnp:显示监听的 TCP 和 UDP 端口。
-
用户和权限
useradd:添加用户。userdel:删除用户。passwd:设置或修改用户密码。usermod:修改用户信息。groupadd:添加用户组。groupdel:删除用户组。groupmod:修改用户组信息。chown:更改文件或目录的所有者。chgrp:更改文件或目录的所属组。chmod:更改文件或目录的权限。chmod u+x file:给文件所有者添加执行权限。chmod g-w file:移除文件所属组的写权限。chmod o=r file:设置其他用户对文件只有读权限。chmod 755 file:使用数字表示权限(r=4, w=2, x=1)。
-
包管理
- Debian/Ubuntu (apt)
sudo apt update:更新软件包列表。sudo apt upgrade:升级已安装的软件包。sudo apt install package:安装软件包。sudo apt remove package:卸载软件包。sudo apt search package:搜索软件包。sudo apt autoremove:自动移除不需要的软件包。
- CentOS/RHEL/Fedora (yum/dnf)
sudo yum update或sudo dnf upgrade:更新软件包。sudo yum install package或sudo dnf install package:安装软件包。sudo yum remove package或sudo dnf remove package:卸载软件包。sudo yum search package或sudo dnf search package:搜索软件包。
- Arch Linux (pacman)
sudo pacman -Syu:更新软件包。sudo pacman -S package:安装软件包。sudo pacman -R package:卸载软件包。sudo pacman -Ss package:搜索软件包。
- Debian/Ubuntu (apt)
-
其他常用命令
man:查看命令手册。man command:查看命令的详细用法。
info:查看命令信息(GNU 格式)。whatis:显示命令的简短描述。which:显示命令的路径。whereis:显示命令、源代码和手册页的路径。locate:快速查找文件(基于数据库)。find:查找文件(实时搜索)。find /path -name "pattern":在指定路径下查找符合模式的文件。
history:显示命令历史记录。alias:创建命令别名。alias ll='ls -l':创建ll作为ls -l的别名。
unalias:删除命令别名。clear:清屏。exit:退出终端。sudo:以超级用户权限执行命令。su:切换用户。shutdown:关机。reboot:重启。poweroff:关机(某些系统)。
-
第三部分:日常使用及运维管理
-
文件管理
- 使用
ls、cd、mkdir、rm、cp、mv等命令管理文件和目录。 - 使用
find和locate查找文件。 - 使用
tar、gzip、bzip2等命令进行文件压缩和解压缩。
- 使用
-
文本处理
- 使用
cat、more、less、head、tail查看文件内容。 - 使用
grep、sed、awk等命令进行文本搜索和处理。
- 使用
-
用户和权限管理
- 使用
useradd、userdel、passwd、usermod等命令管理用户。 - 使用
groupadd、groupdel、groupmod等命令管理用户组。 - 使用
chown、chgrp、chmod等命令管理文件和目录权限。
- 使用
-
进程管理
- 使用
ps、top、htop等命令查看进程状态。 - 使用
kill、pkill等命令终止进程。
- 使用
-
系统监控
- 使用
uptime、w、who、last等命令查看系统负载和登录用户。 - 使用
free查看内存使用情况。 - 使用
df查看磁盘空间使用情况。 - 使用
du查看目录或文件大小。 - 使用
ifconfig或ip查看网络接口状态。 - 使用
ping、netstat或ss测试网络连接。
- 使用
-
软件包管理
- 使用发行版的软件包管理工具(如
apt、yum、dnf、pacman)安装、更新、卸载软件包。
- 使用发行版的软件包管理工具(如
-
定时任务
- 使用
crontab命令设置定时任务。
- 使用
-
日志管理
- 查看系统日志(通常位于
/var/log目录下)。 - 使用
journalctl命令查看 systemd 日志(如果系统使用 systemd)。
- 查看系统日志(通常位于
-
远程登录
- 使用
ssh命令远程登录到其他 Linux 系统。
- 使用
-
Shell 脚本
- 编写简单的 Shell 脚本,自动化常用任务。
第四部分:进阶主题
-
Shell 脚本编程
- 变量、条件语句、循环语句、函数等。
- 常用 Shell 脚本示例:
- 备份文件:
#!/bin/bash # 设置备份目录和目标目录 BACKUP_DIR="/path/to/backup" TARGET_DIR="/path/to/target" # 创建备份目录(如果不存在) mkdir -p "$BACKUP_DIR" # 备份文件 tar -czvf "$BACKUP_DIR/backup_$(date +%Y%m%d_%H%M%S).tar.gz" "$TARGET_DIR" echo "Backup completed." - 批量重命名文件:
#!/bin/bash # 设置目录和文件名模式 DIR="/path/to/files" PATTERN="*.txt" # 循环处理文件 for FILE in "$DIR/$PATTERN"; do # 提取文件名和扩展名 FILENAME=$(basename "$FILE") EXTENSION="${FILENAME##*.}" BASENAME="${FILENAME%.*}" # 生成新的文件名 NEW_FILENAME="${BASENAME}_new.$EXTENSION" # 重命名文件 mv "$FILE" "$DIR/$NEW_FILENAME" done echo "Rename completed."
- 备份文件:
-
网络配置
- 静态 IP 地址配置。
- DNS 服务器配置。
- 防火墙配置(如
iptables、firewalld)。
-
服务管理
- 使用
systemctl(systemd)或service(SysVinit)管理服务。 - 常见服务配置(如 SSH、Web 服务器、数据库服务器)。
- 使用
-
磁盘管理
- 分区、格式化、挂载。
- LVM(逻辑卷管理)。
- RAID(磁盘阵列)。
-
安全加固
- SSH 安全配置。
- 防火墙配置。
- SELinux 或 AppArmor 配置。
- 入侵检测系统(IDS)。
-
虚拟化和容器
- KVM、VirtualBox 等虚拟化技术。
- Docker、Podman 等容器技术。
学习资源
- 在线文档:
- The Linux Documentation Project (TLDP): www.tldp.org/
- Arch Wiki: wiki.archlinux.org/
- 各发行版官方文档。
- 书籍:
- 《Linux 命令行与 Shell 脚本编程大全》(The Linux Command Line)
- 《UNIX 环境高级编程》(Advanced Programming in the UNIX Environment)
- 社区论坛:
- Stack Overflow、Reddit 上的 Linux 相关板块。
- 各发行版官方论坛。
总结
这是一套完整的 Linux 教程,涵盖了从基础知识到日常使用及运维管理的各个方面。请根据你的实际需求和学习进度,逐步学习和实践这些内容。记住,实践是掌握 Linux 的关键。