Linux 实战指南

FreeGuideOnline 最新 2026-07-15

bash pwd # 显示当前工作目录 ls # 列出目录内容 ls -la # 显示包括隐藏文件在内的详细信息 cd /path # 切换目录,cd ~ 回到用户主目录,cd - 回到上次目录


### 文件和目录管理

```bash
touch file.txt         # 创建空文件或更新文件时间戳
mkdir dir              # 创建目录
mkdir -p a/b/c         # 递归创建多级目录
cp source dest         # 复制文件
cp -r sourcedir dest   # 递归复制目录
mv oldname newname     # 移动/重命名文件或目录
rm file                # 删除文件(不可恢复)
rm -r dir              # 递归删除目录及其内容
rm -rf dir             # 强制递归删除(谨慎使用)

查看文件内容

cat file               # 一次性输出全部内容
less file              # 分页浏览,按 / 搜索,q 退出
head -n 20 file        # 查看前20行
tail -f file           # 实时追踪文件新增内容(常用于日志)

文件权限与用户管理

理解 Linux 文件权限

使用 ls -l 可看到类似 -rwxr-xr-- 的权限标识:

  • 第一位:文件类型(- 文件,d 目录,l 符号链接)
  • 后九位:每三位为一组,分别表示拥有者所属组其他用户的读(r)、写(w)、执行(x)权限

修改权限与归属

chmod 755 script.sh    # 数字方式:拥有者读写执行,组及其他读执行
chmod u+x file         # 符号方式:给拥有者增加执行权限
chown user:group file  # 修改文件的拥有者和所属组
chown -R user:group dir # 递归修改目录下所有文件

用户与组管理

useradd -m newuser     # 创建用户并自动创建家目录
passwd newuser         # 为用户设置密码
usermod -aG sudo newuser  # 将用户加入 sudo 组(赋予管理员权限)
groupadd devgroup      # 创建组
gpasswd -a user devgroup # 将用户加入组

进程与服务管理

查看进程

ps aux                 # 列出所有进程详细信息
ps -ef | grep nginx    # 查找特定进程
top                    # 动态实时监控系统进程与资源
htop                   # top 的增强版(需安装)

管理进程

kill PID               # 优雅结束进程
kill -9 PID            # 强制杀死进程
pkill processname      # 按名称杀死进程
bg                     # 将暂停的作业放入后台
fg                     # 将后台作业调至前台
jobs                   # 查看当前会话的后台作业

使用 systemd 管理服务

现代 Linux 发行版大多使用 systemd 管理系统服务。

systemctl status nginx   # 查看服务状态
systemctl start nginx    # 启动服务
systemctl stop nginx     # 停止服务
systemctl restart nginx  # 重启服务
systemctl enable nginx   # 设置开机自启
systemctl disable nginx  # 取消开机自启

网络配置与诊断

基础网络命令

ip addr                # 查看网络接口及 IP 地址(替代旧 ifconfig)
ip route               # 查看路由表
ping -c 4 google.com   # 测试连通性,发送4个包后停止
ss -tulnp              # 查看监听的 TCP/UDP 端口及对应进程
curl -I https://example.com  # 获取 HTTP 响应头
wget https://file.url # 下载文件

网络故障排查思路

  1. 检查网卡状态ip link show 查看接口是否 UP
  2. 检查 IP 配置ip addr 确认 IP 是否分配正确
  3. 检查路由ip route 确认默认网关可达
  4. DNS 解析测试nslookup baidu.comdig baidu.com
  5. 端口连通性telnet IP 端口nc -vz IP 端口

防火墙简单设定(firewalld)

CentOS 7+ 常用 firewalld 管理防火墙:

firewall-cmd --state                  # 查看防火墙状态
firewall-cmd --list-all               # 列出当前区域所有规则
firewall-cmd --add-port=80/tcp --permanent  # 永久开放 80 端口
firewall-cmd --reload                 # 重载规则使其生效

软件包与更新管理

不同发行版包管理器不同,这里以 Debian/Ubuntu(apt)、RHEL/CentOS(yum/dnf)为例。

Debian/Ubuntu 系的 apt

apt update                  # 更新软件包列表
apt upgrade                 # 升级所有可升级的包
apt install packagename     # 安装软件包
apt remove packagename      # 卸载软件包
apt purge packagename       # 卸载并删除配置文件
apt search keyword          # 搜索软件包

RHEL/CentOS 系的 yum/dnf

yum update                  # 更新所有包(CentOS 7)
dnf update                  # 更新所有包(RHEL 8+/CentOS 8)
yum install packagename     # 安装软件
yum remove packagename      # 卸载软件
yum search keyword          # 搜索

源码编译安装

部分自定义软件需通过源码编译:

tar -xzf software.tar.gz
cd software
./configure --prefix=/usr/local/software
make -j$(nproc)
sudo make install

Shell 编程入门与自动化

编写简单脚本

创建一个文件 hello.sh

#!/bin/bash
echo "Hello, $USER"
echo "Current date: $(date)"

赋予执行权限:chmod +x hello.sh
运行:./hello.sh

批量重命名实例

实战:将当前目录下 .txt 文件后缀改为 .md

#!/bin/bash
for file in *.txt; do
    mv "$file" "${file%.txt}.md"
done

定时任务 crontab

crontab -e               # 编辑当前用户的任务表
# 格式:分 时 日 月 周 命令
# 每天凌晨 2:30 执行备份脚本
30 2 * * * /home/user/backup.sh
crontab -l               # 查看已设置的任务

常用实战技巧

查找与处理文件

find /var/log -name "*.log" -mtime +7 -exec rm {} \;  # 删除7天前的日志文件
grep -r "ERROR" /var/log/app.log                       # 递归搜索文件中的错误信息
locate filename                                        # 快速按名称定位文件(需要 updatedb)

磁盘与存储

df -h                     # 查看磁盘分区使用情况
du -sh *                  # 统计当前目录下各文件/目录大小
fdisk -l                  # 列出所有磁盘和分区
mount /dev/sdb1 /mnt/data # 挂载分区

压缩与归档

tar -czvf archive.tar.gz /path/to/dir   # 打包并 gzip 压缩
tar -xzvf archive.tar.gz                # 解压到当前目录
zip -r backup.zip /data                 # 创建 zip 包
unzip backup.zip                        # 解压 zip 包