【公式】HULFT IoT EdgeStreaming ファーストステップガイド_2022年4月1日_第5版発行
systemdでスクリプトをサービス化する
systemdを使用してスクリプトをサービス化するには、システムのユニットファイルを記述する必要があります。
-
起動スクリプト「run.sh」を作成し、「es-agent」と同階層のディレクトリに配置します。
起動スクリプトの内容は以下のとおりです。
#!/bin/sh BIN_DIR=/opt/edge COMMAND=${BIN_DIR}/es-agent cd $BIN_DIR exec $COMMAND run -c ${BIN_DIR}/es-agent.yaml exit 0
-
run.shの実行を許可します。
$ chmod +x run.sh
-
ユニットファイル「es-agent.service」を変更します。
ファイルの内容は以下のとおりです。
[Unit] Description=es-agent ConditionPathExists=/opt/edge [Service] Type=simple ExecStart=/opt/edge/run.sh ExecStop=/bin/kill -TERM ${MAINPID} Restart=always [Install] WantedBy=multi-user.target
-
ユニットファイル「es-agent.service」をディレクトリ「/etc/systemd/system」に配置します。
# cp es-agent.service /etc/systemd/system
-
systemdにユニットファイルを追加・更新したことを通知します。
# systemctl daemon-reload # systemctl status es-agent.service es-agent.service - es-agent Loaded: loaded (/etc/systemd/system/es-agent.service; disabled) Active: inactive (dead)
-
es-agent を自動起動する設定を行います。
# systemctl enable es-agent.service ln -s '/etc/systemd/system/es-agent.service' '/etc/systemd/system/multi-user.target.wants/es-agent.service' # systemctl status es-agent.service es-agent.service - es-agent Loaded: loaded (/etc/systemd/system/es-agent.service; enabled) Active: inactive (dead)
これでIoTゲートウェイのOSが起動する際にes-agentが自動で起動するよう設定できました。 念のため、設定が正しく行えたことを確認します。
「systemctl start <サービス名>」でサービスを起動し、「systemctl status <サービス名>」でサービスの状態と標準出力の内容を確認します。
このときエラーが出力されていなければ、スクリプトが正しくサービス化され、起動を行うことができています。
# systemctl start es-agent.service # systemctl status es-agent.service ● es-agent.service - es-agent Loaded: loaded (/etc/systemd/system/es-agent.service; enabled) Active: active (running) since Tue 2020-02-25 06:00:39 CET; 7s ago Process: 1577 ExecStop=/bin/kill -TERM ${MAINPID} (code=exited, status=0/SUCCESS) Main PID: 1661 (es-agent) CGroup: /system.slice/es-agent.service └─1661 /opt/edge/es-agent run -c /opt/edge/es-agent.yaml Feb 25 06:00:39 debian run.sh[1661]: time="2020-02-25T05:00:39Z" level=info msg="no plugins to load" file=loade...script Feb 25 06:00:39 debian run.sh[1661]: time="2020-02-25T05:00:39Z" level=info msg="Starting the server on :15601" Feb 25 06:00:39 debian run.sh[1661]: {"cpu":99.99999999779732,"disk_avail":14.960063934326172} Feb 25 06:00:40 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172} Feb 25 06:00:41 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172} Feb 25 06:00:42 debian run.sh[1661]: {"cpu":0.9900990099009309,"disk_avail":14.960063934326172} Feb 25 06:00:43 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172} Feb 25 06:00:44 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172} Feb 25 06:00:45 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172} Feb 25 06:00:46 debian run.sh[1661]: {"cpu":0,"disk_avail":14.960063934326172}
【公式】HULFT IoT EdgeStreaming ファーストステップガイド_2022年4月1日_第5版発行