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

我有一个脚本,我想同时运行2个程序,一个是ac程序,另一个是cpulimit,我想先用“&”在后台启动C程序,然后得到C程序的PID,把它交给cpulimit,它也会在后台运行“&”。

我试过下面这个,它只是开始第一个程序,并从不开始cpulimit。

另外我运行这个作为一个启动脚本作为root用在arch linux中的systemd

#!/bin/bash /myprogram & PID=$! cpulimit -z -p $PID -l 75 & exit 0 

Solutions Collecting From Web of "如何获得在bash脚本中执行的命令的进程ID?"

我想我现在已经解决了这个问题,按照这里: 链接我需要包装命令这样(命令)创建一个子shell。

 #!/bin/bash (mygprgram &) mypid=$! (cpulimit -z -p $mypid -l 75 &) exit 0 

我刚刚发现这个,同时使用谷歌搜索,并希望添加一些东西。

虽然你的解决方案似乎正在工作(请参阅有关subhell的评论),在这种情况下,你根本不需要得到PID。 就像这样运行命令:

 cpulimit -z -l 75 myprogram &