适用场景
Linux 服务器出事故,多半不是内核问题,而是规范问题:所有人用 root、句柄数不够、时间不同步、cron 里躺着三年前的脚本。把规范和巡检做成清单,问题能少一大半。
配置步骤(文件句柄与时间同步)
# 1) 句柄现状
ulimit -n
cat /proc/sys/fs/file-nr
lsof -u appuser | wc -l
# 2) systemd 服务调高句柄(对服务生效,改 limits.conf 只对登录会话生效)
systemctl edit mysvc.service
# [Service]
# LimitNOFILE=65535
# LimitNPROC=65535
systemctl daemon-reload && systemctl restart mysvc
# 3) 时间同步
chronyc sources -v
chronyc tracking
systemctl status chronyd | head -5
# 4) 常见偏差来源
# - 虚机挂起后时间漂移
# - 内网 NTP 源不可达
# - 防火墙拦了 UDP 123
timedatectl
关键参数与建议
- 账号治理:一人一号,禁止共享 root;离职当天禁用账号并清理密钥
- sudo 授权:按需授权具体命令,禁止 NOPASSWD ALL
- 密钥管理:authorized_keys 定期审计,禁止遗留测试公钥
- 句柄与进程数:按业务设 nofile/nproc(systemd 里设,改 limits.conf 对本机 systemd 服务无效)
- 时间同步:统一 chrony 指向内网 NTP,偏差超 100ms 要查
- 定时任务:cron 统一登记(谁建、干什么、失败怎么办),禁用来源不明脚本
- 日志:syslog 集中收集,本机日志轮转保留 30 天以上
- 基线:最小化安装、关闭不必要服务、SSH 禁用密码与 root 直登
容易踩的坑
- 业务报 too many open files 才想起改句柄
- 只改 limits.conf,systemd 服务不生效,重启后依旧
- NTP 源指向公网且不可达,时间一直漂
- 多台机器时间不一致,分布式锁与认证间歇失败
- 虚机长时间挂起后时间直接偏几小时
- 没有监控时间偏差,等证书校验失败才发现
验证与巡检
chronyc tracking | grep -E 'Leap|System time|Last offset'
cat /proc/sys/fs/file-nr
systemctl show mysvc -p LimitNOFILE
# 偏差阈值:绝对值 < 100ms
- 巡检:句柄水位 < 60%、LimitNOFILE 已设、时间偏差 < 100ms、NTP 源可达
小结
Linux 规范验收:随便挑一台服务器,能说清谁能登、谁有 sudo、有哪些定时任务、时间偏差多少。四项都能查到,规范才算落地。
> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。