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