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

Ski*_*ilo 15 linux bash shell sh systemd

我有一个脚本我想同时运行2个程序,一个是交流程序,另一个是cpulimit,我想先在后台以"&"启动C程序,然后得到C程序的PID和将它交给cpulimit,它也将在后台以"&"运行.

我尝试在下面这样做,它只是启动第一个程序,永远不会启动cpulimit.

另外,我使用archd中的systemd作为root用户运行它作为启动脚本.

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0
Run Code Online (Sandbox Code Playgroud)

Ski*_*ilo 5

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

#!/bin/bash

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

exit 0
Run Code Online (Sandbox Code Playgroud)

  • 产生一个子shell,从而无需启动后台进程. (8认同)