Linux修改进程使用资源限制办法
2024-10-31 18:10:36
问题描述
ebpf运行显示没有权限,查阅log后发现是因为lock memory大小的限制。因此,准备通过ulimit -l的方式来修改大小。使用普通用户时,显示没有权限。加入sudo运行后,则修改没有生效。
解决办法
需要明确的是,按照man page的说法:
Resource limits are per-process attributes that are shared by all of the threads in a process.
也就是说,这个限制是进程为单位的,我个人理解,这个limit conf是进程拉起时,从session继承过来的。因此sudo无法生效的原因在于sudo会拉起一个新的shell,不会改变当前shell的配置。
遇到这种情况,有两种办法:
第一种办法,就是在程序内部,通过syscall自己修改自己的limit。
代码如下:
1 | static int setup_env() |
第二种办法,就是直接修改整个系统的limit配置,修改/etc/security/limits.conf即可。