SSH Tunnel zum MySQL Server

Sockets, TCP/IP, (XML-)RPC und ähnliche Themen gehören in dieses Forum
rpi-joe
User
Beiträge: 23
Registriert: Mittwoch 27. Januar 2021, 15:27

Also ich schreibe die Datei: /lib/systemd/system/counter.service
Inhalt:

Code: Alles auswählen

#!/usr/bin/env python3

[Unit]
Description=CounterWater
After=multi-user.target
 
[Service]
ExecStart=/home/pi/counter/Red_Indicator5Forum.py
 
[Install]
WantedBy=multi-user.target
und ausführbar machen. Danach noch autostarten mit: sudo systemctl enable counter

Oder muss das aufzurufende Pythonprogramm #!/usr/bin/env python3 am Anfang haben?
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Ja. Nennt sich shebang. Und das x-bit muss gesetzt sein. Wenn du das Skript genau so wie in der Unit aufgerufen bekommst, ist das schon mal gut.
rpi-joe
User
Beiträge: 23
Registriert: Mittwoch 27. Januar 2021, 15:27

@__deets__: Der Start über einen service hat bis jetzt nicht funktioniert, hatte es kurz ausprobiert. Habe noch ein anderes Problem, meine MySQL war heute morgen nicht mehr erreichbar und der rpi hat das Programm beendet :-( Jetzt aktiviere ich erstmal wieder den rc.local Eintrag....
rpi-joe
User
Beiträge: 23
Registriert: Mittwoch 27. Januar 2021, 15:27

Das Thema systemd ist nicht so einfach, merke ich heute nachmittag.
Nach einigen Versuchen (trial and error) habe ich einen SymLink hinbekommen, der tut jedoch nichts.

Code: Alles auswählen

pi@rpizeroCamera:/lib/systemd/system $ sudo systemctl enable counter
Created symlink /etc/systemd/system/multi-user.target.wants/counter.service → /lib/systemd/system/counter.service.
Jetzt muß ich mal nachlesen, wie der Ablauf ist. Ob ich erst etwas löschen muss um weiter zu machen
und wie der Ablauf beim Anlegen auf dem rpi sein muss.

Die Datenbank läuft wieder, hatte den Server neu gestartet, da etliche Tasks mit MySQL offen waren.
Ist bestimmt von den Versuchen der ssh-Geschichte und meinem fehlerhaften Programm gekommen, das jedes Mal eine neue Verbindung aufgebaut hat aber nicht geschlossen hat.
rpi-joe
User
Beiträge: 23
Registriert: Mittwoch 27. Januar 2021, 15:27

Eine gute Nachricht, ich habe den systemd zum Laufen bekommen :D
Hier ist meine Vorgehensweise für die, die auch das erste Mal einen service anlegen wollen oder müssen:


Ziel: Automatischer Programmstart beim booten mit neuer systemd -Funktion !

systemd-service-Datei counter.service anlegen in /lib/systemd/system
kein ausführbar! chmod -x !
nur lesen chmod 444 !
Eigentümer: root:root !

sieht dann so aus.
-r--r--r-- 1 root root 688 Feb 04 11:18 counter.service


Inhalt von counter.service
_______________________________________
[Unit]
Description= Wasserzaehler
After=multi-user.target

[Service]
ExecStart=/home/pi/counter/water.py

[Install]
WantedBy=multi-user.target
______________________________________

Description dient als Info, freie Eingabe
ExecStart ist /Pfad/Name des Programms


Python-Programm fertig! Endung .py
shebang 1.Zeile > #!/usr/bin/env python3 eingeben
Rechte hatte ich auf root:root gesetzt
Ausführbar mit > sudo chmod +x Dateiname.py


mit dem systemctl-Befehl enable den service anlegen:

pi@rpizeroCamera:/lib/systemd/system $ sudo systemctl enable counter

Antwort:
Created symlink /etc/systemd/system/multi-user.target.wants/counter.service → /lib/systemd/system/counter.service.


rpi neu starten:

pi@rpizeroCamera:/lib/systemd/system $ sudo reboot now
pi@rpizeroCamera:/lib/systemd/system $ Connection to 192.168.1.149 closed by remote host.
Connection to 192.168.1.149 closed.

F E R T I G

--------------------------------------------

wie stoppe ich den systemd service wieder?
mit: sudo service counter stop

Hinweis: rpi nimmt an, dass ein .service gemeint ist also > counter.service

Wenn der counter.service gestoppt ist, kann die Programm-Datei, z.B. /home/pi/rpi/water.py geändert werden,
es wird bei Neustart des service neu geladen. Damit kann man Änderungen ohne Probleme einbringen.

starten: sudo systemctl counter start

Status abfragen: sudo systemctl counter status

(Wie immer ohne Gewehr - ich übernehme keine Verantwortung für instabile Systeme)
Antworten