Einführung
In diesem Dokument wird beschrieben, wie Sie Servicedateien für init.d oder System for EFM (Edge Fog Processing Module) erstellen.
Voraussetzungen
Anforderungen
Cisco empfiehlt, dass Sie Linux kennen.
Verwendete Komponenten
Dieses Dokument ist nicht auf bestimmte Software- und Hardwareversionen beschränkt.
Die Informationen in diesem Dokument wurden von den Geräten in einer bestimmten Laborumgebung erstellt. Alle in diesem Dokument verwendeten Geräte haben mit einer leeren (Standard-)Konfiguration begonnen. Wenn Ihr Netzwerk in Betrieb ist, stellen Sie sicher, dass Sie die potenziellen Auswirkungen eines Befehls verstehen.
Konfigurieren
Das EFM-Installationspaket enthält keine Servicedateien für init.d oder System.
Hier finden Sie ein einfaches Beispiel zum Erstellen einer Servicedatei.
Für 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
Stellen Sie sicher, dass Sie die Umgebungsvariablen an Ihre Umgebung anpassen: EFM_HOME und EFM_USER.
Nachdem die Datei erstellt wurde, stellen Sie sicher, dass sie als ausführbare Datei markiert ist.
Für Systemd
[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
Stellen Sie sicher, dass Sie die Konfigurationsvariablen an Ihre Umgebung anpassen: User=.
Nachdem die Dienstdatei erstellt wurde, stellen Sie sicher, dass Sie die Daemon-Dateien im System aktualisieren:
[root@cen7 ~]# systemctl daemon-reload
Überprüfen
Um zu überprüfen, ob die Skripte/Servicedatei wie erwartet funktioniert, können Sie versuchen, den Dienst zu starten und zu beenden:
Für 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.
Für Systemd
[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
Wie Sie sehen können, werden die EFM-Prozesse unter dem in den Dienstdateien definierten Benutzer gestartet und alles wird bereinigt, nachdem der Dienst angefordert wurde.
Fehlerbehebung
Falls Probleme auftreten, überprüfen Sie Folgendes:
- Konfigurierbare Parameter in der init.d- oder Systemd-Servicedatei (Benutzer, Pfade)
- Für SystemD: Die Ausgabe des Systemstatusefms
- Die Ausgabe von journalctl —unit=efm