1

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

#!/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 行 c 代码:-/

4

1 回答 1

4

GNU coreutilsnice命令的文档:

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

COMMAND以调整后的 niceness 运行,这会影响进程调度。没有COMMAND,打印当前的 niceness。

但是,请注意

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

如果你的 shell 确实有这样一个具有不同行为的内置函数,你会想要使用通常的技术来运行二进制文件而不是内置函数。

于 2015-12-23T16:51:27.593 回答