线上排错查参数
凌晨两点,线上 Nginx 报 502,同事怀疑是 `proxy_pass` 后少了个斜杠。手边没参考书,翻浏览器搜到的博客又怕版本过时。打开本工具搜 `proxy_pass`,直接看到语法说明和带斜杠/不带斜杠的对比示例,确认是 URL 拼接规则问题,改完重启服务恢复。
写个 `find` 过滤 `.log` 文件,却忘了 `-type f` 和 `-name` 的先后顺序,或 `tar` 的 `-z` 该放哪——翻手册太慢,搜到的博客又常缺关键选项。这个工具把 200+ 常用命令按文件操作、权限、进程等类别拆开,每条附带选项说明与可运行示例。所有数据在浏览器本地索引,不发送任何输入到服务器,离线环境下也能秒查。
凌晨两点,线上 Nginx 报 502,同事怀疑是 `proxy_pass` 后少了个斜杠。手边没参考书,翻浏览器搜到的博客又怕版本过时。打开本工具搜 `proxy_pass`,直接看到语法说明和带斜杠/不带斜杠的对比示例,确认是 URL 拼接规则问题,改完重启服务恢复。
明天面 SRE 岗,对方要求手写 `awk` 处理日志。之前只记了几个常用模式,但 `-F` 和 `BEGIN` 块用法模糊。用本工具搜 `awk`,分类下能看到选项说明和多个示例:按逗号分割、统计行数、计算平均值。对照示例敲一遍,面试时能完整写出 `awk -F, '{sum+=$2} END{print sum/NR}'`。
写一个部署脚本,`rsync` 同步完后要判断是否成功。`man` 页里 `EXIT STATUS` 段太长,记不住 0 和 1 之外的值。在本工具搜 `rsync`,退出码说明直接列出:0 成功、1 语法错误、23 部分传输失败。写 `if [ $? -eq 1 ]; then` 判断,脚本一次跑通。
安全审计要求提供某台服务器上月所有 `sudo` 执行记录。知道用 `lastcomm` 和 `ausearch`,但参数记不全。本工具搜 `ausearch`,看到选项 `-ts` 指定起始时间、`-te` 结束时间、`-m` 过滤模块。按示例写成 `ausearch -m sudo -ts 09/01/2024 -te 09/30/2024`,五秒导出合规报告。
Docker 容器启动后连不上外部 API,怀疑 DNS 解析或路由问题。容器里没装 `dig` 和 `traceroute`,只有最简工具集。本工具搜 `ping` 和 `ip`,看到 `ip route` 能查默认网关、`ping -c 4` 测连通。依次执行:`ip route` 发现网关为 172.17.0.1,`ping 8.8.8.8` 通但 `ping google.com` 不通,判断是 DNS 配置问题,加 `--dns` 参数重建容器解决。
| 输入 | 输出 | 说明 |
|---|---|---|
| ls -l | ls -l 列出当前目录下文件和目录的详细信息,包括权限、链接数、所有者、大小、修改时间、名称。 选项: -l 使用长格式显示 示例: $ ls -l drwxr-xr-x 2 user group 4096 Jan 1 12:00 dir -rw-r--r-- 1 user group 1024 Jan 1 12:00 file.txt | 常规:最常用的组合命令之一,验证工具是否输出完整选项说明和典型输出示例 |
| grep -i 'error' /var/log/syslog | grep -i 'error' /var/log/syslog 在文件 /var/log/syslog 中搜索包含 'error' 的行,忽略大小写。 选项: -i 忽略大小写 示例: $ grep -i 'error' /var/log/syslog Jan 1 12:00:00 host kernel: [12345] error: device not found | 常规:带路径和选项的搜索命令,验证工具能否正确处理文件路径参数和组合选项 |
| chmod 777 /tmp/test.sh | chmod 777 /tmp/test.sh 修改文件 /tmp/test.sh 的权限为所有者、组、其他用户均可读/写/执行。 权限模式: 777 = rwxrwxrwx 注意: 777 权限存在安全风险,建议按需设置更严格的权限。 | 边界:权限值 777 是八进制最大值,验证工具是否输出权限分解和安全提示 |
| rm -rf / | rm -rf / 递归强制删除根目录下所有内容。 选项: -r 递归删除 -f 强制删除,不提示 警告: 此命令会删除整个文件系统,导致系统不可用。请谨慎使用。 | 边界:最危险的命令之一,验证工具是否输出明确的安全警告 |
| find / -name '*.log' -size +100M | find / -name '*.log' -size +100M 从根目录开始查找所有后缀为 .log 且大小超过 100MB 的文件。 选项: -name 按文件名匹配 -size 按文件大小过滤(+ 表示大于,- 表示小于) 示例: $ find / -name '*.log' -size +100M /var/log/syslog.1 /var/log/kern.log | 边界:组合多个条件(路径、名称、大小),验证工具能否正确解析复杂查询表达式 |
| sudo apt-get update | sudo apt-get update 以超级用户权限更新软件包列表。 语法: sudo [命令] apt-get update 说明: sudo 用于提升权限,apt-get update 从软件源下载最新的包索引。 注意: 需要网络连接和 sudo 权限。 | 易错:用户常忘记 sudo 或混淆 apt-get 与 apt,验证工具是否输出权限和命令区别说明 |
| cat /dev/urandom | head -c 100 | base64 | cat /dev/urandom | head -c 100 | base64 从 /dev/urandom 读取随机字节,取前 100 字节,再编码为 Base64。 管道解释: cat 输出文件内容 head 取前 N 字节 base64 编码为标准 Base64 示例输出: w7JkL8xPqR3t...(随机字符串) | 易错:管道链过长时用户容易断句错误,验证工具是否逐段解释管道中各命令的作用 |
1.rm -rf 后接变量未判空,导致根目录被删
rm -rf $TARGET_DIR/*if [ -n "$TARGET_DIR" ]; then rm -rf "$TARGET_DIR"/*; fi变量未定义或为空时,rm -rf /* 会删除整个文件系统。POSIX 规范要求删除前必须判空或使用 --no-preserve-root(不推荐)。
2.tar 解压时漏写 -C 参数,覆盖当前目录文件
tar -xzf archive.tar.gz # 在当前目录解压tar -xzf archive.tar.gz -C /target/path默认解压到当前目录,若 archive 包含大量文件会污染工作目录。GNU tar 的 -C 指定目标目录是标准做法。
3.chmod 使用八进制权限时漏掉前导 0
chmod 755 file # 正确但容易误写为 755 而非 0755chmod 0755 file八进制数前导 0 是 C 语言惯例;虽然 chmod 接受无前导 0 的 755,但 setuid/setgid/sticky 位(如 4755)必须显式写 0 或 4。
4.find -exec 末尾漏写分号导致语法错误
find . -name '*.log' -exec rm {}find . -name '*.log' -exec rm {} \;-exec 必须以 ; 或 + 结尾,且 ; 需转义(\;)或加引号,否则 shell 解释为命令分隔符。POSIX 标准明确要求。
5.grep 使用正则时未转义花括号,匹配失败
grep 'abc{3}' file # 想匹配 abc 重复 3 次grep -E 'abc{3}' file # 或 grep 'abc\{3\}' file默认 grep 使用基础正则(BRE),花括号必须转义为 \{ \} 才表示重复次数。加 -E 启用扩展正则(ERE)则无需转义。
6.管道命令中误用 alias,导致命令未执行
alias ll='ls -l'; ll | grep fooll | grep foo # 但 alias 在非交互 shell 默认不生效;应使用函数或直接写 ls -l | grep fooBash 中 alias 默认只在交互 shell 展开,脚本或管道中不生效。POSIX 规范建议用函数代替 alias 实现复杂命令。
7.cp 复制目录时漏写 -r,报错且无提示
cp dir1 dir2cp -r dir1 dir2cp 默认只复制文件,复制目录必须加 -r(递归)或 -a(归档)。GNU cp 会报错 'omitting directory',但新手常忽略。
8.sed 替换使用 / 作为分隔符,与路径冲突
sed 's/usr/local/bin/opt/bin/g' filesed 's|/usr/local/bin|/opt/bin|g' file路径含 / 时与 sed 默认分隔符冲突,需转义所有 /(如 \/)。改用 | 或 # 等字符作为分隔符可避免可读性下降。
chmod mode = owner + group + other (rwx 二进制位)
owner文件所有者权限,三位二进制group所属组权限,三位二进制other其他用户权限,三位二进制设置文件 test.sh 权限为 rwxr-xr--:owner=7(111),group=5(101),other=4(100)。执行 chmod 754 test.sh,结果:所有者可读/写/执行,组可读/执行,其他仅可读。
本工具支持拼音首字母和模糊搜索。例如想查 `systemctl` 但只记得 `system` 开头,在搜索框输入 `system` 就会列出所有含 system 的命令列表。如果只记得读音 `xtgl`,拼音搜索也能匹配到相关命令。另外分类导航里按「系统管理」「文件操作」「网络工具」等大类分组,也可以按功能领域浏览找到目标命令。
大概率是系统没安装该命令或当前用户权限不够。本工具收录的命令覆盖常见 Linux 发行版(Ubuntu/CentOS/Debian),但某些命令(如 `iftop`、`ncdu`)默认不安装,需要先 `apt install` 或 `yum install`。另外部分命令需要 root 权限(如 `fdisk`、`mount`),请检查是否加了 `sudo`。工具内每个命令的「注意事项」区域会标注依赖包和权限要求。
本工具每个命令的选项表支持按功能关键词过滤。例如 `grep` 有几十个选项,在选项列表上方的筛选框输入「递归」或「recursive」,就会高亮显示 `-r`、`-R` 等递归相关选项。另外选项表按「常用」「高级」「调试」分组,日常用只看「常用」组即可,不用翻完所有选项。
每个示例的参数都是可替换的占位符模式,用 `{}` 标出。比如示例 `tar -czvf {archive_name}.tar.gz {source_dir}`,把 `{archive_name}` 换成你要的压缩包名(如 `backup`),`{source_dir}` 换成目标目录(如 `/home/user/data`)即可。如果示例里包含文件路径,注意替换成你自己的实际路径,工具本身不会自动补全路径。
本工具基于主流发行版(Ubuntu 22.04、CentOS Stream 9)的默认命令版本来编写。如果服务器版本较旧(如 CentOS 7 的 `grep` 2.20 不支持 `-P` 选项),建议先在本工具的「命令详情」页查看「版本兼容」标签,里面标注了该选项最早支持的版本号。不确定时可以用 `man` 命令查看服务器上实际版本的支持情况。
最常见的原因是环境差异:示例假设当前目录下有特定文件(如 `test.txt`),而你实际目录里没有该文件或文件名不同。请先确认示例中操作的文件/目录确实存在。其次,部分命令的输出受系统 locale 影响(如 `ls -l` 的中文日期格式),本工具示例基于 `en_US.UTF-8` 环境,如果你的系统是中文 locale,输出格式可能不同,但内容本质一致。
本工具是完全在浏览器端运行的纯前端实现,首次加载后所有命令数据会缓存到本地。只要不清理浏览器缓存,断网后再次打开页面仍然可以正常浏览、搜索和查看所有命令详情。建议首次使用时把常用命令的页面完整加载一遍(滚动到底部确保数据全部缓存),之后即可离线查阅。
man 手册是完整但臃肿的参考文档,适合深度查阅。本工具做了三层简化:一是按「常用」「进阶」分级展示,新手只需看常用选项;二是每个选项附带具体示例而非纯描述;三是支持模糊搜索和拼音搜索,找不到命令名时也能定位。适合日常快速查阅、回忆命令格式,以及初学者学习常用选项。复杂场景的完整文档仍需参考 man。
隐私保证所有计算与处理均在你的浏览器本地完成,输入数据不会上传服务器,也不会保存或共享。