手写一个可靠的 systemd service:Restart、LimitNOFILE 与日志
把一个命令行程序变成开机自启、崩溃自动拉起的服务,远不止写个 ExecStart。本文整理 Restart=on-failure 与 always 的区别、LimitNOFILE 对高并发代理的影响,以及用 journalctl 排查启动失败的常用姿势。
阅读全文 »后端开发 · Linux 运维 · 网络协议 · 数据库 · 容器与自动化,偶尔写点折腾笔记。
把一个命令行程序变成开机自启、崩溃自动拉起的服务,远不止写个 ExecStart。本文整理 Restart=on-failure 与 always 的区别、LimitNOFILE 对高并发代理的影响,以及用 journalctl 排查启动失败的常用姿势。
阅读全文 »Nginx/业务日志默认只增不减,跑几个月就把系统盘吃满。本文记录一次线上清理:如何按日期过滤保留最近 N 天、给 nginx 发 USR1 信号重开文件句柄、以及为自定义日志目录补上 daily + rotate + compress 的轮转配置。
阅读全文 »证书 90 天一过期网站就告警。本文演示 webroot 模式验证、ECC 证书签发、acme.sh 的 cron 自动续期原理,以及证书更新后如何让 nginx / 其它服务平滑 reload。
阅读全文 »规则顺序决定一切。很多人放行了端口却依然不通,往往是因为规则加在了一条兜底 REJECT 之后。本文梳理 filter 表 INPUT 链的匹配顺序、-I 与 -A 的区别,以及 CentOS 下 service iptables save 的持久化方式。</p>
阅读全文 »VPS 暴露在公网,auth.log 里全是爆破尝试。这份清单覆盖:改默认端口、禁用 root 密码登录只留密钥、UseDNS no 加速握手、以及用 fail2ban 对反复失败的 IP 自动封禁。
cron 简单直接但日志和错误处理弱;systemd timer 能依赖服务、随机延迟、missed 后补跑、journalctl 统一看日志。对跑在 systemd 体系里的维护脚本,timer 往往更省心。
默认 shell 遇到错误会继续往下跑,变量拼错变成空字符串,管道中间失败还发现不了。加上 set -e(出错即退)、-u(未定义变量报错)、-o pipefail(管道任一段失败即失败),能挡掉大量运维事故。