首页/系统/Linux 运维命令速查/场景:限制单个脚本的资源
进程与作业69 条

场景:限制单个脚本的资源

跑一个可能吃资源的脚本(转码/解析大文件):用子 shell + ulimit 兜底,超限被杀而不是拖垮整机。

Linux 运维命令速查系统更新于 2026-10-12
场景给临时任务设资源上限
组合( ulimit ...; 命令 ) 子 shell 沙箱

常用护栏

常用护栏
( ulimit -v 2000000; ulimit -u 512; timeout 600 ./heavy.sh )
# -v 虚拟内存 KB;-u 进程数;timeout 总时长
echo "exit=$?"                       # 137/124 等对应被杀/超时

CPU 时间上限

CPU 时间上限
( ulimit -t 300; ./cpu-hog.sh )      # 超过 300 秒 CPU 时间被 SIGXCPU
长期正确的做法:systemd 单元里 MemoryMax/CPUQuota/TasksMax,比 ulimit 更精确(cgroup 计量)。

易错点

  • ulimit -v 管的是地址空间:Java/Go 预留大地址空间,限太紧起不来(这类用总内存 cgroup 更合适)
  • 子 shell 里设置只影响该命令:父 shell 与后续命令不受限(这正是目的)

数据来源与参考

  • man 1 bash(ulimit 内建)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌