愛島発電所

QT SOLAR 愛島発電所

本日の発電量
1758 kWh
現在の日射量
939 Wh/㎡
現在の外気温
35.9 ℃

(2025/08/20 12:58 更新)

下増田発電所

QT SOLAR 下増田発電所

本日の発電量
219 kWh
現在の日射量
555.3 Wh/㎡
現在の外気温
37.9 ℃

(2025/08/20 13:06 更新)

北原東発電所

QT SOLAR 北原東発電所

本日の発電量
221 kWh
現在の日射量
342 Wh/㎡
現在の外気温
34.2 ℃

(2025/08/20 12:43 更新)

長久良辺発電所

QT SOLAR 長久良辺発電所

本日の発電量
220 kWh
現在の日射量
748 Wh/㎡
現在の外気温
35.7 ℃

(2025/08/20 12:54 更新)

白坂発電所

QT SOLAR 白坂発電所

本日の発電量
199 kWh
現在の日射量
362 Wh/㎡
現在の外気温
34.0 ℃

(2025/08/20 12:45 更新)

清水沢発電所

QT SOLAR 清水沢発電所

本日の発電量
173 kWh
現在の日射量
387 Wh/㎡
現在の外気温
31.9 ℃

(2025/08/20 12:51 更新)

Daemon[fork編] | Perlで作るサーバーサービス

PerlでDaemonを実装します。forkを使った方法となります。

デーモンとしての体裁を整えるには、ざっとこんな感じになります。

  • 標準ストリーム(入力・出力・エラー)を破棄する。
  • 開始時と終了時にログを残す。
  • エラー発生時にエラーログを残し、プロセスは続行させる。
  • ターミナルから制御を切り離す。
  • 終了 (termination) シグナルを受けて終了する。

telemetry.pl

#!/usr/bin/perl
use POSIX;
$isSIGTERM = "";
$SIG{'TERM'} = sub {
$isSIGTERM="true";
};
fork and exit;
POSIX::setsid();
fork and exit;
umask 0;
chdir '/';
open STDIN , '<', '/dev/null';
open STDOUT, '>', '/dev/null';
open STDERR, '>', '/dev/null';
open LOG, '>>', '/home/your-account/telemetry.log';
print LOG "Telemetry System is started at ".localtime."\n";
close LOG;
while(!$isSIGTERM){
eval {
# Your operations here.
$a=1/0;
};
if($@){
open ERRLOG, '>>', '/home/your-account/telemetry.err';
print ERRLOG "An error has occurred at ".localtime." as follows:\n -> ".$@;
close ERRLOG;
}
sleep(10);
}
open LOG, '>>', '/home/your-account/telemetry.log';
print LOG "Telemetry System is stopped at ".localtime."\n";
close LOG;
exit;

SIGTERMを受け取ると、sleepはすぐに戻ってくるようになるので、遅滞なく終了することが出来ます。要は再起動するときに10秒待つことはありません。

この他、以下の事項についても検討すると良いです。

  • 二重起動の抑止
  • ログのローテーション