2015-12-23 62 views
1

我想確保腳本只能運行在某個好的級別下。我搜索周圍,我沒有發現這樣做的一個很好的方式,所以我想出了這個:從正在運行的bash腳本中確定當前的進程優先級

#!/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代碼自己: - 在GNU的coreutils/

回答

4

文檔nice命令:

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

運行COMMAND調整好,這會影響進程調度。 沒有COMMAND,打印當前的好處。

然而,提防

注意:你的shell可能有其自己版本的不錯,這通常取代 這裏所描述的版本。有關它支持的選項的詳細信息,請參閱您的shell的文檔 。

如果你的shell有這樣一個不同的行爲的內建,你會想使用通常的技術來運行一個二進制而不是內建。

+0

謝謝,我會盡快接受這個答案 – tonyg

相關問題