更改是否/etc/security/limits.conf需要重新启动才能生效?
例如,如果我有一个在 中设置以下限制的脚本/etc/security/limits.conf,是否需要重新启动系统才能使这些限制生效?
* hard nofile 94000
* soft nofile 94000
* hard nproc 64000
* soft nproc 64000
Run Code Online (Sandbox Code Playgroud) 现在,我知道如何:
ulimit -nlsof | wc -lcat /proc/sys/fs/file-max我的问题是:为什么在 Linux 中有打开文件的限制?
有没有办法限制ls命令上列出的文件数量?
我见过:
ls | head -4
Run Code Online (Sandbox Code Playgroud)
但是要获得head或被tail执行,我需要等待ls完成执行,并且目录中的文件数量巨大,可能需要相当长的时间。
我希望在ls不使用该head命令的情况下执行一个限制命令。
如何将进程限制为一个 CPU 内核?
类似于ulimit或cpulimit会很好的东西。(只是为了确保:我不想限制使用百分比或执行时间。我想强制应用程序(包括所有子进程、进程(线程))使用一个 cpu 核心(或“n”个 cpu 核心))。
我正在 Arch Linux(内核 4.3.3-2)上运行一个带有多个容器的 docker 服务器。自从我上次重新启动后,容器内的 docker 服务器和随机程序都崩溃了,并显示一条关于无法创建线程或(较少)fork 的消息。具体的错误信息因程序而异,但大多数似乎都提到了具体的错误Resource temporarily unavailable。有关一些示例错误消息,请参见本文末尾。
现在有很多人收到了这个错误信息,并且有很多人对他们做出了回应。真正令人沮丧的是,每个人似乎都在猜测如何解决问题,但似乎没有人指出如何确定存在问题的众多可能原因中的哪一个。
我收集了这 5 个可能的错误原因以及如何验证它们不存在于我的系统中:
/proc/sys/kernel/threads-max( source ) 中配置的线程数有系统范围的限制。在我的情况下,这设置为60613.ulimit -s( source )配置的。我的壳的极限曾经是8192,但我已经通过将增加其* soft stack 32768成/etc/security/limits.conf,因此它ulimit -s现在的回报32768。我也增加了它的码头工人,过程将LimitSTACK=33554432进入/etc/systemd/system/docker.service(源,和我核实,该限制适用通过查看/proc/<pid of docker>/limits,并通过运行ulimit -s一个泊坞窗容器内。ulimit -v. 在我的系统上,它设置为unlimited,并且我的 3 GB 内存中有 80% 是空闲的。ulimit -u。在这种情况下,线程算作进程(源)。在我的系统上,限制设置为30306 …所以我有 4 GB RAM + 4GB 交换。我想创建一个具有有限内存和交换空间的用户:3 GB RAM 和 1 GB 交换空间。这样的事情可能吗?是否可以在不创建单独用户的情况下启动具有有限 RAM 的应用程序并对其进行交换(并且不安装任何特殊应用程序 - 只有默认的 Debian/CentOS 服务器配置,并且不使用 sudo)?
更新:
所以我打开终端并输入ulimit命令:ulimit -v 1000000这就像976,6Mb限制。接下来我打来电话ulimit -a,看到限制是“开启”。然后我开始了一些 bash 脚本,它编译并启动我的应用程序nohup,很长 nohup ./cloud-updater-linux.sh >& /dev/null &......但一段时间后我看到:

(如果没有应用限制就可以了——它下载了一些大的库,并开始编译它。)
但我认为我对 shell 和所有使用它启动的进程应用了限制ulimit -v 1000000?我做错了什么?如何使终端及其启动的所有子进程限制在 ram 使用上?
我可以使用 ulimit 但我认为这只会影响我的 shell 会话。我希望增加所有进程的限制。这是在红帽上。
我需要测试一个内存管理过程。
limitmemory 400k -p <pid>有没有办法在unix中做到这一点?任何常见的 Unix 实用程序都很棒。
我运行的 Linux 系统有很多用户,但有时会发生滥用;用户可能会运行一个占用超过 80% 的 CPU/内存的进程。
那么有没有办法通过限制进程可以使用的 CPU 使用量(例如 10%)来防止这种情况发生?我知道cpulimit,但不幸的是,它对我指示它限制的进程(例如单个进程)应用了限制。所以我的问题是,如何将限制应用于所有正在运行的进程和将来将运行的进程,而无需提供它们的 id/path 例如?
我们有一个 Ubuntu 12.04 服务器,在端口 80 上有 httpd,我们想限制:
我们如何用 iptables 做到这一点?