私はおそらくあなたが参照答えの骨を使用しますが、追加します。
、それはおおよそ次のようになります。
#!/usr/bin/perl
use strict;
use warnings;
use Proc::Daemon;
Proc::Daemon::Init;
my $continue = 1;
################################################################################
# Exit on SIGTERM
################################################################################
$SIG{TERM} = sub { $continue = 0 };
################################################################################
# Re-read config file on SIGHUP
################################################################################
$SIG{HUP} = sub {
# Re-read some config file - probably using same sub that we used at startup
open(my $fh, '>', '/tmp/status.txt');
print $fh "Re-read config file\n";
close $fh;
};
################################################################################
# Report remaining time on SIGUSR1
################################################################################
$SIG{USR1} = sub {
# Subtract something from something and report difference
open(my $fh, '>', '/tmp/status.txt');
print $fh "Time remaining = 42\n";
close $fh;
};
################################################################################
# Main loop
################################################################################
while ($continue) {
sleep 1;
}
をあなたは、その後にHUPシグナルやUSR1シグナルを送信します:
pkill -HUP daemon.pl
または
pkill -USR1 daemon.pl
アウトについては/tmp/status.txt
を見てくださいデーモンから出してください。上記のコマンドは、Perlスクリプトをdaemon.pl
として保存したと仮定しています。別の名前を使用した場合は調整してください。
また、起動時にデーモンがpid
をファイルに書き込んで、pkill
に-F
オプションを使用することもできます。
これはHTTPベースなので、まったく新しいサーバーを開発する必要はありません。 – ikegami
@cocosushiTS:自分でサーバーを作成したり、既存のモジュールを使用してHTTPサーバーを作成することができます。 – Borodin
@cocosushiTS:選択したプロセス間通信を使用して独自のサーバーを作成できます。ソケットは一方向ですが、非常に低いレベルで動作し、単純なプロトコルを設計する必要があります。HTTPサーバーを実装するにはあまりにも多くの既製のソフトウェアがあるので、ほとんどのプレーンテキストであるHTTP要求に応答するものを書くのは理にかなっています。 – Borodin