Linux 进阶实战教程
本教程深入讲解 Linux 系统管理的核心技能,包括权限管理、进程控制、网络配置、软件包管理以及 Shell 脚本基础。
1. 用户与权限管理
Linux 是多用户系统,权限控制至关重要。
1.1 文件权限 (chmod)
使用 ls -l 可以查看权限,如 -rwxr-xr--。
- r (Read): 读权限 (4)
- w (Write): 写权限 (2)
- x (Execute): 执行权限 (1)
| 命令 | 用途 | 示例 |
|---|---|---|
chmod |
修改文件权限 | chmod 755 script.sh (所有者 rwx,组 rx,其他人 rx) |
chmod |
符号模式修改 | chmod +x script.sh (添加执行权限) |
1.2 所有者管理 (chown)
| 命令 | 用途 | 示例 |
|---|---|---|
chown |
修改所有者和所属组 | chown user:group file.txt |
sudo |
以管理员身份执行 | sudo apt update |
2. 进程管理
监控系统运行状态,管理后台服务。
| 命令 | 用途 | 示例 |
|---|---|---|
ps |
查看当前进程快照 | ps aux (显示所有用户的进程) |
top / htop |
实时查看系统资源与进程 | 直接输入 top |
kill |
终止进程 | kill 1234 (结束 PID 为 1234 的进程) |
kill -9 |
强制终止进程 | kill -9 1234 (慎用) |
Systemd 服务管理
现代 Linux 发行版大多使用 Systemd 管理后台服务。
# 启动服务
sudo systemctl start nginx
# 停止服务
sudo systemctl stop nginx
# 设置开机自启
sudo systemctl enable nginx
# 查看状态
systemctl status nginx
3. 网络管理
| 命令 | 用途 | 示例 |
|---|---|---|
ip |
查看网卡与 IP 信息 | ip addr (替代老的 ifconfig) |
ping |
测试网络连通性 | ping google.com |
netstat / ss |
查看端口占用情况 | ss -tuln (查看监听的 TCP/UDP 端口) |
curl |
发送 HTTP 请求 | curl -I https://www.google.com (查看响应头) |
ssh |
远程登录 | ssh user@192.168.1.10 |
4. 磁盘与文件系统
| 命令 | 用途 | 示例 |
|---|---|---|
df |
查看磁盘空间使用量 | df -h (以易读格式显示,如 GB/MB) |
du |
查看目录占用空间 | du -sh ./node_modules (查看该目录总大小) |
tar |
归档与解压 | tar -czvf archive.tar.gz ./dir (压缩)tar -xzvf archive.tar.gz (解压) |
5. 软件包管理
不同的 Linux 发行版使用不同的包管理器。
Debian / Ubuntu (apt)
sudo apt update # 更新软件源列表
sudo apt install vim # 安装软件
sudo apt remove vim # 卸载软件
sudo apt upgrade # 升级所有已安装软件
CentOS / RHEL (yum/dnf)
sudo yum install vim
sudo yum update
6. 输入输出重定向与管道
Linux 的强大之处在于可以将命令组合使用。
6.1 重定向 (>, >>)
>: 覆盖输出到文件>>: 追加输出到文件
echo "Hello World" > hello.txt # 创建/覆盖文件
date >> hello.txt # 追加时间到文件末尾
6.2 管道 (|)
将上一个命令的输出作为下一个命令的输入。
# 查找进程名为 nginx 的进程
ps aux | grep nginx
# 统计当前目录下文件的数量
ls | wc -l
7. 简单的 Shell 脚本
Shell 脚本可以将一系列命令自动化执行。创建 backup.sh:
#!/bin/bash
# 定义变量
BACKUP_DIR="/var/backups"
DATE=$(date +%Y%m%d)
echo "开始备份..."
# 创建备份目录(如果不存在)
mkdir -p $BACKUP_DIR
# 打包 logs 目录
tar -czf $BACKUP_DIR/logs-$DATE.tar.gz /var/log
echo "备份完成!文件位置: $BACKUP_DIR/logs-$DATE.tar.gz"
运行脚本:
chmod +x backup.sh
./backup.sh