目錄

簡介

必要條件

需求

採用元件

設定

對於init.d

對於Systemd

驗證

對於init.d

對於Systemd

疑難排解

簡介

本文檔介紹如何為EFM（邊緣霧處理模組）資產管理器建立init.d或Systemd的服務檔案。

必要條件

需求

思科建議您應具備Linux相關知識。

採用元件

本文件所述內容不限於特定軟體和硬體版本。

本文中的資訊是根據特定實驗室環境內的裝置所建立。文中使用到的所有裝置皆從已清除（預設）的組態來啟動。如果您的網路運作中，請確保您瞭解任何指令可能造成的影響。

設定

EFM安裝套件不包含現成的init.d或Systemd服務檔案。

您可以在此找到為EFM的Asset Manager元件建立服務檔案的簡單範例。

對於init.d

[root@cen7 ~]# cat /etc/init.d/assetmanager

#!/bin/bash

# parstream init script.

ASSETMANAGER_HOME="/opt/cisco/kinetic/asset_manager/"

ASSETMANAGER_USER="EFM"

case "$1" in

'start')

echo "Starting EFM Asset Manager daemon as user $ASSETMANAGER_USER"

sleep 2

su -c "cd $ASSETMANAGER_HOME;$ASSETMANAGER_HOME/bin/start.sh" $ASSETMANAGER_USER

;;

'stop')

echo "Stopping EFM Asset Manager daemons for user $ASSETMANAGER_USER"

su -c "cd $ASSETMANAGER_HOME;$ASSETMANAGER_HOME/bin/stop.sh" $ASSETMANAGER_USER

;;

*)

# usage

echo "usage: $0 start|stop"

exit 1

;;

esac

請確定您調整環境變數以符合您的環境：ASSETMANAGER_HOME和ASSETMANAGER_USER。

建立檔案後，請確定檔案已標示為可執行檔。

對於Systemd

[root@cen7 ~]# cat /etc/systemd/system/efm-assetmanager.service

[Unit]

Description=EFM Asset Manager

After=network.target

[Service]

Type=forking

User=EFM

WorkingDirectory=/opt/cisco/kinetic/asset_manager/

ExecStart=/opt/cisco/kinetic/asset_manager/bin/start.sh

ExecStop=/opt/cisco/kinetic/asset_manager/bin/stop.sh

[Install]

WantedBy=multi-user.target

請確定您調整組態變數以符合您的環境：User=。

建立服務檔案後，請確保更新systemd中的守護程式檔案：

[root@cen7 ~]# systemctl daemon-reload

驗證

若要驗證指令碼/服務檔案是否如預期般運作，您可以嘗試啟動和停止服務：

對於init.d

[root@cen7 ~]# /etc/init.d/assetmanager start

Starting EFM Asset Manager daemon as user EFM

[root@cen7 ~]# nohup: redirecting stderr to stdout

[root@cen7 ~]# /etc/init.d/assetmanager stop

Stopping EFM Asset Manager daemons for user EFM

對於Systemd

[root@cen7 ~]# systemctl start efm-assetmanager

[root@cen7 ~]#

[root@cen7 ~]# systemctl status efm-assetmanager

● efm-assetmanager.service - EFM Asset Manager

Loaded: loaded (/etc/systemd/system/efm-assetmanager.service; disabled; vendor preset: disabled)

Active: active (running) since Tue 2018-04-24 02:54:16 CEST; 5s ago

Process: 45098 ExecStop=/opt/cisco/kinetic/asset_manager/bin/stop.sh (code=exited, status=0/SUCCESS)

Process: 45235 ExecStart=/opt/cisco/kinetic/asset_manager/bin/start.sh (code=exited, status=0/SUCCESS)

Main PID: 45238 (java)

CGroup: /system.slice/efm-assetmanager.service

└─45238 java -classpath /opt/cisco/kinetic/asset_manager/lib/efm-servicelayer-1.5.0.12-fat.jar com.cisco.efm.application.ApplicationStarter

Apr 24 02:54:16 cen7 systemd[1]: Starting EFM Asset Manager...

Apr 24 02:54:16 cen7 systemd[1]: Started EFM Asset Manager.

[root@cen7 ~]#

[root@cen7 ~]# systemctl stop efm-assetmanager

如您所見，EFM Asset Manager流程會在您於服務檔案中定義的使用者下啟動，並在請求停止服務之後清除所有專案。

疑難排解

如果您遇到要啟動的問題，請檢查以下專案：

- init.d或Systemd服務檔案中的可配置引數（使用者、路徑）

- 對於SystemD：systemctl status efm-assetmanager的輸出

- journalctl —unit=efm-assetmanager的輸出