# Oli 的命令行速查表 # 日志分析 / JSON 处理 / 磁盘排查 常用命令,纯自用,顺手分享 ## ---- nginx access log ---- # 请求数 Top 10 来源 IP awk '{print $1}' access.log | sort | uniq -c | sort -rn | head # 状态码分布 awk '{print $9}' access.log | sort | uniq -c | sort -rn # 每小时请求量 awk '{print substr($4, 14, 2)}' access.log | sort | uniq -c # 响应超过 2 秒的请求($request_time 放在最后一个字段时) awk '($NF > 2){print $NF, $7}' access.log | sort -rn | head # 直接读旋转过的压缩日志 zcat access.log.*.gz | awk '{print $1}' | sort | uniq -c | sort -rn | head ## ---- jq ---- # 列出陌生接口的所有 key curl -s https://api.example.com | jq '. | keys' # 过滤数组并取字段 jq '.items[] | select(.stargazers_count > 1000) | .full_name' # 条件计数 jq '[.[] | select(.state == "open")] | length' # 转成 TSV 交给 awk / column jq -r '.[] | [.name, .size, .default_branch] | @tsv' | column -t ## ---- 磁盘排查 ---- # 从根目录逐层找大头(-x 限定单文件系统) du -xh --max-depth=1 / 2>/dev/null | sort -rh | head # 找"已删除但仍被进程占用"的文件(df 和 du 对不上的元凶) lsof +L1 # 清空仍被占用的日志句柄(进程无感,注意换成实际 PID/fd) > /proc//fd/ # 收紧 journal 占用 journalctl --vacuum-size=200M ## ---- 其他 ---- # 生成随机密码(不含易混淆字符的场景用 hex) openssl rand -hex 16 # 看线上证书有效期 echo | openssl s_client -connect example.com:443 -servername example.com 2>/dev/null \ | openssl x509 -noout -dates