Linux:如何更改进程可以打开的最大文件数?

我必须在一组机器上执行一个进程.集群的大小是100的顺序.所以我不能手动执行进程,我必须通过脚本执行它们(使用ssh,目前我正在使用
python-paramiko).这些进程打开的tcp套接字数量超过1024(linux的默认限制.)所以我需要使用{ulimit -n 10000}更改它.这仅对该shell会话进行更改.此命令仅适用于root用户.所以我的脚本无法做到这一点.

我试图执行这个命令

sudo su && ulimit -n 10000 && <commandToExecuteMyProcess>

但这没效果. “sudo su”之后的命令根本没有执行.它们仅在我注销su会话时执行.
This文章显示了永久更改的方法.但是当我打开limits.conf时,我没有找到任何东西.它只有一些注释说明.

请建议我一些方法来永久地增加限制或通过脚本为每个会话更改它.

最佳答案 这不是它的工作原理:sudo su只是打开一个新的shell,所以你可以以root身份引入命令,在你退出shell后,它会以普通用户的身份执行其余部分.

第二:你的这是一个特例,因为ulimit实际上不是一个程序,而是一个bash shell内置命令,所以它必须在bash中使用,这就是sudo ulimit -n 10000之类的东西不起作用的原因:sudo can找不到该程序,因为它不存在.

所以,唯一的选择是有点难看,但有效:

 sudo bash -c 'ulimit -n 10000 && <command>'

“…”内的所有内容都将在root用户的bash会话中执行.

请注意,您可以替换&&与;在这种情况下:那是因为它以root身份执行,ulimit -n 10000将始终成功完成.

点赞