Debian / Linux 常用命令行速查

这份速查表整理了 Debian 日常维护最常用的命令行操作,并标明 root / sudo 的使用场景,适合快速上手与日常查阅。


使用约定

  • root 表示当前已切换到 root(提示符 #),sudo 表示普通用户前缀 sudo
  • 文中写成 sudo / root 的命令,普通用户使用 sudo,root 可直接执行。
  • 所有命令默认在 /bin/bash 环境执行;如涉及其它 shell 会额外说明。

0. 用户身份与权限管理

0.1 查看身份

1
2
$ whoami                  # 当前登录用户
$ id # 用户 UID/GID 与组信息

0.2 切换到 root

1
2
3
4
$ sudo -i                 # 推荐:root login shell
$ sudo -s # root 交互 shell(保留部分环境变量)
$ sudo su - # 不推荐的 su 叠加写法
$ su - # 使用 root 密码切换(默认可能未启用)

如需启用 root 密码,可执行 sudo passwd root(注意存在安全风险)。

0.3 以其他用户执行

1
2
3
$ sudo -u www-data command        # 以 www-data 身份执行
$ sudo -E VAR=value command # 保留环境变量(受 sudoers secure_path 影响)
$ sudoedit /etc/nginx/nginx.conf # 安全编辑 root 级别文件

1. 帮助系统

1
2
3
4
5
6
$ command --help          # 命令自带帮助
$ man command # 联机手册(/ 搜索,q 退出)
$ info command # GNU info 文档
$ apropos keyword # 按关键词查 man(等价 man -k)
$ type command # 判断内建 / 外部命令 / 别名
$ which command # 命令所在路径

2. 软件包管理(APT / dpkg)

适用于 Debian 10/11/12;apt 面向交互,apt-get 更适合脚本。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
sudo / root apt update                      # 同步索引
sudo / root apt upgrade # 常规升级
sudo / root apt full-upgrade # 允许安装/移除依赖的升级
sudo / root apt install pkg1 pkg2 # 安装软件包
sudo / root apt install pkg=version # 指定版本
sudo / root apt remove pkg # 卸载保留配置
sudo / root apt purge pkg # 卸载并移除配置
sudo / root apt autoremove # 清理孤儿依赖
sudo / root apt list --upgradable # 查看可升级包
sudo / root apt search keyword # 搜索包名称/描述
sudo / root apt show pkg # 包详情
sudo / root apt policy pkg # 候选版本与仓库
sudo / root apt-mark hold pkg # 锁定版本
sudo / root apt-mark unhold pkg # 取消锁定

sudo / root dpkg -i ./file.deb # 安装本地 deb
sudo / root dpkg -L pkg # 查看包安装的文件
sudo / root dpkg -S /path/file # 查文件属于哪个包

sudo / root apt clean && apt autoclean # 清理缓存

搜索未安装包的文件可使用 apt-file

1
2
3
sudo / root apt install apt-file
sudo / root apt-file update
$ apt-file search bin/nmap

3. 文件与目录操作

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
$ pwd                                # 当前目录
$ ls -lah # 列出含隐藏文件
$ tree -L 2 # 树形查看需先 apt install tree
$ cd - # 返回上一个目录

sudo / root mkdir -p /opt/app/log # 递归建目录
sudo / root cp -a src/ dst/ # 保留属性复制
sudo / root mv -i a b # 带确认的移动/重命名
sudo / root rm -rf /path # 谨慎:递归删除

$ stat file # 查看详细属性
sudo / root ln -s /real target # 创建软链
$ touch file # 新建或更新时间戳

sudo / root chmod 640 file # 修改权限(数字/符号均可)
sudo / root chmod -R u=rwX,g=rX dir
sudo / root chown user:group file # 修改所有者
sudo / root chgrp group file # 修改所属组

3.1 文本查阅

1
2
3
4
5
6
7
$ cat file                           # 输出文件
$ tac file # 逆序输出
$ head -n 20 file # 前 20 行
$ tail -f /var/log/syslog # 追踪日志
$ less file # 分屏查看(/ 搜索)
$ sed -n '10,20p' file # 打印指定行
$ diff -u file1 file2 # 比较差异

3.2 搜索与替换

1
2
3
4
5
6
7
8
9
$ find /etc -maxdepth 1 -type f      # 查找文件
$ find . -name "*.log" -size +10M # 条件组合
$ locate nginx.conf # 需先 sudo updatedb
$ grep -R "pattern" /var/log # 递归文本搜索
$ grep -R --binary-files=without-match \
--color "ERROR" /var/log/nginx # 常用参数示例
$ sed -i 's/foo/bar/g' file # 原地替换
$ awk '{print $1,$NF}' file # awk 取字段
$ xargs -0 rm < list.txt # 配合 -print0 的安全删除

4. 压缩与归档

1
2
3
4
5
6
sudo / root tar -czvf backup.tar.gz dir/    # 创建压缩包
sudo / root tar -xzvf backup.tar.gz # 解包
$ zip -r archive.zip dir/ # ZIP 打包
$ unzip archive.zip -d ./out # 解压到 out
$ gzip file && gunzip file.gz # gzip 压缩/解压
$ xz -z file && xz -d file.xz # xz 压缩/解压

5. 进程与系统资源

1
2
3
4
5
6
7
8
9
10
11
$ top                                      # 实时资源
$ htop # 需 sudo apt install htop
$ ps aux | grep nginx # 查看进程
sudo / root systemctl status nginx # 服务状态
sudo / root systemctl restart nginx # 重启服务
sudo / root systemctl enable nginx # 开机自启

$ pidof process # 获取进程 PID
sudo / root kill -SIGTERM PID # 发送信号
sudo / root kill -9 PID # 强制结束
sudo / root renice -n -5 -p PID # 调整优先级

5.1 系统资源监控

1
2
3
4
5
6
$ free -h                                  # 内存
$ vmstat 1 5 # 虚拟内存统计
$ iostat -xz 1 # IO 统计(需 sysstat)
$ mpstat 1 # CPU 使用率
$ uptime # 系统运行时长
$ dmesg -T | tail # 内核消息

6. 服务与启动项(systemd)

1
2
3
4
5
6
7
8
9
sudo / root systemctl list-units --type=service     # 列出服务
sudo / root systemctl enable name # 启用开机自启
sudo / root systemctl disable name # 禁用开机自启
sudo / root systemctl start name # 启动服务
sudo / root systemctl stop name # 停止服务
sudo / root systemctl reload name # 重新加载配置
sudo / root systemctl status name # 查看状态
sudo / root journalctl -u name -f # 实时日志
sudo / root journalctl -u name --since "1 hour ago" # 指定时间日志

6.1 定时任务

1
2
3
4
5
$ crontab -e                                     # 当前用户 cron
$ sudo crontab -e # root cron
$ crontab -l # 列出任务
sudo / root systemctl list-timers # systemd 定时任务
sudo / root systemctl status timer-name.timer # 定时器状态

7. 系统信息与内核

1
2
3
4
5
6
7
8
9
10
11
12
$ uname -a                          # 内核版本
$ lsb_release -a # 发行版信息(需 lsb-release)
$ hostnamectl # 主机名与硬件概要
$ cat /etc/os-release # OS 描述
$ df -h # 磁盘使用(单位 B)
$ du -h --max-depth=1 /var # 目录占用
$ lsblk # 块设备
$ blkid # 块设备 UUID
sudo / root fdisk -l # 分区表
$ lscpu # CPU 信息
$ free -m # 内存
$ sensors # 温度(lm-sensors)

8. 网络与防火墙

1
2
3
4
5
6
7
8
9
$ ip addr show                      # IP 地址
$ ip route # 路由表
$ ip -s link # 接口统计
$ ss -ltnp # 监听端口
$ ss -putona # 连接详情
$ dig example.com +short # DNS 解析
$ nslookup example.com # nslookup
$ curl -I https://example.com # HTTP 头
$ wget -c URL # 断点续传下载

8.1 连接排查

1
2
3
4
5
$ ping -c 4 1.1.1.1                 # 连通性
$ traceroute example.com # 路由追踪(需安装)
$ mtr -rw example.com # 交互追踪(需安装 mtr)
$ nc -vz host port # 探测端口(netcat)
sudo / root tcpdump -i eth0 port 80 # 抓包分析

8.2 防火墙(ufw / iptables 示例)

1
2
3
4
5
6
7
8
sudo / root ufw status
sudo / root ufw allow 22/tcp
sudo / root ufw delete allow 22/tcp
sudo / root ufw enable

sudo / root iptables -L -n -v # 查看规则
sudo / root iptables -A INPUT -p tcp --dport 22 -j ACCEPT
sudo / root iptables -A INPUT -j DROP

9. 存储、挂载与备份

1
2
3
4
5
6
7
sudo / root mount /dev/sdb1 /mnt/data         # 挂载
sudo / root umount /mnt/data # 卸载
$ lsblk -f # 查看设备与挂载点
sudo / root nano /etc/fstab # 配置开机挂载
sudo / root mount -a # 验证 fstab
sudo / root rsync -avz src/ dest/ # 同步目录
sudo / root rsync -av --delete src/ dest/ # 保持镜像

9.1 LVM(简要)

1
2
3
4
sudo / root pvcreate /dev/sdb
sudo / root vgcreate vgdata /dev/sdb
sudo / root lvcreate -L 20G -n lvbackup vgdata
sudo / root mkfs.ext4 /dev/vgdata/lvbackup

10. 日志与故障排查

1
2
3
4
5
6
7
8
9
10
11
sudo / root journalctl -xe                     # 最新系统日志
sudo / root journalctl --since "2025-11-01" # 指定时间范围
$ tail -f /var/log/syslog # 通用系统日志
$ tail -f /var/log/auth.log # 认证日志
$ less /var/log/nginx/error.log # 服务日志
sudo / root strace -p PID # 追踪调用
sudo / root lsof -i :80 # 查看端口进程
sudo / root lsof /path/file # 查看文件被谁占用
$ dmesg -T | grep -i error # 内核错误
$ last -n 10 # 登录历史
$ lastb -n 10 # 失败登录(需 root)

11. 安全与权限建议

  • 使用 sudo -i 获取 root 会话,完毕后及时 exit
  • 编辑系统文件优先 sudoedit,避免直接 sudo nano 遗留 root 所有权。
  • chmod / chown 操作时,先用 -R 谨慎范围,推荐测试后再递归。
  • 配置 SSH:sudo nano /etc/ssh/sshd_config → 禁止 root 远程登录、使用密钥认证。
  • 定期审计 sudo 日志:sudo cat /var/log/auth.log | grep sudo.

12. 常见小脚本

1
2
3
4
5
6
7
8
9
10
11
# 每日打包 /var/www 并保留 7 天
sudo / root bash -c 'tar -czf /backup/www-$(date +%F).tar.gz /var/www'
sudo / root find /backup -name "www-*.tar.gz" -mtime +7 -delete

# 快速查看占用最大的目录
sudo / root du -h /var | sort -hr | head -n 20

# 检查服务是否监听端口并返回状态码
url="https://tz.202221.xyz"
code=$(curl -ks -o /dev/null -w "%{http_code}" "$url")
printf "HTTP %s -> %s\n" "$code" "$url"

延伸阅读

建议将本文保存到团队 Wiki 或打印成小册,方便在服务器环境下快速查阅。