【问题标题】:determine current process priority from within a running bash script从正在运行的 bash 脚本中确定当前进程的优先级
【发布时间】:2016-03-30 03:47:32
【问题描述】:

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

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

【问题讨论】:

    标签: linux bash nice


    【解决方案1】:

    GNU coreutils nice 命令的文档:

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

    运行COMMAND 并调整好,这会影响进程调度。 没有COMMAND,打印当前的nice。

    但是,请注意

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

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

    【讨论】:

    • 谢谢,我会尽快接受这个答案
    猜你喜欢
    • 2013-06-26
    • 1970-01-01
    • 2010-09-06
    • 2014-01-08
    • 2011-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多