Linux notes / 01
小型服务器的变更窗口
远程操作最重要的不是命令短,而是失败后仍能回到已知状态。
变更前保存什么
- 版本
- 应用、内核与配置格式的准确版本。
- 状态
- 监听端口、服务状态、失败单元与防火墙规则。
- 数据
- 数据库、密钥、证书和服务环境文件应属于同一快照。
- 回滚
- 提前安排定时恢复任务,并保留第二个 SSH 会话。
活动 SQLite 数据库
SQLite 可能处于 WAL 模式。运行中只复制主数据库文件,无法保证得到一致快照。优先使用应用自带备份;否则使用 SQLite online backup API。
sqlite3 /path/to/app.db \
".timeout 5000" \
".backup '/secure/backup/app.db'"
sqlite3 /secure/backup/app.db "PRAGMA quick_check;"
自动回滚护栏
正式变更前启动一次性定时任务。确认新配置可达、服务健康且重启后仍正常,再解除护栏。
- 准备
保存原配置和运行值,校验备份可读。
- 设防
安排 10 分钟后执行的恢复任务。
- 变更
一次只改一个层面,并立即检查监听与日志。
- 提交
完成外部验证后取消定时任务,记录最终状态。
防火墙的最小动作
- 始终保留已验证的 SSH 规则。
- 新增端口时同时写明传输类型和用途。
- 使用可重复加载的完整配置,而不是临时散落命令。
- 不要在远程会话中无条件执行
flush ruleset。