Sommario

Introduzione

Prerequisiti

Requisiti

Componenti usati

Configurazione

Per init.d

Per System

Verifica

Per init.d

Per System

Risoluzione dei problemi

Introduzione

In questo documento viene descritto come creare file di servizio per init.d o Systemed per EFM (Edge Fog Processing Module).

Prerequisiti

Requisiti

Cisco raccomanda la conoscenza di Linux.

Componenti usati

Il documento può essere consultato per tutte le versioni software o hardware.

Le informazioni discusse in questo documento fanno riferimento a dispositivi usati in uno specifico ambiente di emulazione. Su tutti i dispositivi menzionati nel documento la configurazione è stata ripristinata ai valori predefiniti. Se la rete è operativa, valutare attentamente eventuali conseguenze derivanti dall'uso dei comandi.

Configurazione

Il pacchetto di installazione di EFM non contiene file di servizio per init.d o Systemd preconfigurati.

Qui potete trovare un semplice esempio per creare un file di servizio.

Per init.d

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

#!/bin/bash

# EFM init script.

EFM_HOME="/opt/cisco/kinetic/efm_server"

EFM_USER="EFM"

case "$1" in

'start')

echo "Starting EFM as $EFM_USER"

sleep 2

su -c "$EFM_HOME/bin/daemon.sh start" $EFM_USER

;;

'stop')

echo "Stopping EFM as $EFM_USER"

su -c "$EFM_HOME/bin/daemon.sh stop" $EFM_USER

;;

*)

# usage

echo "usage: $0 start|stop"

exit 1

;;

esac

Assicurarsi di regolare le variabili di ambiente in modo che corrispondano al proprio ambiente: EFM_HOME ed EFM_USER.

Dopo aver creato il file, assicurarsi che sia contrassegnato come eseguibile.

Per System

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

[Unit]

Description=EFM

After=network.target

[Service]

Type=forking

User=EFM

WorkingDirectory=/opt/cisco/kinetic/efm_server/

ExecStart=/opt/cisco/kinetic/efm_server/bin/daemon.sh start

Restart=no

GuessMainPID=yes

[Install]

WantedBy=multi-user.target

Accertarsi di regolare le variabili di configurazione in base all'ambiente in uso: User=.

Dopo aver creato il file di servizio, accertarsi di aggiornare i file daemon in systemd:

[root@cen7 ~]# systemctl daemon-reload

Verifica

Per verificare se gli script/file di servizio funzionano come previsto, è possibile provare ad avviare e arrestare il servizio:

Per init.d

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

Starting EFM as EFM

DSA Version: 1.1.2

DGLux5 Build: r7914

DGLux Server Build: 1230

Verifying Environment...

Verifying Configuration...

Server Started. (pid: 3790)

...

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

Stopping EFM as EFM

Server Stopped.

Per System

[root@cen7 ~]# systemctl start efm

[root@cen7 ~]#

[root@cen7 ~]# systemctl status efm

● efm.service - EFM

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

Active: active (running) since Mon 2018-04-23 17:01:22 CEST; 4s ago

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

Main PID: 5737 (dart)

CGroup: /system.slice/efm.service

├─5737 /opt/cisco/kinetic/dart-sdk/bin/dart --old_gen_heap_size=16 --new_gen_semi_max_size=2 /opt/cisco/kinetic/efm_server/bin/server_watcher.dart --log-file=logs/dglux_server.log --manager-port...

├─5746 /opt/cisco/kinetic/dart-sdk/bin/dart -Ddglux.server.watcher=true -Ddslink.runtime.manager=true -Ddglux.server.log=/opt/cisco/kinetic/efm_server/logs/dglux_server.log --old_gen_heap_size=1...

├─5785 java -classpath /opt/cisco/kinetic/efm_server/dslinks/Alarms/lib/dslink-0.18.3.jar:/opt/cisco/kinetic/efm_server/dslinks/Alarms/lib/jcommander-1.48.jar:/opt/cisco/kinetic/efm_server/dslin...

├─5788 /opt/cisco/kinetic/dart-sdk/bin/dart bin/run.dart --name DQL --log info --broker http://127.0.0.1:35294/conn --token DpKbOMophIePrJvdGpXyt1H0RpcM8g8hkPXyDqaEIVwIQLzF

├─5794 java -classpath /opt/cisco/kinetic/efm_server/dslinks/H2_DB/lib/jcommander-1.48.jar:/opt/cisco/kinetic/efm_server/dslinks/H2_DB/lib/commons-dbcp2-2.1.1.jar:/opt/cisco/kinetic/efm_server/d...

├─5801 /opt/cisco/kinetic/dart-sdk/bin/dart run.dart --name dataflow --broker http://127.0.0.1:35294/conn --token nkH3JEA12v82GthaCsb9IfAL0iMWJNaYtiuRA7ruB28T7jdf

├─5803 /opt/cisco/kinetic/dart-sdk/bin/dart bin/run.dart --name System --linux_use_free_command true --offset_memory_disk_cache true --broker http://127.0.0.1:35294/conn --token OSkQvkA3diq3OLtw...

└─5826 java -d64 -Djava.library.path=/opt/cisco/kinetic/efm_server/dslinks/parstream-dsa-link/lib/centos7 -classpath lib/bcprov-jdk15on-1.51.jar:lib/cisco-parstream-jdbc-5.0.0.jar:lib/commons-cs...

Apr 23 17:01:22 cen7 systemd[1]: Starting EFM...

Apr 23 17:01:22 cen7 daemon.sh[5725]: DSA Version: 1.1.2

Apr 23 17:01:22 cen7 daemon.sh[5725]: DGLux5 Build: r7914

Apr 23 17:01:22 cen7 daemon.sh[5725]: DGLux Server Build: 1230

Apr 23 17:01:22 cen7 daemon.sh[5725]: Verifying Environment...

Apr 23 17:01:22 cen7 daemon.sh[5725]: Verifying Configuration...

Apr 23 17:01:22 cen7 daemon.sh[5725]: Server Started. (pid: 5737)

Apr 23 17:01:22 cen7 systemd[1]: Started EFM.

[root@cen7 ~]#

[root@cen7 ~]# systemctl stop efm

Come si può vedere, i processi EFM vengono avviati sotto l'utente definito nei file del servizio e tutto viene pulito dopo che è stato richiesto di arrestare i servizi.

Risoluzione dei problemi

In caso di problemi, verificare quanto segue:

- Parametri configurabili nel file init.d o nel file di servizio di sistema (utente, percorsi)

- Per SystemD: l'output dello stato systemctl efm

- Output di journalctl —unit=efm