Linux:如何更改进程可以打开的最大文件数?
发布时间:2020-12-13 22:44:42 所属栏目:Linux 来源:网络整理
导读:我必须在一组机器上执行一个进程.集群的大小是100的顺序.所以我不能手动执行进程,我必须通过脚本执行它们(使用ssh,目前我正在使用 python-paramiko).这些进程打开的tcp套接字数量超过1024(linux的默认限制.)所以我需要使用{ulimit -n 10000}更改它.这仅对该s
我必须在一组机器上执行一个进程.集群的大小是100的顺序.所以我不能手动执行进程,我必须通过脚本执行它们(使用ssh,目前我正在使用
python-paramiko).这些进程打开的tcp套接字数量超过1024(linux的默认限制.)所以我需要使用{ulimit -n 10000}更改它.这仅对该shell会话进行更改.此命令仅适用于root用户.所以我的脚本无法做到这一点.
我试图执行这个命令 sudo su && ulimit -n 10000 && <commandToExecuteMyProcess> 但这没效果. “sudo su”之后的命令根本没有执行.它们仅在我注销su会话时执行. 请建议我一些方法来永久地增加限制或通过脚本为每个会话更改它. 解决方法
这不是它的工作原理: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将始终成功完成. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |