gpt4 book ai didi

BASH - 在系统内部使用一列 awk

转载 作者:行者123 更新时间:2023-11-29 09:49:01 26 4
gpt4 key购买 nike

在 Bash 中,我试图获得 %CPU 占用最多的进程。一旦我得到它,我就会使用 awk 来评估是否必须终止该进程或者只是改变它很好。一旦我得到了这个过程,这就是我想要做的:

awk -v awkmax="$CPU_MAX" '
{
if( $3 > awkmax && $4 < 15 ) {
system("renice "$4"+5 -p "$1"")
}
else if ( $3 > awkmax && $4 == 15 ) {
system("kill -9 "$1"")
print "The process $1 has been killed.\n"
}
}'

其中 $3 是 pcpu,$4 是 nice 值,$1 是 pid。

我的问题是:

system("renice "$4"+5 -p "$1"")

它不起作用,因为 "$4"+5,这是进程的实际 nice 加 5。

我如何将该值传递给 renice?

最佳答案

您有一些引用问题,第一个 system 调用应该是:

system("renice " $4 + 5 " -p " $1)

第二个:

system("kill -9 " $1)

空格是 awk 中的字符串连接运算符。

关于 kill -9 的注意事项:在求助于 -9 之前最好从不太严重的信号开始,因为这不会让进程进行任何清理在它自己之后,IIRC,从 SIGHUP (-1) 开始,然后是 SIGINT (-2),然后是 SIGTERM (-15),如果这些都不会使进程退出,然后使用 SIGKILL (-9)。

关于BASH - 在系统内部使用一列 awk,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12556900/

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