当我注意到 sudo ulimit -c 返回未找到命令时,我正在尝试为另一个用户编写解决方案。然后我尝试了这个:
$ sudo ulimit -c
sudo: ulimit: command not found
$ ulimit -c
0
$ sudo -i
# ulimit -c
0
Run Code Online (Sandbox Code Playgroud)
所以......它从root开始工作,它在没有sudo的情况下工作,但没有sudo。这是一个错误吗?
我正在尝试增加 指示的最大打开文件硬(和软)限制ulimit -Hn。但无论我更改什么配置,4096即使重新启动后它也会保持不变。
在我的 中/etc/security/limits.conf,我有以下条目(其他所有内容都被注释掉):
* soft nofile 10000
* hard nofile 50000
Run Code Online (Sandbox Code Playgroud)
我的/etc/pam.d/common-session样子如下:
session [default=1] pam_permit.so
session requisit pam_deny.so
session required pam_permit.so
session optional pam_umask.so
session required pam_unix.so
session required pam_limits.so
session optional pam_systemd.so
session optional pam_cgfs.so -c freezer,memory,name=systemd
Run Code Online (Sandbox Code Playgroud)
为什么硬限制不更改为50000,即是否有其他机制影响它?
更新:
奇怪的是,当su首先对自己说话时,它的行为有所不同,即
$ whoami && ulimit -Hn
jdoe
4096
$ su - jdoe
$ whoami && ulimit -Hn
jdoe
50000
Run Code Online (Sandbox Code Playgroud)
这怎么可能?
myapp是最终崩溃的应用程序。我想获得那些崩溃的核心转储......
这是我为实现这一目标而编写的新贵脚本。它还没有工作。
description "myupstart"
start on runlevel [2534]
stop on runlevel [!2534]
script
ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
cd /path/to/app
./myapp
end script
respawn
Run Code Online (Sandbox Code Playgroud)
详细信息:
myapp适用于权限下降。它以 root [当然] 开始,然后切换到另一个用户名/组。这是一个问题吗?
如果我手动启动应用程序,以下命令在命令行上工作,但它们在 upstart 脚本中不起作用:
ulimit -c 10000
echo "/var/crash/core.%e.%s.%u.%g.%p.%t" > /proc/sys/kernel/core_pattern
Run Code Online (Sandbox Code Playgroud)
为什么会有这种差异?
使用 ulimit -ni 可以设置基于每个 shell 的最大打开文件限制
为了使这个值持久化,我可以在 /etc/security/limits.conf 中编辑它并重新启动 ubuntu 12.10 框,这是配置
* soft nofile 10240
* hard nofile 10240
root soft nofile 10240
root hard nofile 10240
Run Code Online (Sandbox Code Playgroud)
但上述值并未应用于 memcached 服务,如何将“最大打开文件数 10240”设置为 memcached 服务。
即使在设置limits.conf之后,memcached仍然显示
xx@xx:~$ ps aux|grep mem
mysql 2044 0.0 0.0 327436 1260 ? Sl 17:09 0:00 /usr/bin/memcached -vv -m 256 -p 11211 -u mysql -l 0.0.0.0
xx@xx:~$ cat /proc/2044/limits
Limit Soft Limit Hard Limit Units
Max cpu time unlimited unlimited seconds
Max file size unlimited unlimited bytes …Run Code Online (Sandbox Code Playgroud) 我有一个 bash 脚本。该 bash 脚本需要每 5 分钟运行一次,因此我创建了以下代码块:
#!/bin/bash
ulimit -n 600000
ulimit -u 600000
echo -e "This is another bash script to run mybashscript.sh"
# Lets create mycronscript.sh
echo "#!/bin/bash
ulimit -n 600000
ulimit -u 600000
while true; do
sleep 300
bash mybashscript.sh
done" >> mycronscript.sh
bash mycronscript.sh&
Run Code Online (Sandbox Code Playgroud)
每当它在 5 分钟后自行运行时,mybashscript.sh 就无法正常运行,因为未应用 ulimit 设置。我该如何修复它?
我在Ubuntu 18.04
尝试通过以下命令修改最大进程数(硬限制),并收到相应的错误:
$ ulimit -H -u 500
bash: ulimit: max user processes: cannot modify limit: Invalid argument
Run Code Online (Sandbox Code Playgroud)
同时 ...
$ ulimit -Hu
46955
Run Code Online (Sandbox Code Playgroud)
知道为什么吗?