15

2 つのプログラムを同時に実行したいスクリプトがあります。1 つは ac プログラムで、もう 1 つは cpulimit です。最初に「&」を使用して C プログラムをバックグラウンドで起動し、次に C プログラムの PID を取得して、 「&」を使用してバックグラウンドでも実行される cpulimit に渡します。

以下でこれを試してみましたが、最初のプログラムが起動するだけで、cpulimit は起動しません。

また、arch Linux で systemd を使用して、これを root として起動スクリプトとして実行しています。

#!/bin/bash

/myprogram &

PID=$!

cpulimit -z -p $PID -l 75 &

exit 0
4

2 に答える 2

5

私はこれで解決したと思います。これによると、こちら:リンクサブシェルを作成するには、このようなコマンド (コマンド) をラップする必要があります。

#!/bin/bash

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

exit 0
于 2014-02-03T17:15:25.150 に答える
2

グーグルでこれを見つけたので、何か追加したかったのです。

ソリューションは機能しているように見えますが (サブシェルに関するコメントを参照)、この場合、pid を取得する必要はまったくありません。次のようにコマンドを実行するだけです:

cpulimit -z -l 75 myprogram &
于 2017-01-31T09:38:51.440 に答える