Linux 命令速查
按用途分组的常用命令表,每条带一个能直接跑的例子。选项只列真正用得上的,记不住时来搜一下就行。
显示 153 / 153 条命令
分类说明
| 分类 | 条数 | 包含什么 |
|---|---|---|
| 文件与目录 | 16 | 查看、复制、移动、删除这类最基本的操作 |
| 查找与文本处理 | 18 | 找文件、搜内容,以及 sed / awk 这些文本流水线工具 |
| 权限与用户 | 15 | 权限位、属主属组、ACL 和账号管理 |
| 进程与监控 | 15 | 看进程、发信号、查资源占用和系统调用 |
| 网络 | 16 | 网卡、端口、DNS、HTTP 请求和抓包 |
| 磁盘 | 14 | 容量、分区、挂载和块设备操作 |
| 压缩解压 | 13 | tar、zip、gzip、zstd 等归档格式 |
| 包管理 | 16 | 各发行版和语言生态的包管理器 |
| 系统信息 | 16 | 内核、硬件、时间、日志和内核参数 |
| systemd 与服务 | 14 | 服务的启停、开机自启和日志排查 |
命令清单
| 命令 | 作用 | 常用选项 | 示例 | 复制 |
|---|---|---|---|---|
| ls | 列出目录内容 | -l 长格式,-a 含隐藏文件,-h 人类可读大小,-t 按时间排,-S 按大小排,-R 递归 | ls -laht /var/log | |
| cd | 切换当前目录 | - 回到上一个目录,~ 回家目录,.. 上一级 | cd - | |
| pwd | 显示当前所在目录 | -P 解析符号链接显示真实路径 | pwd -P | |
| cp | 复制文件或目录 | -r 递归目录,-a 保留权限与时间戳,-u 只复制更新的,-v 显示过程,-n 不覆盖已存在 | cp -a /etc/nginx /backup/nginx-$(date +%F) | |
| mv | 移动文件或改名 | -i 覆盖前询问,-n 不覆盖,-v 显示过程,-f 强制 | mv app.log app.log.1 | |
| rm | 删除文件或目录 注意:rm -rf 不做确认也不进回收站,删错就是永久丢失。执行前先用 ls 确认目标,脚本里把变量加引号并校验非空(如 ${DIR:?})。 | -r 递归删目录,-f 不询问,-i 逐个确认,-d 删空目录 | rm -rf ./dist | |
| mkdir | 创建目录 | -p 递归创建并忽略已存在,-m 同时指定权限 | mkdir -p /srv/app/{logs,cache,data} | |
| rmdir | 删除空目录 | -p 连同变空的父目录一起删 | rmdir -p a/b/c | |
| touch | 创建空文件或更新时间戳 | -t 指定时间戳,-a 只改访问时间,-m 只改修改时间,-c 文件不存在时不创建 | touch -t 202601010000 release.lock | |
| ln | 创建硬链接或软链接 | -s 软链接,-f 覆盖已存在,-n 目标为目录链接时不跟随,-r 生成相对路径软链接 | ln -sfn /opt/app/releases/2026-01 /opt/app/current | |
| stat | 查看文件的详细元信息 | -c 自定义输出格式,-f 显示所在文件系统信息,-L 跟随软链接 | stat -c '%n %s 字节 权限%a 改动%y' app.jar | |
| file | 按文件头判断文件真实类型 | -i 输出 MIME 类型,-b 省略文件名,-z 探测压缩文件内部 | file -i photo.png | |
| tree | 树形展示目录结构 | -L 限制层级,-a 含隐藏文件,-d 只显示目录,-I 排除匹配项 | tree -L 2 -I node_modules | |
| basename | 取路径中的文件名部分 | -s 同时去掉指定后缀,-a 处理多个参数 | basename /srv/data/report.csv .csv | |
| dirname | 取路径中的目录部分 | -z 用 NUL 分隔输出 | dirname /srv/data/report.csv | |
| realpath | 把路径解析成规范的绝对路径 | -e 要求路径必须存在,--relative-to 输出相对路径 | realpath --relative-to=/srv ./logs/app.log | |
| find | 按名字、类型、时间、大小查找文件 | -name 按名字,-iname 忽略大小写,-type f/d 文件或目录,-size 大小,-mtime 修改天数,-exec 对结果执行命令 | find /var/log -type f -name '*.log' -mtime +7 -delete | |
| grep | 按内容搜索文本 | -r 递归,-i 忽略大小写,-n 显示行号,-v 取反,-E 扩展正则,-l 只列文件名,-c 计数,-A/-B 显示上下文 | grep -rniE 'todo|fixme' --include='*.ts' src/ | |
| sed | 流式编辑文本,替换用得最多 | -i 就地修改,-n 不自动打印,-E 扩展正则,s/旧/新/g 替换 | sed -i.bak 's/listen 80;/listen 8080;/' nginx.conf | |
| awk | 按列处理文本,适合结构化输出 | -F 指定分隔符,$1..$n 取列,NR 行号,NF 列数,-v 传入变量 | awk -F: '$3 >= 1000 {print $1, $3}' /etc/passwd | |
| cut | 按分隔符或位置截取文本 | -d 分隔符,-f 取第几列,-c 按字符,--complement 取反 | cut -d, -f1,3 --output-delimiter=" | " data.csv | |
| sort | 排序文本行 | -n 按数值,-h 人类可读大小,-r 逆序,-u 去重,-k 指定列,-t 指定分隔符 | du -sh /var/* | sort -h | tail -n 10 | |
| uniq | 去掉相邻的重复行 | -c 显示重复次数,-d 只显示重复行,-u 只显示不重复行 | awk "{print $1}" access.log | sort | uniq -c | sort -nr | head | |
| wc | 统计行数、词数、字节数 | -l 行数,-w 词数,-c 字节数,-m 字符数,-L 最长行长度 | wc -l access.log | |
| head | 查看文件开头 | -n 行数,-c 字节数,-q 多文件时不打印文件名 | head -n 20 app.log | |
| tail | 查看文件结尾或持续跟踪 | -n 行数,-f 跟踪新增内容,-F 文件被轮转后继续跟踪,--pid 进程结束时退出 | tail -F -n 100 /var/log/nginx/error.log | |
| xargs | 把标准输入变成命令行参数 | -n 每次传几个,-0 按 NUL 分隔,-I 占位替换,-P 并发数,-r 输入为空时不执行 | find . -name '*.tmp' -print0 | xargs -0 rm -vf | |
| tr | 替换或删除字符 | -d 删除字符,-s 合并重复,-c 取补集 | tr -d '\r' < windows.txt > unix.txt | |
| diff | 比较两个文件或目录的差异 | -u 统一格式输出,-r 递归目录,-q 只报告是否不同,-w 忽略空白差异 | diff -u /etc/nginx/nginx.conf /backup/nginx.conf | |
| tee | 同时输出到屏幕和文件 | -a 追加而不是覆盖,-i 忽略中断信号 | make 2>&1 | tee build.log | |
| split | 把大文件切成小份 | -l 按行数切,-b 按大小切,-d 用数字后缀,-a 后缀长度 | split -l 100000 -d --additional-suffix=.csv big.csv part_ | |
| paste | 按行横向合并多个文件 | -d 指定分隔符,-s 每行文件纵向合并成一行 | paste -d, names.txt emails.txt | |
| locate | 按名字在索引库里快速查找 | -i 忽略大小写,-b 只匹配文件名,-c 只统计数量 | locate -i nginx.conf | |
| rg | ripgrep,比 grep 更快的递归搜索 | -i 忽略大小写,-n 行号,-l 只列文件,-g 限定文件模式,-t 限定类型,-uu 含隐藏与忽略文件 | rg -n --hidden -g '!node_modules' 'process.env' . | |
| chmod | 修改文件权限位 | -R 递归,-v 显示变化,+x/-x 增减执行权限,数字模式如 644/755 | chmod -R u=rwX,g=rX,o= /srv/www | |
| chown | 修改文件属主和属组 | -R 递归,--reference 参照另一个文件,-h 修改软链接本身 | chown -R www-data:www-data /var/www | |
| chgrp | 修改文件所属组 | -R 递归,-h 修改软链接本身 | chgrp -R developers /srv/app | |
| umask | 设置新建文件的默认权限掩码 | -S 用符号形式显示当前掩码 | umask 027 | |
| sudo | 以其他用户身份执行命令 | -u 指定用户,-i 模拟登录环境,-s 指定 shell,-l 列出可执行权限,-k 清除凭证缓存 | sudo -u postgres psql | |
| su | 切换用户身份 | - 加载目标用户的环境变量,-c 执行单条命令 | su - deploy -c 'whoami' | |
| useradd | 创建新用户 | -m 创建家目录,-s 指定 shell,-G 附加组,-r 建系统账号,-d 指定家目录 | useradd -m -s /bin/bash -G sudo alice | |
| usermod | 修改已有用户的属性 | -aG 追加附加组,-L 锁定账号,-U 解锁,-d 改家目录,-s 改 shell | usermod -aG docker alice | |
| userdel | 删除用户 | -r 连同家目录和邮件一起删,-f 强制删除已登录用户 | userdel -r alice | |
| passwd | 修改密码或账号状态 | -l 锁定,-u 解锁,-d 清空密码,-e 强制下次登录改密,-S 查看状态 | passwd -S alice | |
| groups | 查看用户所属的组 | 无(直接跟用户名) | groups alice | |
| id | 查看 UID、GID 和所属组 | -u 只显示 UID,-g 只显示 GID,-G 显示所有组,-n 显示名字而不是数字 | id -Gn alice | |
| getfacl | 查看文件的 ACL 权限 | -R 递归,-p 保留路径形式,-c 省略注释行 | getfacl -p /srv/data | |
| setfacl | 设置文件的 ACL 权限 | -m 修改规则,-x 删除规则,-b 清空全部 ACL,-R 递归,-d 设置默认 ACL | setfacl -R -m u:alice:rwX /srv/data | |
| chattr | 修改文件底层属性 注意:加 i 之后连 root 都改不了这个文件,忘记清除会导致配置改不动,用 lsattr 查看、chattr -i 解除。 | +i 设为不可变,+a 只允许追加,+e 扩展区,-R 递归 | chattr +i /etc/resolv.conf | |
| ps | 查看进程快照 | aux BSD 风格全量,-ef System V 风格,-o 自定义列,--sort 排序 | ps aux --sort=-%mem | head -n 11 | |
| top | 实时查看进程与资源占用 | -p 只看指定 PID,-u 只看某用户,-d 刷新间隔;交互键 M 按内存排、P 按 CPU 排、1 展开每核 | top -u nginx -o %CPU | |
| htop | 交互更友好的进程查看器 | -u 只看某用户,-t 树形视图,-d 刷新间隔,-p 指定 PID | htop -t | |
| kill | 给进程发送信号 | -l 列出所有信号,-15 SIGTERM 正常终止,-9 SIGKILL 强杀,-HUP 让服务重载配置 | kill -HUP 1234 | |
| killall | 按进程名发送信号 | -9 强杀,-i 逐个确认,-u 限定用户,-w 等待进程退出 | killall -HUP nginx | |
| pkill | 按名字或条件匹配后杀进程 | -f 匹配完整命令行,-u 限定用户,-9 强杀,-x 精确匹配名字 | pkill -f 'node server.js' | |
| pgrep | 按条件查进程 PID | -f 匹配完整命令行,-u 限定用户,-a 同时显示命令行,-l 显示进程名 | pgrep -af nginx | |
| nice | 以指定优先级启动命令 | -n 优先级增量(-20 最高,19 最低),默认加 10 | nice -n 15 tar czf backup.tgz /srv/data | |
| renice | 调整运行中进程的优先级 | -n 新优先级,-p 指定 PID,-u 按用户调整 | renice -n 10 -p 1234 | |
| nohup | 让命令在退出终端后继续运行 | 常配合 & 放后台和重定向日志 | nohup ./worker.sh > worker.log 2>&1 & | |
| jobs | 查看当前 shell 的后台任务 | -l 同时显示 PID,-r 只列运行中的 | jobs -l | |
| fg | 把后台任务调回前台 | %n 指定任务号,默认最近一个 | fg %1 | |
| strace | 跟踪进程的系统调用 | -p 附加到运行中的进程,-f 跟随子进程,-e 过滤调用,-c 统计耗时 | strace -f -e trace=openat,connect ./app | |
| lsof | 列出进程打开的文件和端口 | -i:端口 看端口占用,-p 看进程打开的文件,-u 按用户,+D 递归某目录 | lsof -i:8080 | |
| free | 查看内存和交换分区使用情况 | -h 人类可读,-m MB,-g GB,-s 间隔刷新,-t 显示合计 | free -h -s 2 | |
| ip | 查看和配置网络接口、路由(取代 ifconfig 和 route) | -br 精简输出,addr 地址,link 链路,route 路由,-s 统计 | ip -br addr | |
| ss | 查看套接字和监听端口(取代 netstat) | -t TCP,-u UDP,-l 监听中,-n 不解析名字,-p 显示进程,-s 汇总 | ss -tulnp | |
| ping | 测试连通性和延迟 | -c 次数,-i 间隔秒,-W 超时,-s 包大小,-4/-6 强制协议 | ping -c 4 -W 2 1.1.1.1 | |
| curl | 发起 HTTP 等协议请求 | -I 只看响应头,-L 跟随跳转,-o 保存到文件,-x 走代理,--resolve 手动指 DNS,-d 表单,-H 自定义头 | curl -sSL -o /dev/null -w "%{http_code} %{time_total}s\n" https://example.com | |
| wget | 下载文件,支持断点续传 | -c 继续未完成的下载,-O 指定文件名,-q 安静模式,--mirror 镜像整站,--limit-rate 限速 | wget -c --limit-rate=2M https://example.com/big.iso | |
| dig | DNS 查询与排障 | +short 只输出结果,@server 指定 DNS,-t 记录类型,+trace 追踪解析链,+noall +answer 只看答案 | dig +short example.com A | |
| nslookup | DNS 查询(交互式与脚本都常用) | -type=记录类型,第二个参数指定 DNS 服务器 | nslookup -type=MX example.com 8.8.8.8 | |
| host | 简洁的 DNS 查询工具 | -t 记录类型,-v 详细输出,-a 等价于 -v -t ANY | host -t TXT example.com | |
| traceroute | 逐跳探测到目标的网络路径 | -n 不解析域名,-I 用 ICMP,-T 用 TCP,-m 最大跳数,-w 超时 | traceroute -n -T -p 443 example.com | |
| mtr | 持续探测并汇总每一跳丢包 | -r 输出报告,-w 宽输出,-c 探测次数,-n 不解析名字 | mtr -rwc 20 1.1.1.1 | |
| nc | 读写 TCP/UDP 连接,网络排查利器 | -l 监听,-z 只扫描不发送,-v 详细,-u UDP,-w 超时 | nc -zvw3 db.internal 3306 | |
| telnet | 测试端口是否可连(也用于临时调试协议) | 无常用选项,直接给主机和端口 | telnet smtp.example.com 25 | |
| tcpdump | 命令行抓包 | -i 指定网卡,-nn 不解析主机和端口,-s 抓取长度,-w 写入 pcap,过滤表达式 host/port/net | tcpdump -i eth0 -nn -s0 -w /tmp/http.pcap port 80 | |
| iptables | 管理 IPv4 防火墙规则 | -L 列出,-n 不解析,-v 详细,-A 追加规则,-D 删除规则,--line-numbers 显示编号 | iptables -L INPUT -n -v --line-numbers | |
| nmcli | NetworkManager 命令行 | device status 设备状态,connection show 连接配置,con up/down 启停连接 | nmcli device status | |
| resolvectl | 查询 systemd-resolved 的解析结果 | query 查询,status 查看状态,flush-caches 清缓存 | resolvectl query example.com | |
| df | 查看文件系统容量占用 | -h 人类可读,-T 显示文件系统类型,-i 看 inode 用量,-x 排除某类型 | df -hT -x tmpfs | |
| du | 统计目录占用的磁盘空间 | -h 人类可读,-s 只给汇总,--max-depth 限制深度,-x 不跨文件系统 | du -h --max-depth=1 /var | sort -h | |
| lsblk | 列出块设备和分区结构 | -f 显示文件系统和 UUID,-p 显示完整设备路径,-o 选列 | lsblk -f | |
| blkid | 查看块设备的 UUID 和文件系统类型 | -s 指定要显示的字段,-o 输出格式 | blkid /dev/sda1 | |
| fdisk | MBR 分区管理与查看 注意:fdisk 里的写操作会立刻改动分区表,误操作可能丢数据。查看用 -l,改动前先备份重要数据。 | -l 列出分区表,-u 按扇区显示 | fdisk -l /dev/sdb | |
| parted | 分区管理,支持 GPT 和大容量磁盘 | -l 列出,mklabel 建分区表,mkpart 建分区,print 显示 | parted -l | |
| mkfs | 在分区上创建文件系统 注意:mkfs 会清掉目标设备上已有的数据,且没有二次确认。务必确认设备名,别把 /dev/sda 和 /dev/sdb 看混。 | -t 指定类型,-L 设置卷标,-F 强制格式化已有文件系统 | mkfs -t ext4 -L data /dev/sdb1 | |
| mount | 挂载文件系统 | -o 挂载选项(ro/noexec/nosuid),-t 类型,-a 挂载 fstab 里所有条目 | mount -o ro,nosuid /dev/sdb1 /mnt/data | |
| umount | 卸载文件系统 | -l 延迟卸载,-f 强制卸载,-R 递归卸载 | umount /mnt/data | |
| findmnt | 按挂载树查看挂载信息 | -T 查某路径属于哪个挂载点,-l 列表形式,-D 动态更新 | findmnt -T /var/lib/docker | |
| dd | 按块复制数据,写镜像和测速常用 注意:dd 不认文件系统,of 写成磁盘设备会直接覆盖分区表和文件系统。经典事故是把 of 写成 /dev/sda 而不是 U 盘。执行前用 lsblk 反复核对目标设备。 | if 输入,of 输出,bs 块大小,count 块数,status=progress 显示进度,conv=fsync 写完刷盘 | dd if=debian.iso of=/dev/sdb bs=4M status=progress conv=fsync | |
| sync | 把内存中的缓存刷写到磁盘 | -f 同时刷文件系统元数据 | sync | |
| fsck | 检查并修复文件系统 注意:对已挂载的读写文件系统跑 fsck 可能造成严重损坏,一般要在卸载后或救援模式下进行。 | -y 自动回答 yes,-f 强制检查,-n 只检查不修改,-p 自动修复 | fsck -y /dev/sdb1 | |
| ncdu | 交互式查看目录占用排行 | -x 不跨文件系统,--exclude 排除路径 | ncdu -x / | |
| tar | 打包与解包,配合压缩算法使用 | -c 创建,-x 解包,-t 列表,-z gzip,-j bzip2,-J xz,-f 指定文件,-C 切换目录,-v 显示过程 | tar -czf backup-$(date +%F).tgz -C /srv data | |
| gzip | gzip 压缩单个文件 | -k 保留原文件,-d 解压,-9 最高压缩率,-1 最快,-r 递归目录 | gzip -k -9 access.log | |
| gunzip | 解压 .gz 文件 | -k 保留压缩包,-c 输出到标准输出,-t 只测试完整性 | gunzip -k access.log.gz | |
| bzip2 | bzip2 压缩,压缩率高于 gzip | -k 保留原文件,-d 解压,-9 最高压缩率 | bzip2 -k -9 dump.sql | |
| xz | xz 压缩,压缩率高但较慢 | -k 保留原文件,-d 解压,-T0 用满所有核心,-9 最高压缩率 | xz -T0 -k -9 big.tar | |
| zstd | Zstandard 压缩,速度快压缩率也不错 | -T0 多线程,-19 最高压缩率,-d 解压,--rm 压缩后删除原文件 | zstd -T0 -19 --rm big.tar | |
| zip | 创建 zip 压缩包 | -r 递归目录,-9 最高压缩率,-e 加密,-x 排除,-s 分卷大小 | zip -r9 site.zip ./public -x "*.map" | |
| unzip | 解压 zip 包 | -l 列出内容,-d 指定目录,-O 指定文件名编码,-o 覆盖不询问 | unzip -O cp936 data.zip -d ./data | |
| 7z | 7-Zip 压缩解压 | a 添加,x 解压(保留路径),e 解压(不保留路径),l 列表,-p 密码,-mx 压缩级别 | 7z x archive.7z -o./out -psecret | |
| unrar | 解压 RAR 文件 | x 解压保留路径,l 列表,e 不保留路径,-p 密码 | unrar x archive.rar ./out/ | |
| cpio | 归档复制,常配合 find 使用 | -o 创建归档,-i 解包,-d 自动建目录,-v 显示过程 | find /etc -name '*.conf' | cpio -o > confs.cpio | |
| zcat | 不解压直接查看 gz 文件内容 | -f 强制,-q 安静模式 | zcat access.log.gz | tail -n 20 | |
| pigz | 多线程 gzip,压大文件快很多 | -k 保留原文件,-p 线程数,-9 最高压缩率 | pigz -k -p 8 big.log | |
| apt | Debian / Ubuntu 的包管理前端 | update 更新索引,install 安装,remove 卸载,upgrade 升级,search 搜索,show 看详情,list --upgradable 看可升级 | apt update && apt install -y nginx | |
| apt-get | apt 的脚本友好版本,输出更稳定 | -y 自动确认,--no-install-recommends 不装推荐包,clean 清缓存,autoremove 清无用依赖 | apt-get -y --no-install-recommends install curl ca-certificates | |
| dpkg | 直接操作 deb 包 | -i 安装本地包,-l 列出已安装,-L 看某包包含哪些文件,-S 查文件属于哪个包,-r 卸载,-P 彻底清除 | dpkg -S /usr/bin/vim | |
| yum | CentOS 7 等老版本的包管理 | install 安装,update 升级,remove 卸载,search 搜索,provides 查命令属于哪个包 | yum install -y httpd | |
| dnf | Fedora / Rocky / AlmaLinux 的包管理 | install 安装,upgrade 升级,remove 卸载,groupinstall 装软件组,history 查看历史 | dnf install -y nginx | |
| rpm | 直接操作 rpm 包 | -ivh 安装并显示进度,-qa 列出已安装,-qf 查文件属于哪个包,-ql 列出包内文件,-e 卸载 | rpm -qf /usr/sbin/nginx | |
| pacman | Arch Linux 的包管理 | -S 安装,-Syu 同步索引并全量升级,-Rns 卸载含依赖,-Qs 本地搜索,-Ss 仓库搜索 | pacman -Syu --noconfirm | |
| zypper | openSUSE 的包管理 | in 安装,up 升级,rm 卸载,se 搜索,ref 刷新仓库 | zypper in -y nginx | |
| apk | Alpine Linux 的包管理 | add 安装,del 卸载,update 更新索引,info 查包信息,--no-cache 不留缓存 | apk add --no-cache curl | |
| snap | 安装和管理 snap 包 | install 安装,remove 卸载,list 列表,refresh 升级,--classic 经典权限模式 | snap install code --classic | |
| flatpak | 安装和管理 Flatpak 应用 | install 安装,uninstall 卸载,list 列表,update 升级,remote-add 添加仓库 | flatpak install -y flathub org.gimp.GIMP | |
| pip | Python 包管理 | install 安装,-U 升级,-r 按依赖文件,freeze 导出,--user 装到用户目录 | pip install -U -r requirements.txt | |
| npm | Node.js 包管理 | install 安装,ci 按锁文件干净安装,-g 全局,run 跑脚本,update 升级,audit 查漏洞 | npm ci --omit=dev | |
| brew | macOS / Linux 上的 Homebrew | install 安装,--cask 装图形应用,update 更新索引,upgrade 升级,list 列表,services 管理后台服务 | brew install --cask iterm2 | |
| cargo | Rust 的包与工程管理 | build 构建,run 运行,install 安装二进制,add 加依赖,update 升级依赖 | cargo install --locked ripgrep | |
| go | Go 工具链 | install 安装可执行文件,get 加依赖,build 编译,env 查看环境,mod tidy 整理依赖 | go install golang.org/x/tools/gopls@latest | |
| uname | 查看内核与系统架构 | -a 全部信息,-r 内核版本,-m 硬件架构,-n 主机名 | uname -a | |
| uptime | 查看运行时长和系统负载 | -p 易读格式,-s 显示开机时间 | uptime -p -s | |
| hostname | 查看或临时修改主机名 | -I 列出所有 IP,-f 显示完整域名,-d 显示域名部分 | hostname -I | |
| whoami | 显示当前用户名 | 无(等价于 id -un) | whoami | |
| w | 查看在线用户及其正在执行的命令 | -h 不显示表头,-s 精简输出,-f 显示来源 | w -h | |
| last | 查看登录历史 | -n 显示条数,-x 包含关机与运行级别记录,-i 显示 IP | last -n 20 -i | |
| date | 显示或设置日期时间 | -d 解析字符串,-u UTC,+格式 自定义输出,-s 设置时间 | date -d "@1700000000" +"%F %T %Z" | |
| timedatectl | 管理系统时间与时区 | status 查看,set-timezone 设时区,set-ntp 开关网络对时,list-timezones 列出时区 | timedatectl set-timezone Asia/Shanghai | |
| lscpu | 查看 CPU 架构与核心信息 | -e 列出每个逻辑 CPU,--all 显示离线 CPU,-J JSON 输出 | lscpu | |
| lsmod | 列出已加载的内核模块 | 无常用选项 | lsmod | head | |
| modprobe | 加载或卸载内核模块 | -r 卸载模块,-n 只演示不执行,-v 详细 | modprobe vfat | |
| dmesg | 查看内核环形缓冲日志 | -T 显示可读时间,-w 持续跟踪,-l 按级别过滤,-H 分页查看 | dmesg -T -l err,warn | tail -n 50 | |
| journalctl | 查看 systemd 日志 | -u 指定单元,-f 跟踪,--since/--until 时间范围,-p 级别,-b 本次启动,--disk-usage 占用 | journalctl -u nginx -f -n 50 | |
| env | 查看或临时修改环境变量 | -i 清空环境后执行,-u 取消某个变量 | env | sort | |
| ulimit | 查看和设置进程资源限制 | -a 列出全部,-n 打开文件数,-u 进程数,-c core 文件大小 | ulimit -n 65535 | |
| sysctl | 查看或修改内核运行参数 | -a 列出全部,-w 临时写入,-p 从配置文件加载,-n 只输出值 | sysctl -w net.core.somaxconn=1024 | |
| systemctl | 管理 systemd 服务的启停与开机自启 | start/stop/restart/reload 控制,status 看状态,enable/disable 开机自启,daemon-reload 重载单元文件,--now 连带启动 | systemctl enable --now nginx | |
| systemctl list-units | 列出已加载的单元 | --failed 只看失败的,--type=service 按类型,--all 含未激活,--state=running 按状态 | systemctl list-units --type=service --failed | |
| systemctl list-unit-files | 查看单元的启用状态 | --state=enabled 只看已启用,--type=service 按类型 | systemctl list-unit-files --type=service --state=enabled | |
| systemd-analyze | 分析开机耗时与单元配置 | blame 按耗时排序,critical-chain 关键链,verify 校验单元文件,time 总耗时 | systemd-analyze blame | head -n 10 | |
| hostnamectl | 查看系统信息与设置主机名 | status 查看,set-hostname 设置主机名 | hostnamectl set-hostname web-01 | |
| localectl | 管理语言环境和键盘布局 | status 查看,set-locale 设语言,set-keymap 设键盘,list-locales 列出可用 | localectl set-locale LANG=en_US.UTF-8 | |
| loginctl | 查看和管理登录会话 | list-sessions 列出会话,list-users 列出用户,terminate-session 结束会话 | loginctl list-sessions | |
| systemd-run | 把命令或定时任务做成临时 systemd 单元 | --unit 指定单元名,--on-calendar 定时,--scope 前台运行,-p 设置属性 | systemd-run --unit=nightly-backup --on-calendar='*-*-* 02:00' /opt/backup.sh | |
| systemd-cgls | 树形展示 cgroup 层级 | -a 显示全部,--no-pager 不分页 | systemd-cgls | |
| systemd-cgtop | 按 cgroup 统计资源占用排行 | -n 刷新次数,-d 间隔,-m 按内存,-c 按 CPU | systemd-cgtop -n 5 -d 1 | |
| systemctl kill | 给某个服务的所有进程发送信号 | -s 指定信号,--kill-who 指定目标(main/control/all) | systemctl kill -s HUP --kill-who=main nginx | |
| systemctl cat | 查看单元文件内容,编辑前先看它更稳妥 | cat 显示单元内容,edit 覆写片段,show 显示运行时属性 | systemctl cat nginx | |
| systemctl is-active | 判断服务是否在运行或已启用 | is-active 是否运行,is-enabled 是否开机自启,is-failed 是否失败 | systemctl is-active nginx | |
| systemctl mask | 屏蔽服务,防止被依赖它的服务自动拉起 | mask 屏蔽,unmask 解除,--runtime 只在本次启动有效 | systemctl mask sleep.target suspend.target |
man、--help 和 tldr 有什么区别
man 是系统自带的手册页,信息最全,但排版是给 1970 年代的终端看的,找一个参数往往要翻好几屏。命令支持 --help 时会打印一份精简的帮助,速度快但常常省略细节和坑。tldr 是社区维护的「太长不看版」,只给几个最常见的例子,适合快速回忆,但需要额外安装(apt install tldr 或 pip install tldr,也有 npm 版本)。
一个顺手的顺序是:先用 man -k 关键词 或 apropos 找命令名,再用 命令 --help 回忆参数,实在看不懂某个选项就去 man 里搜。man 里按 / 搜索、按 n 跳下一个匹配、按 q 退出,这三个键能省很多翻页时间。
几条必须小心的命令
表里标了「注意」的 6 条都属于会直接破坏数据的类型。rm -rf 不确认也不进回收站,最常见的翻车是变量为空时 rm -rf $DIR/ 展开成 rm -rf /,所以脚本里要写成 rm -rf "${DIR:?}"/ 让变量为空时直接报错退出。dd 不认文件系统,of 写错设备就会覆盖分区表,操作前用 lsblk 反复核对。mkfs 会在目标设备上重建文件系统,同样没有二次确认。
还有一类是「看起来无害但影响很大」:chattr +i 会让文件连 root 都改不了,忘记解除会导致配置改不动;fsck 对已挂载的读写文件系统运行可能造成严重损坏,一般要在卸载后或救援模式下执行。做任何写操作之前,先确认当前用户、当前目录和目标设备,必要时先备份。
这份表的边界
这里的命令以 GNU coreutils 和常见发行版的默认实现为准。macOS 上不少命令是 BSD 版本,像 sed -i 必须写成 sed -i ''、date 的参数也不一样;Alpine 用的是 BusyBox,选项更少。容器里通常没有 systemd,systemctl 那一组只在有 init 系统的机器上可用。真到线上排查,还是以目标机器上 man 的输出为准。