目錄

簡介

必要條件

需求

採用元件

設定

對於init.d

對於Systemd

驗證

對於init.d

對於Systemd

疑難排解

簡介

本文說明如何為EFM（邊緣霧處理模組）Asset Manager建立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的輸出