0

NagiosボックスにNagiosリモート外部コマンドデーモンをセットアップして構成しましたが、開始するとすぐにエラーなしで終了するように見えることがわかりました。

サーバーはubuntu 12.10で、nrecdは単純なプロセスとしてtarファイルからインストールされました-構成ディレクトリを作成し、/etc/rc.localに行を追加し、binファイルを/usr/binにコピーして構成を行います。

を実行するsudo nrecdと、応答はServer nrecd started successfully. PID = 10698.になりますが、すぐに実行しps -A | grep 10698ても何も表示されません。同様に、anetstat -anは 5665 でリッスンしているサービスがないことを示しています。

sudo nrecd stopログファイルに表示される唯一のエントリは、サーバーを停止したときです(古いpidfileを削除したときに実際に発生するすべてを考慮すると、それらも虚偽です)。

/usr/bin/nrecd で、「サーバーが正常に開始されました」行を出力する行のコードを調べ、printその場所に他の行を追加しました。

my $mypid = daemonize();
print "Server $basename started successfully. PID = $mypid.\n" if $mypid;
print "line 122";
create_pid_file( $mypid, $pidfile );
print "line 124";
change_privileges( $user, $group );
print "line 126";
lock_stdio();
print "line 128";
chmod( 0666, $logfile );
print "line 130";
logmsg( "Server $basename Started Successfully.\n" );

わかりました:

Server nrecd started successfully. PID = 10698.
line 122line 124line 126

これは、問題が lock_stdio(); にあることを示しています。サブ。これは私が立ち往生するところに近いです。私は perl プログラマーではありませんが、IO を /dev/null にリダイレクトするだけで、すべてのサブシステムが標準のように見えます。私は perl -d で実行しようとしましたが、最終的にはファイルを 1 行ずつ見ていき、何も新しいことを学ぶことはありませんでした。

サブ自体は次のとおりです。

sub lock_stdio {
    open( STDIN,  '<', '/dev/null'  ) or croak "Can't read /dev/null: $!";
    open( STDOUT, '>>', '/dev/null' ) or croak "Can't write to /dev/null: $!";
    open( STDERR, '>>', '/dev/null' ) or croak "Can't write to /dev/null: $!";
    return();
};

これを解決するために誰かが提案できることはありますか? それが本当にその 3 ライン サブに分離されている場合、問題を見つけることができないのはばかげていると感じます (私にはストック標準に見えると言ったように)。どんな助けでも大歓迎です!

4

2 に答える 2

1

これをコメントとして入れなかったことをお詫びしますが、十分な担当者がいません。

lock_stdioサブルーチンはすべての出力をに送信するため、呼び出した後にステートメント/dev/nullからの出力は表示されません。printそのサブをコメントアウトすると何か変わりますか?

于 2013-01-22T00:19:38.993 に答える
1

問題は lock_stdio サブにはありません。それは、出力が最初の stdout への送信を停止し、/dev/null への送信を開始する場所です。

別のファイルを開いてみてください:

open my $debugfile, '>>', 'somefilename' or die "couldn't open debug file: $!\n";

それにデバッグステートメントを書きます:

print $debugfile "line xxx\n";

エラーメッセージがないかログファイルを調べましたか?

于 2013-01-22T00:19:57.927 に答える