如何检查 Ubuntu 服务器上 nginx 打开文件限制?

如何检查 Ubuntu 服务器上 nginx 打开文件限制?

我想su - nginx检查我是否正确设置了打开文件的软限制和硬限制。

为什么我不能su - nginx?我收到错误*No passwd entry for user 'nginx'*


编辑:

当然,用户是 www-data 而不是 nginx...当我这样做时,su - www-data我得到此帐户当前不可用。

基本上,我的问题是,我想查看打开文件的限制。如果我ulimit -n在 root 下执行此操作,我会得到 1024,我知道这是错误的...

答案1

您有些误解。在大多数 Linux 系统上,当用户按配置登录时,PAM 会设置资源限制。但 nginx 永远不会登录。因此,您正在测量与任何事情都无关的东西——没有人会以 www-data 进程的身份登录,您甚至无法做到这一点,因此该进程创建的任何文件限制都不会影响任何事情。

nginx 进程由其他进程启动,并继承该进程的资源限制。启动脚本可能会也可能不会更改它们,nginx 进程本身也可能会也可能不会更改它们。您可以根据需要调查此问题,但不能以 www-data 用户身份登录。

答案2

Nginx 有一个系统用户,该用户没有登录权限,因为 shell 是 /sbin/nologin(甚至是 /bin/false),所以您可以直接 SU 进入它。您需要指示 su 命令为我们执行哪个 shell。

su nginx -s /bin/bash
ulimit -n

答案3

看起来nginx系统上没有配置用户。

检查cat /etc/passwd | grep nginx

如果出现This account is currently not available此错误,则表示没有在 中配置有效的 shell /etc/passwd。检查本网站关于如何修复它的说明。

答案4

如果您想要www-data在不进行编辑的情况下检查用户限制/etc/passwd,您可以简单地运行以下命令:

su www-data -c 'ulimit -n' -s '/bin/bash'

Options:
  -c, --command COMMAND         pass COMMAND to the invoked shell
  -, -l, --login                make the shell a login shell
  -s, --shell SHELL             use SHELL instead of the default in passwd

相关内容