【公式】HULFT IoT EdgeStreaming ファーストステップガイド_2020年5月1日_第2版発行

systemdでスクリプトをサービス化する

systemdを使用してスクリプトをサービス化するには、システムのユニットファイルを記述する必要があります。

 

  1. 起動スクリプト「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
    

     

  2. run.shの実行を許可します。

    $ chmod +x run.sh

     

  3. ユニットファイル「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
    

     

  4. ユニットファイル「es-agent.service」をディレクトリ「/etc/systemd/system」に配置します。

    # cp es-agent.service /etc/systemd/system
    

     

  5. 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)
    

     

  6. 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 ファーストステップガイド_2020年5月1日_第2版発行