从正在运行的bash脚本中确定当前进程优先级

时间:2015-12-23 16:48:10

标签: linux bash nice

我想确保脚本只能在某个不错的级别下运行。我四处寻找并没有找到一个很好的方法,所以我想出了这个:

#!/usr/bin/env bash
set -euo pipefail
IFS=$'\n\t'

# use ps to get the niceness of the current process
# only look at the last line of output
# remove whitespace
readonly PRIORITY=$(ps -o '%n' $$ | tail -n 1 | tr -d '[[:space:]]')
if [[ "${PRIORITY}" -lt "10" ]]; then
    exit 100
fi

这对我来说似乎很草率,如果有更简单的方法可以很好。我想我真的只想要一个小程序来返回当前进程的调度优先级,但我不想自己编写3行代码: - /

1 个答案:

答案 0 :(得分:4)

GNU coreutils nice命令的文档:

Usage: nice [OPTION] [COMMAND [ARG]...]
     

使用调整后的好处运行COMMAND,这会影响流程调度。   如果没有COMMAND,请打印当前的好处。

但是,请注意

  

注意:你的shell可能有自己的nice版本,通常会取代它   这里描述的版本。请参阅您的shell文档   有关它支持的选项的详细信息。

如果你的shell确实有这样的内置行为,你想要使用通常的技术来运行二进制而不是内置。