linux无开箱即用自动安全保护,但可通过三类方式实现主动防护:1. 内存侧设overcommit策略与oom_score_adj防关键进程被杀;2. cgroups v2对服务设cpu/内存硬限;3. 脚本+timer低内存时自动重启服务。

Linux 系统本身没有“自动触发安全保护限制”的开箱即用机制,但可以通过组合内核机制、资源控制器(cgroups)和用户态监控工具,在内存、CPU 或 I/O 压力过大时实现主动限流、进程干预或服务降级。关键不是等系统崩溃,而是提前识别阈值并响应。
以下三类实用配置方式,覆盖常见压力场景:
内存压力下防止 OOM 杀死关键进程
当可用内存持续低于安全水位,内核会启动 OOM Killer 随机终止进程。这不是“保护”,而是最后手段。更稳妥的做法是:
- 启用
vm.overcommit_memory=2并设置vm.overcommit_ratio(如 80),让内核严格检查内存分配,避免虚假承诺; - 对关键服务(如数据库、SSH)设置
oom_score_adj值为 -1000(完全禁止被杀):echo -1000 > /proc/$(pgrep mysqld)/oom_score_adj
- 永久生效可写入 systemd service 文件的
[Service]段:OOMScoreAdjust=-1000
- 配合
systemd.oom_policy=continue(v250+)让服务在被OOM前尝试优雅退出而非硬杀。
使用 cgroups v2 实现 CPU/内存软硬限制
现代 Linux(内核 ≥5.3 + systemd ≥245)默认启用 cgroups v2,可对服务组做细粒度资源围栏:
Linux AI 服务器 — 将 Linux 服务器转换为本地 AI 推理集群。使用 systemd、NVIDIA CUDA 实现无头 Linux AI,零 GUI 开销。
- 创建
/etc/systemd/system.slice.d/limit.conf:[Slice] MemoryMax=2G CPUQuota=50% IOWeight=50
- 重启后所有普通服务自动受此 slice 约束;
- 对高风险服务(如 Web 前端)单独设限:
sudo systemctl set-property nginx.service MemoryMax=1G CPUQuota=30%
这样即使某进程疯狂吃内存或占满 CPU,也不会拖垮整个系统。
部署轻量级压力响应脚本(如内存超阈值自动重启服务)
当 free -m | awk 'NR==2{avail=$7} END{print avail}' 小于 512MB 时,可触发预定义动作:
- 编写监测脚本
/usr/local/bin/check-memory.sh:#!/bin/bash avail=$(free -m | awk 'NR==2{print $7}') if [ "$avail" -lt 512 ]; then systemctl try-restart nginx.service 2>/dev/null logger "Memory low ($avail MB), restarted nginx" fi - 用 systemd timer 每 2 分钟执行一次:
sudo systemctl enable --now memory-check.timer
该方式灵活,可扩展为清理缓存(
echo 3 > /proc/sys/vm/drop_caches)、通知管理员或临时禁用非核心定时任务。
不复杂但容易忽略










