我想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