Linux 基础:从入门到实践1. 引言1.1 什么是 Linux 操作系统?Linux 是一种自由和开放源码的类 Unix 操作系统。它以其稳定性、安全性、灵活性和强大的命令行工具而闻名,广泛应用于服务器、嵌入式设备、超级计算机以及个人桌面。1.2 Linux 的发展历程与特点Linux 最初由 Linus Torvalds 于 1991 年创建。其特点包括:开源免费:任何人都可以自由使用、修改和分发。高度可定制:用户可以根据需求定制系统。多用户多任务:支持同时运行多个用户和多个程序。安全性高:完善的用户权限管理和社区支持。稳定性强:适合长时间运行,不易崩溃。1.3 Linux 发行版介绍Linux 有众多发行版,常见的包括:Ubuntu:用户友好,社区活跃,适合桌面和服务器。CentOS/RHEL:企业级应用,稳定性高,常用于服务器。Debian:稳定且免费,是 Ubuntu 的上游。Fedora:Red Hat 的社区版,提供最新技术。Arch Linux:滚动更新,高度定制,适合高级用户。2. Linux 安装与首次设置2.1 系统要求根据不同的 Linux 发行版,系统要求会有所不同。通常需要至少 2GB 内存、20GB 硬盘空间和双核处理器。2.2 制作启动盘下载 Linux 发行版的 ISO 镜像文件,使用工具 (如 Rufus, Etcher) 将其写入 USB 启动盘。2.3 安装过程详解从启动盘启动电脑。选择“安装”或“Try Ubuntu” (以 Ubuntu 为例)。选择语言、键盘布局。选择安装类型 (如“清除整个磁盘并安装 Ubuntu”或“其他选项”进行手动分区)。设置时区、创建用户账户和密码。等待安装完成,重启电脑。2.4 首次启动与基本配置安装完成后,首次登录系统,可以进行以下基本配置:更新系统:`sudo apt update && sudo apt upgrade` (Ubuntu/Debian)安装常用软件:浏览器、文本编辑器等。配置网络:确保网络连接正常。3. Linux 命令行基础3.1 终端与 Shell终端 (Terminal):一个输入和输出文本的界面。Shell:一个命令行解释器,接收用户命令并执行 (如 Bash, Zsh)。3.2 常用命令介绍`ls`:列出目录内容 (`ls -l` 显示详细信息,`ls -a` 显示隐藏文件)。`cd`:改变目录 (`cd ..` 返回上一级,`cd ~` 返回家目录)。`pwd`:显示当前工作目录。`mkdir`:创建目录 (`mkdir -p a/b/c` 创建多级目录)。`rm`:删除文件或目录 (`rm file.txt`, `rm -r dir/` 删除目录)。`cp`:复制文件或目录 (`cp file.txt newfile.txt`, `cp -r dir/ newdir/` 复制目录)。`mv`:移动或重命名文件或目录 (`mv file.txt /tmp/`, `mv oldname.txt newname.txt`)。3.3 文件查看命令`cat`:连接文件并打印到标准输出 (`cat file.txt`)。`more`:逐页显示文件内容。`less`:与 `more` 类似,但可以向前或向后滚动。`head`:显示文件开头几行 (`head -n 5 file.txt`)。`tail`:显示文件末尾几行 (`tail -n 5 file.txt`, `tail -f file.log` 实时查看日志)。3.4 管道与重定向 *管道 (``):将一个命令的输出作为另一个命令的输入 (`ls -lgrep .txt`)。重定向 (`>`):将命令输出写入文件 (覆盖) (`ls > filelist.txt`)。重定向 (`>>`):将命令输出追加到文件末尾 (`echo "hello" >> file.txt`)。4. Linux 文件系统4.1 文件系统层次结构标准 (FHS)Linux 文件系统遵循 FHS 标准,规定了系统各目录的用途。4.2 常见目录作用`/`:根目录,所有文件和目录的起点。`/bin`:存放基本用户命令。`/etc`:存放系统配置文件。`/home`:用户家目录。`/var`:存放经常变化的文件,如日志、邮件。`/usr`:存放用户程序和数据。`/opt`:可选的第三方应用程序。`/tmp`:临时文件。4.3 文件类型`-`:普通文件`d`:目录`l`:链接文件 (软链接/硬链接)`b`:块设备文件`c`:字符设备文件`p`:管道文件`s`:套接字文件4.4 挂载与卸载文件系统`mount`:将文件系统挂载到指定目录 (`mount /dev/sdb1 /mnt/usb`)。`umount`:卸载文件系统 (`umount /mnt/usb`)。5. 用户与权限管理5.1 用户与组的概念用户 (User):系统中的每个用户都有一个唯一的 ID (UID)。组 (Group):一组用户的集合,每个组有一个唯一的 ID (GID)。用户可以属于一个或多个组。5.2 用户管理命令`useradd`:创建新用户 (`useradd -m username`)。`passwd`:设置用户密码 (`passwd username`)。`usermod`:修改用户属性 (`usermod -aG groupname username` 将用户添加到组)。`userdel`:删除用户 (`userdel -r username` 同时删除家目录)。5.3 组管理命令`groupadd`:创建新组 (`groupadd groupname`)。`groupmod`:修改组属性。`groupdel`:删除组。5.4 文件权限文件权限分为读 (r)、写 (w)、执行 (x),分别对应数字 4、2、1。权限分为三组:所有者 (u)、所属组 (g)、其他人 (o)。`chmod`:修改文件权限 (`chmod 755 file.sh`)`chown`:修改文件所有者 (`chown user:group file.txt`)`chgrp`:修改文件所属组 (`chgrp groupname file.txt`)5.5 `sudo` 命令的使用`sudo` (superuser do) 允许授权用户以超级用户或其他用户的身份执行命令。首次使用需要输入当前用户密码。6. 软件包管理6.1 Debian 系 (APT) 软件包管理适用于 Ubuntu, Debian 等发行版。`sudo apt update`:更新软件包列表。`sudo apt install package_name`:安装软件包。`sudo apt remove package_name`:卸载软件包。`sudo apt upgrade`:升级所有可升级的软件包。6.2 Red Hat 系 (YUM/DNF) 软件包管理适用于 CentOS, Fedora, RHEL 等发行版。`sudo yum update` 或 `sudo dnf update`:更新软件包列表。`sudo yum install package_name` 或 `sudo dnf install package_name`:安装软件包。`sudo yum remove package_name` 或 `sudo dnf remove package_name`:卸载软件包。6.3 编译安装软件基础对于没有提供预编译包的软件,通常需要从源代码编译安装:下载源代码包。解压:`tar -zxvf package.tar.gz`。进入目录:`cd package/`。配置:`./configure`。编译:`make`。安装:`sudo make install`。7. 进程管理7.1 查看进程`ps aux`:显示所有进程的详细信息。`top`:实时显示系统进程和资源使用情况。`htop`:`top` 的增强版,提供更友好的界面。7.2 杀死进程`kill PID`:终止指定 PID 的进程 (`kill 9 PID` 强制终止)。`killall process_name`:终止指定名称的所有进程。7.3 后台运行进程`command &`:将命令放到后台运行。`nohup command &`:即使关闭终端,命令也会继续在后台运行。7.4 计划任务 (`cron`)`cron` 用于在指定时间执行重复性任务。`crontab -e`:编辑当前用户的 cron 任务。`crontab -l`:列出当前用户的 cron 任务。8. 网络配置8.1 查看网络信息`ifconfig` (旧版) 或 `ip addr` (新版):显示网络接口配置信息 (IP 地址、MAC 地址等)。8.2 网络连通性测试`ping hostname/IP`:测试网络连通性。`traceroute hostname/IP`:跟踪数据包到达目标主机的路径。8.3 配置网络接口通常通过编辑网络配置文件 (如 `/etc/netplan/*.yaml` for Ubuntu, `/etc/sysconfig/network-scripts/ifcfg-eth0` for CentOS) 或使用网络管理工具 (如 `nmcli`, `nmtui`) 来配置静态 IP 或 DHCP。8.4 防火墙基础ufw (Uncomplicated Firewall):Ubuntu 默认防火墙,易于使用 (`sudo ufw enable`, `sudo ufw allow 80/tcp`)。firewalld:CentOS/RHEL 默认防火墙 (`sudo systemctl start firewalld`, `sudo firewall-cmd --add-service=http --permanent`)。9. Shell 脚本基础9.1 Shell 脚本的编写与执行创建文件,以 `.sh` 结尾 (如 `script.sh`)。第一行指定解释器:`#!/bin/bash`。添加执行权限:`chmod +x script.sh`。执行脚本:`./script.sh`。9.2 变量与数据类型定义变量:`name="Linux"`。使用变量:`echo "Hello, $name"`。9.3 条件判断`if` 语句: if [ -f "file.txt" ]; then echo "file.txt exists." fi `case` 语句: case "$1" in start) echo "Starting..." ;; stop) echo "Stopping..." ;; *) echo "Usage: $0 {start|stop}" ;; esac 9.4 循环`for` 循环: for i in 1 2 3; do echo "Number: $i" done `while` 循环: count=1 while [ $count -le 3 ]; do echo "Count: $count" count=$((count + 1)) done 9.5 函数function greet() { echo "Hello, $1" } greet "World" 10. 实践案例10.1 搭建一个简单的 Web 服务器 (Nginx/Apache)以 Nginx 为例:安装 Nginx:`sudo apt install nginx`。启动 Nginx:`sudo systemctl start nginx`。在浏览器中访问服务器 IP 地址,应能看到 Nginx 欢迎页面。10.2 编写一个备份脚本创建一个 `backup.sh` 文件:#!/bin/bash SOURCE_DIR="/home/user/documents" BACKUP_DIR="/mnt/backup" DATE=$(date +%Y%m%d_%H%M%S) tar -zcvf "$BACKUP_DIR/documents_backup_$DATE.tar.gz" "$SOURCE_DIR" echo "Backup completed: $BACKUP_DIR/documents_backup_$DATE.tar.gz" 添加执行权限并运行。10.3 监控系统资源使用使用 `top` 或 `htop` 命令实时监控 CPU、内存、进程等。也可以使用 `free -h` 查看内存使用,`df -h` 查看磁盘空间。11. 总结与展望Linux 操作系统以其强大的功能和灵活性,在各个领域都扮演着重要角色。掌握 Linux 基础知识是成为一名优秀开发者或系统管理员的必备技能。11.1 Linux 的应用领域服务器:Web 服务器、数据库服务器、文件服务器等。云计算:Docker, Kubernetes 等容器技术的基础。嵌入式设备:路由器、智能家居设备等。科学计算与大数据:高性能计算集群。桌面环境:提供多样化的桌面体验。11.2 学习路径建议持续实践:多动手操作,熟悉命令行。深入学习 Shell 脚本:提高自动化能力。了解不同发行版:根据需求选择合适的发行版。参与开源社区:获取帮助和贡献力量。学习网络与安全:掌握 Linux 系统下的网络配置和安全防护。

发表评论 取消回复