gpt4 book ai didi

CentOS 服务器上的 Perl setpriority 函数

转载 作者:太空宇宙 更新时间:2023-11-03 17:19:00 25 4
gpt4 key购买 nike

我在我的服务器上使用 CentOS 7 和 cPanel。我想弄清楚如何将 Perl 任务的优先级设置为低优先级。

当我调用 setpriority(PRIO_PROCESS, $$, 19) 时,任务显示在 cPanel 的任务管理器 (TOP) 列表中,优先级为 19。但是 cPanel 文档说任务管理器显示的值从 -20 到 20,其中-20 是该任务的最低 CPU 使用率。所以我尝试调用 setpriority(PRIO_PROCESS, $$, -19) 但任务在 cPanel 任务管理器中显示为优先级 0。

所以我尝试在 setpriority 之后立即调用 getpriority(PRIO_PROCESS, $$)。如果我使用任何负值的优先级值调用 setpriority,则 getpriority 会为当前进程返回 0。如果我用任何正值调用 setpriority,getpriority 将返回我刚刚指定的值。

任务管理器似乎显示了我在 setpriority 中使用的相同正值,但忽略了我在 setpriority 中发送的任何负值。

是否可以告诉CentOS将当前进程的优先级设置得非常低;也就是说,它以类似 -19 的优先级显示在任务管理器中,根据 cPanel 文档,该优先级非常低?

谢谢!

最佳答案

你把它倒过来了。在现代 Linux 系统上,范围是 -20 到 19,其中 -20 是最高优先级,19 是最低。 (在某些其他系统上它可以达到 20。)

当您提供负数时,您无意中试图提高优先级,但由于缺乏权限(幸运的是)阻止了您这样做,这就是优先级保持默认 0 的原因。您应该做的第一件事是检查错误!

use constant PRIO_PROCESS => 0;

# $userland_priority ranges from -20 (highest) to 19 (lowest).
my $userland_priority = 19;

setpriority(PRIO_PROCESS, $$, $userland_priority)
or die("setpriority: $!\n");

关于CentOS 服务器上的 Perl setpriority 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50144699/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com