标签: ulimit

限制单个 Linux 进程的内存使用

我正在pdftoppm将用户提供的 PDF 转换为 300DPI 图像。这很好用,除非用户提供页面非常大的 PDF。 pdftoppm将分配足够的内存来在内存中保存该大小的 300DPI 图像,对于 100 英寸的方形页面,它是 100*300 * 100*300 * 4 字节/像素 = 3.5GB。恶意用户可以给我一个愚蠢的大 PDF 并导致各种问题。

所以我想做的是对我即将运行的子进程的内存使用设置某种硬限制——如果它试图分配超过 500MB 的内存,就让进程死掉。那可能吗?

我不认为 ulimit 可以用于此,但是否有一个等价的进程?

linux memory ulimit

207
推荐指数
7
解决办法
30万
查看次数

/etc/security/limits.conf 中的更改是否需要重新启动?

更改是否/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)

limit ulimit

180
推荐指数
5
解决办法
37万
查看次数

ulimit:硬限制和软限制之间的区别

ulimit 中的硬限制和软限制有什么区别?

对于打开文件的数量,我的软限制为 1024,硬限制为 10240。可以运行打开超过 1024 个文件的程序。什么是软限制?

open-files ulimit

104
推荐指数
1
解决办法
11万
查看次数

如何在 Mac 上持续控制最大系统资源消耗?

在小牛队之前,我可以使用/etc/launchd.conf文件来改变最大系统资源消耗,例如:

limit maxfiles 16384 unlimited
limit maxproc 16384 unlimited
Run Code Online (Sandbox Code Playgroud)

它不再适用于小牛队。

在最新版本的 OS X 中,正确的做法是什么?

osx sysctl ulimit

86
推荐指数
4
解决办法
11万
查看次数

如何使用 systemd 设置服务的 ulimits?

您将如何在 systemd 服务单元上设置 ulimit?

这个stackoverflow 问题解释了 systemd 忽略了系统 ulimits

设置以下 ulimit 的语法是什么样的?

ulimit -c
ulimit -v
ulimit -m

[Unit]
Description=Apache Solr
After=syslog.target network.target remote-fs.target nss-lookup.target

[Service]
Type=forking
SOLR_INSTALL_DIR=/opt/solr
SOLR_ENV=/etc/default/solr.in.sh
RUNAS=solr

SOLR_PID_DIR="/var/solr"
SOLR_HOME="/opt/solr/server/solr"
LOG4J_PROPS="/var/solr/log4j.properties"
SOLR_LOGS_DIR="/opt/solr/server/logs"
SOLR_PORT="8389"

PIDFile=/var/solr/solr-8389.pid
ExecStart=/opt/solr/bin/solr start
ExecStatus=/opt/solr/bin/solr status
ExecStop=/opt/solr/bin/solr stop
Restart=on-failure
User=solr

SuccessExitStatus=143 0

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

systemd ulimit

61
推荐指数
1
解决办法
9万
查看次数

为什么我不能用叉形炸弹使我的系统崩溃?

最近我一直在挖掘有关 GNU/Linux 进程的信息,我遇到了臭名昭著的 fork 炸弹:

:(){ : | :& }; :
Run Code Online (Sandbox Code Playgroud)

理论上,它应该无限复制自己,直到系统耗尽资源......

但是,我已经尝试在CLI DebianGUI Mint发行版上进行测试,它似乎对系统影响不大。是的,创建了大量进程,一段时间后我在控制台消息中阅读了如下内容:

bash: fork: 资源暂时不可用

bash: fork: 重试: 没有子进程

但是一段时间后,所有进程都会被杀死,一切都恢复正常。我读过ulimit为每个用户设置了最大进程数,但我似乎无法将其提高到很远。

什么是针对叉形炸弹的系统保护?为什么在一切都冻结或至少滞后很多之前它不会自我复制?有没有办法用叉子炸弹真正使系统崩溃?

linux process fork ulimit

58
推荐指数
3
解决办法
1万
查看次数

文件描述符数量限制

我正在尝试安装389-ds,它给了我这个警告:

WARNING: There are only 1024 file descriptors (hard limit) available, which limit the number of simultaneous connections.
Run Code Online (Sandbox Code Playgroud)

我了解文件描述符,但我不了解软限制和硬限制。

当我跑cat /proc/sys/fs/file-max,我回来590432。这应该意味着我最多可以打开 590432 个文件(即最多有 590432 个文件描述符。

但是当我运行时ulimit,它给了我不同的结果:

$ ulimit
unlimited

$ ulimit -Hn    # Hard limit
4096

$ ulimit -Sn    # Soft limit
1024
Run Code Online (Sandbox Code Playgroud)

但是硬/软限制来自ulimit什么,它们与存储在的数字有什么关系/proc/sys/fs/file-max

linux file-descriptors ulimit

48
推荐指数
1
解决办法
13万
查看次数

如何增加所有进程的打开文件限制?

我可以使用 ulimit 但我认为这只会影响我的 shell 会话。我希望增加所有进程的限制。这是在红帽上。

rhel limit resources ulimit

43
推荐指数
5
解决办法
15万
查看次数

如何检查ulimit使用情况

有什么方法可以检查给定用户的 ulimit 使用情况吗?我知道您可以在启动时更改单个进程的 ulimit,或者在运行时更改单个 shell,但我希望能够“监控”用户接近其限制的程度。我计划编写一个bash脚本,将当前的使用百分比报告给 statsd。具体来说,我想跟踪:

  1. 打开文件(ulimit -n )
  2. 最大用户进程数(ulimit -u )
  3. 未决信号(ulimit -i )

我想要的是使用百分比(0-100)。

linux bash ulimit

41
推荐指数
3
解决办法
9万
查看次数

如何将每个进程的 I/O 限制到最大限制?

我正在寻找一种方法来将进程磁盘 io 限制为设定的速度限制。理想情况下,该程序的工作方式类似于:

$ limitio --pid 32423 --write-limit 1M
Run Code Online (Sandbox Code Playgroud)

将进程 32423 限制为每秒 1 兆字节的硬盘写入速度。

io process-management hard-disk limit ulimit

37
推荐指数
4
解决办法
5万
查看次数