0

現在、起動時に常に実行されるはずの perl スクリプトを起動しようとしています。

私はCentOSサーバーで作業しています。

この行を追加しました/etc/rc.d/rc.localが、コンソールから同じ行を入力すると、スクリプトが動作している間は起動しません:

perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 >> /dev/null &

このスクリプトは実際には起動されるはずであり、データベースにデータを挿入するのに必要なだけ待機する必要がありますが、

>> /dev/null/& 

スクリプトがバックグラウンドで動作している間、マシンを使い続けることができます。

なぜうまくいかないのかわからないので、何ができるのか本当にわかりません...

私が何を試すことができるかについて何か考えがありますか?

編集:これを行うことで、スクリプトを適切に起動できたことがわかりました:

nohup /usr/bin/perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 > /outputsvcperf.txt &

しかし、起動時と私のperlスクリプトの前に起動されるはずなのに、PostgreSQLサーバーが時間内に起動されないため、動作しません...

4

2 に答える 2

0

さて、ここにトリックがあります:

コマンドラインを実行するphpスクリプトを作成し、ルートのcrontabに配置して、スクリプトが実行されているかどうかを常にチェックし、実行されていない場合は実行します。

コードは次のとおりです。

#!/usr/bin/php
<?php

    $resultat = shell_exec("ps aux | grep perl");
    if(preg_match("/svcperf.pl/", $resultat)){
        echo "Service déjà en route.";
    }else{
        echo "Service non lancé.";
        echo "\nDémarrage...";
        shell_exec("/usr/bin/perl /svcmon/bin/svcperf.pl --svc fav01svc --interval 5 > /dev/null &");
    }

?>

助けてくれてありがとう。

于 2013-05-13T13:01:35.247 に答える