gpt4 book ai didi

linux - 根据 nice 值终止进程 (bash)

转载 作者:太空狗 更新时间:2023-10-29 11:31:56 24 4
gpt4 key购买 nike

我目前正在做一个练习,要求我编写一个脚本,根据它的 nice 值终止“ sleep ”进程。因此,在一个终端中,当我在另一个终端中运行我的脚本时, sleep 命令 100(默认 niceness 值为 0)将立即终止。但是,我在为其编写脚本时遇到了问题。这是我目前所拥有的:

#!/usr/local/bin/bash
nice="$(ps eo pid,user,nice,command | grep sleep)"

if nice <= 4
then
kill -9 sleep
fi

我的问题是:如何从一个命令中获取 nice 值并将其转换为一个我可以通过 if 语句运行的简单变量?

此外,我在运行脚本时遇到了问题。当我在一个终端中运行 sleep 命令并尝试输入 sh kill_sleep.sh 时,它坚持认为它无法打开它。可能出了什么问题?

最佳答案

下面的命令杀死所有 niceness <= 4 的 sleep 进程:

ps -o pid= -o nice= -C sleep | awk '$2<=4{system("kill " $1)}'

选项-C sleep告诉ps仅选择 sleep命令。

选项-o pid= -o nice=指定 ps应该在省略 header 的同时输出进程 ID 和 nice 值。

在 awk 命令中,$2<=4仅选择那些 nice 小于或等于 4 的行。(因为 niceps 输出每行的第二个值,awk 将其称为 $2。)

对于那些选定的行,awk 命令 system("kill " $1)运行。这将运行 shell 命令 kill在 pid 上。 (由于 PID 是每行 ps 输出的第一个值,awk 将其称为 $1 。)

kill pid命令向进程发送默认信号 TERM .该信号允许进程正常关闭。 kill -9应该almost always be avoided.

关于linux - 根据 nice 值终止进程 (bash),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32831154/

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