我有一个脚本我想同时运行2个程序,一个是c程序,另一个是cpulimit,我想先用“&”在后台启动C程序然后获取C程序的PID并将其交给cpulimit,它也将在后台以“&”运行。
我尝试在下面执行此操作,它只是启动第一个程序,从不启动cpulimit。
此外,我在root linux中使用systemd以root身份运行它作为启动脚本。
#!/bin/bash
/myprogram &
PID=$!
cpulimit -z -p $PID -l 75 &
exit 0
答案 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 &