在 Linux 系统中,如果你想限制进程的资源占用,ulimit 是一个非常常用的命令。其中,数据段(data segment)大小限制也可以通过它来设置。具体怎么做?继续往下看。

首先,先查看当前 shell 会话里的 data 段限制是多少:
ulimit -d
如果返回的是 unlimited,或者是一个比较大的数值,说明目前还没有设置限制。假设你希望将数据段大小限制为 100MB,也就是 100,000 KB,可以直接执行:
ulimit -d 100000
不过要注意,这种设置只对当前 shell 以及它启动的子进程有效。只要退出终端,限制就会恢复默认。如果想让 data 段限制长期生效,就需要修改系统配置文件。
在 Linux 中,通常要编辑 /etc/security/limits.conf,并添加下面两行内容:
* soft data 100000
* hard data 100000
其中,soft 表示软限制,用户可以在不注销的情况下自行调低,但不能调高;hard 表示硬限制,任何情况下都不能超过这个值。如果把 * 改成具体用户名,就可以只对某个用户生效。
修改完成后,重新登录或重启相关服务,新的限制就会永久生效。这样,无论是运行脚本还是启动服务,系统都会自动控制数据段的上限。
