返回首页

Linux 进阶实战教程

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