愛島発電所

QT SOLAR 愛島発電所

本日の発電量
657 kWh
現在の日射量
33 Wh/㎡
現在の外気温
1.5 ℃

(2024/12/27 16:40 更新)

下増田発電所

QT SOLAR 下増田発電所

本日の発電量
100 kWh
現在の日射量
4.5 Wh/㎡
現在の外気温
1 ℃

(2024/12/27 16:44 更新)

北原東発電所

QT SOLAR 北原東発電所

本日の発電量
142 kWh
現在の日射量
8 Wh/㎡
現在の外気温
2.1 ℃

(2024/12/27 16:34 更新)

長久良辺発電所

QT SOLAR 長久良辺発電所

本日の発電量
87 kWh
現在の日射量
10 Wh/㎡
現在の外気温
-0.4 ℃

(2024/12/27 16:32 更新)

白坂発電所

QT SOLAR 白坂発電所

本日の発電量
78 kWh
現在の日射量
10 Wh/㎡
現在の外気温
0.0 ℃

(2024/12/27 16:37 更新)

清水沢発電所

QT SOLAR 清水沢発電所

本日の発電量
207 kWh
現在の日射量
0 Wh/㎡
現在の外気温
0.0 ℃

(2024/12/27 16:29 更新)

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

Perlでサービスを実現するためには、実行スクリプトがデーモンとして動作する仕組みが必要となります。

先ずは超簡単な方法でデーモンの実装をしてみましょう。

テストのためデーモンとして実行するスクリプトを作ります。

goodnight.pl

中身は無限ループです。

#!/usr/bin/perl
print"Good night world!\n";
while(1){sleep(10)};
exit;

権限を付与します。

chmod 755 goodnight.pl

試しにスクリプトを起動してみる。

perl goodnight.pl

あるいは以下の方法でも良いです。

./goodnight.pl

無限ループに陥るので、制御が返ってきません。

ここでは、control+cで終了させます。

では、このスクリプトをデーモン化してみます。

方法はいたって簡単。コマンドの最後にアンパサンド「&」を付けるだけです。

./goodnight.pl &

これで制御が返ってきます。バックグラウンドで動いていることを確認してみましょう。

ps aux | grep goodnight

では、このデーモンプロセスの起動を自動化してみます。これは、起動スクリプトの作成によって行います。

sudo touch /etc/init.d/goodnight
sudo vi /etc/init.d/goodnight

以下編集。

実行するPerlスクリプトをフルパスで記述します。

#!/bin/sh
/home/your-account/goodnight.pl &

このとき最後に & を付け忘れると、プログラムが終了するまでシステムの起動が停止します。

権限の付与。

sudo chmod 755 goodnight

これで起動スクリプトが完成です。

次に、ランレベルの設定をしますが、ここではシンボリックリンクの作成で行うことにします。

取りあえずランレベル2がどうなっているか確認してみます。

ls -l /etc/rc2.d

apache2より後に起動させるようにしてみます。

以下、ランレベル2〜5まで。

sudo ln -s /etc/init.d/goodnight /etc/rc2.d/S92goodnight
sudo ln -s /etc/init.d/goodnight /etc/rc3.d/S92goodnight
sudo ln -s /etc/init.d/goodnight /etc/rc4.d/S92goodnight
sudo ln -s /etc/init.d/goodnight /etc/rc5.d/S92goodnight

正しく出来ているか確認します。実体がない場合、ls -la でシンボリックリンクが反転表示されます。

なお、シンボリックリンクの削除にも触れておきます。

sudo unlink /etc/rc2.d/S92goodnight

rmでも出来ますが実体を削除しないよう注意です。

と、いうことですが、ランレベルの設定は「sysv-rc-conf」を使っても出来ます。

先ほどの設定が正しく行われたか確認してみましょう。

sudo sysv-rc-conf

これで何の役にも立たないデーモンが完成しました。

再起動して試してみましょう。

sudo shutdown -r now

再起動したら動作しているか確認します。

ps aux | grep goodnight

root権限で動いていますね。