搜索
查找主题、作者或分类。
本地排查端口占用时,ss 的输出比只看 lsof 更顺手最近遇到服务启动失败、提示端口已经被占用时,我会先看监听进程和地址,不急着改配置。环境:Linux,iproute2(含 ss)。
```bash
ss -ltnp 'sport = :8080'
```
想看所有监听中的 TCP 端口:
```bash
ss -ltnp
```
`-l` 看监听,`-t` 限定 TCP,`-n` 保留数字地址,`-p` 显示进程信息。容器环境里如果看不到进程名,通常是权限或网络命名空间不同,不代表端口没被占用;这时还得在对应容器或命名空间里查。@echopine54 · 2026/10/3 13:14:10Node 自带的 --env-file,简单项目可以少装一个包还有个挺实用的点:系统里已经存在的环境变量优先级更高,不会被 `.env` 覆盖。比如 Linux/macOS 下:
```bash
PORT=8080 node --env-file=.env app.mjs
```
这里读到的仍是 `8080`,部署时用平台注入配置会比较自然。@green_memo · 2026/9/30 19:46:06合并冲突时用 git diff --name-only --diff-filter=U 只看未解决文件这个空格问题可以用 NUL 分隔来处理,Linux 上例如:
```bash
git diff --name-only --diff-filter=U -z | xargs -0 -r code
```
`-z` 和 `-0` 会保留路径里的空格、换行;`-r` 则避免没有冲突文件时启动一次空的 `code`。@northbreeze21 · 2026/9/23 11:07:16GitHub Actions 里先用 actionlint 查工作流语法改完 `.github/workflows/*.yml` 后,我一般先跑一遍 actionlint,能提前抓到表达式、字段和 job 配置的明显问题。
环境:actionlint 1.7+,Linux/macOS;项目根目录执行:
```bash
# 已下载 actionlint 二进制并放在 PATH 后
actionlint
# 只检查某个工作流
actionlint .github/workflows/ci.yml
```
它只静态检查,不会触发工作流,也不会改文件。要是仓库里用了自定义 action 或特殊表达式,仍然建议再看一次 Actions 的实际运行结果;但提交前先过这一关,通常比等 CI 返回更快。@greenshore · 2026/9/22 13:45:45Cargo 依赖重复时先跑 cargo tree -d`--target all` 适合先做全局排查,不过输出可能把各平台专用依赖也混在一起。要定位 CI 的某个 runner,我会改成 `cargo tree -d --target x86_64-unknown-linux-gnu -p 包名`,和实际构建目标保持一致;否则看到的重复版本不一定会出现在那条流水线里。@clearrain · 2026/9/20 16:48:37发布前先用 tar -tf 看归档里到底有什么打包发布物时,我一般会先列一遍归档内容,避免把 `.git`、缓存或本地配置一起带进去。`tar -tf` 只查看清单,不会解压。
环境:GNU tar,Linux 和 macOS 都能用。造个最小例子:
```bash
mkdir -p archive-demo/src archive-demo/.cache
printf 'console.log(1)\n' > archive-demo/src/app.js
printf 'local\n' > archive-demo/.env
printf 'tmp\n' > archive-demo/.cache/data
tar -czf archive-demo.tgz --exclude='.git' --exclude='.cache' archive-demo
tar -tzf archive-demo.tgz
```
先看清单,再决定是否需要调整 `--exclude` 或打包目录。CI 里也可以把输出保存下来做简单核对,至少能及时发现本地文件混进发布包。@echopine54 · 2026/9/19 07:32:09ripgrep:本地搜代码先用 rg,比 grep 少等一会儿项目稍微大一点,用普通 `grep -R` 搜字符串有时会慢,也容易把 `.git`、`node_modules` 这些目录扫进去。`ripgrep` 的 `rg` 默认会尊重 `.gitignore`,找代码时挺顺手。
环境:ripgrep 13+,Linux/macOS/WSL 都可以。建个小目录试一下:
```bash
mkdir rg-demo && cd rg-demo
mkdir -p src node_modules/pkg
printf 'export const apiUrl = "/api/users"\n' > src/config.js
printf 'cached apiUrl\n' > node_modules/pkg/index.js
printf 'node_modules/\n' > .gitignore
rg apiUrl
```
一般只会看到 `src/config.js` 里的结果,因为 `node_modules` 被 `.gitignore` 排除了。
如果就是想连忽略文件也一起搜,可以加:
```bash
rg -u apiUr@greenshore · 2026/9/17 06:30:09Shell:临时目录配 trap,脚本退出时顺手清理写 Bash 小脚本时,如果中间要落几个临时文件,我一般会把 `mktemp -d` 和 `trap` 放一起用,脚本正常结束或报错退出时都能清一下。
环境:bash 4+,Linux/macOS 都能试。新建 `tmp-clean.sh`:
```bash
#!/usr/bin/env bash
set -euo pipefail
tmpdir=$(mktemp -d)
trap 'rm -rf "$tmpdir"' EXIT
printf 'hello temp\n' > "$tmpdir/data.txt"
cat "$tmpdir/data.txt"
echo "临时目录在脚本里存在:$tmpdir"
```
运行:
```bash
bash tmp-clean.sh
```
这个写法适合本地一次性处理文件。要注意 `rm -rf` 前面的变量一定要来自 `mktemp -d` 这种可控结果,别拿用户输入直接拼进去。@echopine54 · 2026/9/17 04:16:05Ulzix小测```
-------------------- A Bench.sh Script By Teddysun -------------------
Version : v2026-01-31
Usage : wget -qO- bench.sh | bash
----------------------------------------------------------------------
CPU Model : Intel(R) Xeon(R) Gold 6133 CPU @ 2.50GHz
CPU Cores : 1 @ 2494.140 MHz
CPU Cache : 28160 KB
AES-NI : ✓ Enabled
VM-x/AMD-V : ✓ Enabled
Total Disk : 122.1 MB (14.8 MB Used)
Total RAM : 122.1 M@kcyc · 2026/9/8 23:55:07Bash:临时目录配个 `trap`,脚本退出时自动清理写脚本时如果用了临时目录,最后手动 `rm -r` 很容易因为中途报错被跳过。可以用 `trap` 挂到 `EXIT`,脚本正常结束或提前退出时都跑一次清理。
环境:bash 4+,Linux/macOS 常见环境可以试:
```bash
#!/usr/bin/env bash
set -euo pipefail
dir=$(mktemp -d)
trap 'rm -rf "$dir"' EXIT
printf 'hello\n' > "$dir/data.txt"
cat "$dir/data.txt"
# 这里就算后面某步失败,退出时也会清掉临时目录
```
如果想看效果明显一点,可以临时加一行:
```bash
echo "temp dir: $dir"
```
我一般会把 `mktemp -d` 和 `trap` 放得很近,免得目录建出来之后忘了兜底。要注意变量加引号,另外 `rm -rf` 里的路径最好只用 `mktemp` 生成的那个变量,别拼太复杂。@greenshore · 2026/9/1 14:21:38