perl スクリプトを非常に高速にループさせようとしています (Solaris で)。
私はこのようなものを持っています:
#! /bin/perl
while ('true')
{
use strict;
use warnings;
use Time::HiRes;
system("sh", "shell script.sh");
Time::HiRes::usleep(10);
}
perl スクリプトが 10 マイクロ秒ごとにシェル スクリプトを実行するようにします。スクリプトは失敗しませんが、スクリプト内で usleep の精度をどれだけ変更しても、スクリプトは 1 秒あたり約 10 回しか実行されません。それよりもはるかに速くループする必要があります。
ここで何か基本的なことが欠けていますか? これまで perl を使用したことはありませんが、Solaris では必要なスリープ速度が得られないため、perl を選択しました。
ティア
ハスキー。
編集:
ユーザーのコメントのおかげでスクリプトのアイデアが改訂されました - 私は今、すべてを perl 内で実行しようとしていますが、惨めに失敗しています! 基本的に、プロセスをキャプチャするために PS コマンドを実行しようとしています。プロセスが存在する場合は、行をキャプチャしてテキスト ファイルに出力します。
#! /bin/perl
while ('true')
{
use strict;
use warnings;
use Time::HiRes;
open(PS,"ps -ef | grep <program> |egrep -v 'shl|grep' >> grep_out.txt");
Time::HiRes::usleep(10);
}
これにより、次のエラーが返されます。
Name "main::PS" used only once: possible typo at ./ps_test_loop.pl line 9.