如何在 shell 脚本中存储命令返回的值?



我是shell脚本的新手。我的任务是必须创建 c 程序的多个实例,在后台运行它们并使用 chrt 实用程序更改它们的调度策略。

在 chrt 实用程序中,我需要为每个进程提供进程 ID 以更改其调度策略。

现在我必须在 shell 脚本中添加所有这些以自动化该过程。

我的问题是,创建实例后,如何获取每个实例的进程 ID 并将其存储在变量中?

gcc example.c -o w1
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
pidof w1
chrt -f -p 1 <pid1>     

Pidof W1 将提供所有实例的进程 ID。现在如何将所有这些 ID 存储在变量或数组中并在 chrt 命令中传递它们?

阅读这篇文章: https://www.tldp.org/LDP/Bash-Beginners-Guide/html/sect_10_02.html

将命令的输出存储在变量中:

pids=$(pidof w1)

要使用变量:

for each in $pids
do
# parse each values and pass to chrt command
chrt -f -p 1 $each
done 

您只需要pidof,因为您首先忽略了后台作业的进程 ID。

gcc example.c -o w1
pids=()
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
taskset 0x00000001 ./w1 & pids+=($!)
for pid in "${pids[@]}"; do
chrt -f -p 1 "$pid"
done

特殊参数$!包含最近后台进程的进程 ID。

最新更新