Linux 如何在shell脚本中存储命令返回的值?
我不熟悉shell脚本。我有一个任务,我必须创建一个c程序的多个实例,在后台运行它们,并使用chrt实用程序更改它们的调度策略 在chrt实用程序中,我需要为每个进程提供进程ID,以更改其调度策略 现在,我必须将所有这些添加到shell脚本中,以自动化该过程 我的问题是,在创建实例之后,如何获取每个实例的进程ID并将其存储在变量中Linux 如何在shell脚本中存储命令返回的值?,linux,bash,shell,Linux,Bash,Shell,我不熟悉shell脚本。我有一个任务,我必须创建一个c程序的多个实例,在后台运行它们,并使用chrt实用程序更改它们的调度策略 在chrt实用程序中,我需要为每个进程提供进程ID,以更改其调度策略 现在,我必须将所有这些添加到shell脚本中,以自动化该过程 我的问题是,在创建实例之后,如何获取每个实例的进程ID并将其存储在变量中 gcc example.c -o w1 taskset 0x00000001 ./w1& taskset 0x00000001 ./w1& tasks
gcc example.c -o w1
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
taskset 0x00000001 ./w1&
pidof w1
chrt -f -p 1 <pid1>
gcc示例.c-o w1
任务集0x00000001./w1&
任务集0x00000001./w1&
任务集0x00000001./w1&
任务集0x00000001./w1&
pidof w1
chrt-f-p1
pidof w1将给出所有实例的进程ID。现在,我如何将所有这些ID存储在变量或数组中,并在chrt命令中传递它们?阅读本文:
要将命令的输出存储在变量中,请执行以下操作:
pids=$(pidof w1)
for each in $pids
do
# parse each values and pass to chrt command
chrt -f -p 1 $each
done
要使用该变量,请执行以下操作:
pids=$(pidof w1)
for each in $pids
do
# parse each values and pass to chrt command
chrt -f -p 1 $each
done
阅读本文:
要将命令的输出存储在变量中,请执行以下操作:
pids=$(pidof w1)
for each in $pids
do
# parse each values and pass to chrt command
chrt -f -p 1 $each
done
要使用该变量,请执行以下操作:
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。您只需要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。是否从bash脚本启动每个进程?如果是,请使用$代码>创建后,它指的是在后台启动的上一个作业的PID。可能是重复的而不是使用pidof
(可能会获取不相关进程的进程id),您可能更喜欢使用jobs-p
(也可能会获取您不想要的PID。选择您的毒药)chrt-f-p1$(jobs-p)
是否从bash脚本启动每个进程?如果是,请使用$代码>创建后,它指的是在后台启动的上一个作业的PID。可能是重复的而不是使用pidof
(可能会获取不相关进程的进程id),您可能更喜欢使用jobs-p
(也可能会获取您不想要的PID。选择您的毒药)<代码>chrt-f-p 1$(作业-p)