我知道友善值是从父进程的友善值继承的,但是我可以全局更改特定用户(我自己)的默认友善值吗?
在这种情况下,我想到了一个小型便利服务器,它只能通过ssh
.所以,我想我可以将我的默认 shell 从以下脚本更改/bin/bash
为:/etc/bash5
/etc/bash5
#!/bin/sh
nice -n 5 /bin/bash
#file privileges: root:root 755
在我看来,这是一个可怕的黑客行为,并且容易出错。一定会有更好的办法。
我最感兴趣的是通用解决方案,这也适用于台式机/笔记本电脑系统。
编辑:我尝试了建议的limits.conf
更改,但它没有按预期工作:
root@server# addgroup nice
root@server# adduser myself nice
root@server# echo '@nice soft nice 5' >> /etc/security/limits.conf
然后,从我的客户端机器上,我说
myself@client$ ssh server
myself@server$ sleep 1h &
myself@server$ htop
现在,该sleep
过程有一个初始美好值0
,但如果我将值更改为F8
19,然后尝试再次减少它F7
它停在5
。
编辑2:解决方案
您实际上必须使用而不是使用nice
中的项目,尽管这是违反直觉的。limits.conf
priority
@nice soft priority 5
答案1
/etc/security/limits.conf
您可以在文件中设置特定用户的优先级。
root hard/soft priority 10
这样您就可以为任何特定用户设置硬或软限制。因此,该 root 用户将启动的所有进程的默认优先级值都是 5。
根据维基百科页面:
为进程设置特定的良好值的确切数学效果取决于调度程序在 Unix 实现上的设计细节。
这是显示上述过程有效的快照:
这是limits.conf
文件的快照,显示了我最后添加的一行
root hard priority 15
更改此项后,我使用命令启动了一个 ssh 会话ssh root@localhost
此屏幕截图显示了最后两行,显示了最后两个进程的好值-bash
,sshd: root@pts/3
为 15。
编辑
这是快照,显示您可以增加和减少流程的良好程度
编辑2:
这是一个简短的说明,即使是普通用户也可以更改友善值。