Skip to content

hcan und systemd

RealMerlin edited this page Feb 25, 2021 · 7 revisions

hcan Dienste als Daemons mit systemd

Am Beispiel Armbian 5.65 (Ubuntu Bionic Beaver Kernel 4.14.78)

openHCAN Dienste

Folgenden Dienste gibt es:
hcand
hcansocketd
hcanaddressd
hcanswd (Optional)
hcan4mqttpc (Optional)
Telican im Time Modus (Optional)

Um in der Nomenklatur zu bleiben, bietet sich fuer Telican im Time Modus der Dienstname "hcantime" an. Dadurch kann man die Dienste spaeter einfach per Wildcard (z.B. systemctl start hcan*) starten (siehe unten)

systemd Konfiguration

es muss fuer jeden gewuenschten Dienst eine .service Datei angelegt werden

nano /etc/systemd/system/<DIENSTNAME>.service

Die Dateien sehen alle gleich aus. Mit diesem Inhalt ("USER" durch den Benutzernamen ersetzen):

[Unit]
Description=OpenHCAN: <DIENSTNAME>

[Service]
Type=simple
ExecStart=<PFAD ZUM PROGRAMM z.B.: /usr/sbin/hcanaddressd>
User=<USER>
Restart=always
RestartSec=5s

[Install]
WantedBy=multi-user.target

Durch die Option Restart=always wird der einzelne Dienst immer automatisch neugestartet, wenn er nicht durch systemctl stop ... beendet wurde.
Tipp: Um raus zu finden wo ein Programm installiert ist, gibt es den Befehl: "whereis":

whereis hcand
hcand: /usr/sbin/hcand

Speziell bei hcanswd kann man noch diese Eigenschaften unter "[Unit]" einfuegen:

After=hcansocketd.service
Requires=hcansocketd.service

Das bewirkt dass hcanswd erst nach hcansocketd gestartet wird und bei bei einem neustarte von hcansocketd wird auch hcanswd neugestartet.

Aktivierung

Wenn alle Dateiein angelegt sind, die systemd Konfiguration neu laden:

systemctl daemon-reload

Jetzt kann man die Dienste "einschalten". Dadurch werden die Dienste beim Systemstart automatisch gestartet.

systemctl enable <DIENSTNAME>.service

Bedienung

Jetzt koennen die Dienste so gesteuert werden:
Starten:

systemctl start <DIENSTNAME>.service

Status:

systemctl status <DIENSTNAME>.service

Neustart:

systemctl restart <DIENSTNAME>.service

Stop:

systemctl stop <DIENSTNAME>.service

Autostart dekativieren:

systemctl disable <DIENSTNAME>.service

fuer Faule, zum kopieren:

cat << EOF > /etc/systemd/system/hcand.service
[Unit]
Description=OpenHCAN: hcand
After=hcansocketd.service
[Service]
Type=simple
ExecStart=/usr/sbin/hcand
User=root
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF

cat << EOF > /etc/systemd/system/hcanaddressd.service
[Unit]
Description=OpenHCAN: hcanaddressd
After=hcand.service
[Service]
Type=simple
ExecStart=/usr/sbin/hcanaddressd
User=root
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF

cat << EOF >/etc/systemd/system/hcansocketd.service
[Unit]
Description=OpenHCAN: hcansocketd
After=hcand.service
[Service]
Type=simple
ExecStart=/usr/sbin/hcansocketd
User=root
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF

cat << EOF >/etc/systemd/system/hcantime.service
[Unit]
Description=OpenHCAN: Telican in Timed mode
After=hcand.service
[Service]
Type=simple
ExecStart=/usr/bin/telican --timed
User=root
Restart=always
RestartSec=5s
[Install]
WantedBy=multi-user.target
EOF

systemctl daemon-reload
systemctl enable hcand.service
systemctl enable hcanaddressd.service
systemctl enable hcansocketd.service
systemctl enable hcantime.service

systemctl start hcand.service
systemctl start hcanaddressd.service
systemctl start hcansocketd.service
systemctl start hcantime.service

weitere Infos

Mehr Infos zu systemd und den Diensten gibts z.B. im Ubuntuusers Wiki

Clone this wiki locally