2つのプログラムを同時に実行するスクリプトがあります。1つはCプログラムで、もう1つはcpulimitです。最初にCプログラムをバックグラウンドで「&」で開始し、次にCプログラムのPIDを取得します。バックグラウンドで「&」を使用して実行されるcpulimitに渡します。
以下でこれを試してみましたが、最初のプログラムが開始されるだけで、cpulimitは開始されません。
また、Arch Linuxのsystemdを使用して、これをrootとして起動スクリプトとして実行しています。
#!/bin/bash
/myprogram &
PID=$!
cpulimit -z -p $PID -l 75 &
exit 0
私はこれを今解決したと思います、これによると link サブシェルを作成するには、この(コマンド)のようにコマンドをラップする必要があります。
#!/bin/bash
(mygprgram &)
mypid=$!
(cpulimit -z -p $mypid -l 75 &)
exit 0
私はグーグルの最中にこれを見つけ、何かを追加したかっただけです。
ソリューションは機能しているようですが(サブシェルに関するコメントを参照)、この場合はpidを取得する必要はありません。次のようにコマンドを実行するだけです:
cpulimit -z -l 75 myprogram &