-
Notifications
You must be signed in to change notification settings - Fork 6
hcan und systemd
Am Beispiel Armbian 5.65 (Ubuntu Bionic Beaver Kernel 4.14.78)
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)
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.
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
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
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
Mehr Infos zu systemd und den Diensten gibts z.B. im Ubuntuusers Wiki
-
Tutorials
-
FAQ
-
Referenz
- Konzepte
- Hardware
- Software/PC
- Software/Firmware
- Patches
- EDS - EEPROM Data System
- HCAN Protokoll
- HCAN Protokoll - Referenz