我希望将内存限制为在脚本中使用pid的进程,我希望查看我可以使用的东西,例如cpulimit或某些其他软件
答案 0 :(得分:1)
Linux中进程的内存限制通常是这样的:
setrlimit
系统调用(man page)为当前进程设置内存限制实际上,它是这样的:
$ ulimit -v [memory limit kilobytes]
$ ./[program who's memory you want to limit]
$ ulimit -v unlimited
Firejail是一个很好的工具,可以做到这一点。使用Firejail,我们可以发芽一个具有512字节内存限制的子进程,如下所示:
firejail --rlimit-as=number [command]
但是,与ulimit
不同,默认情况下,firejail不随CentOS一起安装。
我意识到这不是您想要的精确。我告诉您如何启动具有内存限制的进程,而严格地说,您仅询问如何修改正在运行的进程可用的内存PID。
与CPU和文件访问限制不同,如果在进程创建时而不是在运行时执行,则任何Linux发行版上的内存限制都非常简单。这是由于内核的设计,尤其是我之前提到的setrlimit
syscall。因此,尽管有可能。
但是,如果绝对确定要动态更改现有进程的内存限制,则可以使用cgroups完成。您所要做的就是创建一个具有特定内存限制的cgroup,并将您的进程放入该cgroup中。您应该执行以下操作:
mkdir /sys/fs/cgroup/memory/groupname
echo 1000 > /sys/fs/cgroup/memory/groupname/memory.limit_in_bytes
echo pid > /sys/fs/cgroup/memory/groupname/cgroup.procs
该方法更接近您的要求,但是第一种方法要简单得多,如果您的问题完全可行,我强烈建议您使用。祝你好运!