Aslan986 Asked: 2018-07-04 22:38:21 +0800 CST2018-07-04 22:38:21 +0800 CST 2018-07-04 22:38:21 +0800 CST 使任何人都可以杀死给定用户的所有进程 772 在共享服务器上,我希望有一些非常低优先级的用户,这样当其他用户(也没有 root 权限)需要资源时,他们可以杀死任何低优先级用户的进程。 有可能允许这样的事情吗? users not-root-user 3 个回答 Voted Best Answer Kusalananda 2018-07-04T22:50:18+08:002018-07-04T22:50:18+08:00 授予其他用户以低优先级用户身份终止进程的权限 sudo -u lowpriouser /bin/kill PID 用户只能向自己的进程发出信号,除非他们具有 root 权限。通过sudo -u在文件中使用具有正确设置的用户,sudoers可以假定低优先级用户的身份并终止该进程。 例如: %killers ALL = (lowpriouser) /bin/kill 这将允许组中的所有killers用户/bin/kill以lowpriouser. 另请参阅sudoers系统上的手册。 在 OpenBSD 系统上,同样可以通过本机doas实用程序完成,其配置如下 permit :killers as lowpriouser cmd /bin/kill 然后 doas -u lowpriouser /bin/kill PID 请参阅 和 的doas手册doas.conf。 Alnitak 2018-07-05T07:23:06+08:002018-07-05T07:23:06+08:00 您不应该杀死这些进程,如果它们的优先级较低,它们将消耗很少的资源。 要真正使它们成为低优先级,要么手动更改它们的优先级,要么使用像autonice我多年前(c. 1994)为 DEC OSF/1 编写的守护进程,它寻找长时间运行的作业并逐渐降低它们的优先级运行时间越长. 编辑有一个名为and为现代 Unices 提供此功能的包。 David Foerster 2018-07-05T05:13:10+08:002018-07-05T05:13:10+08:00 我认为您从错误的角度处理问题:如果一个进程以低优先级设置(CPU、I/O)运行,它不应该对其他进程产生太大影响,因为它不会被安排运行。至于内存使用,如果主内存很紧并且进程没有安排很长时间运行(例如由于 CPU 和 I/O 限制),它的“干净”页面将被丢弃,而它的“脏”页面将被提交或换出,不再影响其他进程的性能。 结论:通过正确的优先级设置和足够的交换空间,应该没有必要杀死低优先级的作业来为更重要的任务腾出“空间”;相反,内核会注意让前者进入睡眠状态,以支持后者。
授予其他用户以低优先级用户身份终止进程的权限
用户只能向自己的进程发出信号,除非他们具有 root 权限。通过
sudo -u
在文件中使用具有正确设置的用户,sudoers
可以假定低优先级用户的身份并终止该进程。例如:
这将允许组中的所有
killers
用户/bin/kill
以lowpriouser
.另请参阅
sudoers
系统上的手册。在 OpenBSD 系统上,同样可以通过本机
doas
实用程序完成,其配置如下然后
请参阅 和 的
doas
手册doas.conf
。您不应该杀死这些进程,如果它们的优先级较低,它们将消耗很少的资源。
要真正使它们成为低优先级,要么手动更改它们的优先级,要么使用像
autonice
我多年前(c. 1994)为 DEC OSF/1 编写的守护进程,它寻找长时间运行的作业并逐渐降低它们的优先级运行时间越长.编辑有一个名为
and
为现代 Unices 提供此功能的包。我认为您从错误的角度处理问题:如果一个进程以低优先级设置(CPU、I/O)运行,它不应该对其他进程产生太大影响,因为它不会被安排运行。至于内存使用,如果主内存很紧并且进程没有安排很长时间运行(例如由于 CPU 和 I/O 限制),它的“干净”页面将被丢弃,而它的“脏”页面将被提交或换出,不再影响其他进程的性能。
结论:通过正确的优先级设置和足够的交换空间,应该没有必要杀死低优先级的作业来为更重要的任务腾出“空间”;相反,内核会注意让前者进入睡眠状态,以支持后者。