如何获取在bash脚本中执行的命令的进程ID?

时间:2014-02-03 16:15:02

标签: linux bash shell sh systemd

我有一个脚本我想同时运行2个程序,一个是c程序,另一个是cpulimit,我想先用“&”在后台启动C程序然后获取C程序的PID并将其交给cpulimit,它也将在后台以“&”运行。

我尝试在下面执行此操作,它只是启动第一个程序,从不启动cpulimit。

此外,我在root linux中使用systemd以root身份运行它作为启动脚本。

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0

2 个答案:

答案 0 :(得分:5)

我想我现在已经解决了这个问题,根据这里:link我需要像这样(命令)包装命令来创建一个子shell。

#!/bin/bash

(mygprgram &)
mypid=$!
(cpulimit -z -p $mypid -l 75 &)

exit 0

答案 1 :(得分:2)

我在google搜索时发现了这个,并想添加一些东西。

虽然您的解决方案似乎有效(请参阅有关子shell的注释),但在这种情况下,您根本不需要获取pid。只需运行如下命令:

cpulimit -z -l 75 myprogram &