Python3 Script automatisch starten

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Spohky
User
Beiträge: 21
Registriert: Montag 17. April 2017, 10:52

Hallo Zusammen,

ich habe mir einen kleinen TS3 Bot zusammengebaut, nun will ich das er nach meinem TS3 startet bei einem Serverstart / Neustart.
Wollte es über "/etc/init.d/" machen, da ich so auch meinen TS starte und es nach dem TS Starten lassen kann.

Nun ist das Problem, es startet nicht, wenn ich es von Hand starte, dann läuft es, aber nur in der Konsole, es soll ohne gehen.

Habt Ihr mir nen Tipp, wie ich das automatisch starten kann??

Viele Grüße und Danke
Spohky
Benutzeravatar
BigZ
User
Beiträge: 30
Registriert: Mittwoch 1. Juli 2015, 21:18
Wohnort: Hamburg
Kontaktdaten:

Du könntest einen Cronjob laufen lassen der ein Script startet das checkt ob der Ts3 Server läuft.
Wenn der Server läuft checkst du ob der Bot läuft und wenn dieser nicht läuft, startest du ihn.
Dann startest du Server und Bot immer wieder neu, falls sie mal crashen.

Hier ein paar Infos wie man checkt ob ein Prozess läuft und ein paar Script beispiele.
Hier ein paar Infos wie man einen cronjob erstellt
"Ist noch λ?"
"Ja, aber das ϕ ist noch ϱ"
Spohky
User
Beiträge: 21
Registriert: Montag 17. April 2017, 10:52

Hey @BigZ!
Danke für deine schnelle Antwort.
Linux und co ist komplett neu für mich, befasse mich noch nicht so lange damit.
Nen Cronjob schaffe ich noch zu starten.
Nur das mit den Prozesse prüfen und co. sry das ist mir so etwas to much für den Anfang, zu viele Infos und ich hab seit gestern versucht das irgendwie zum laufen zu bekommen, aber ich verstehe das nicht wirklich.
der Bot der in Python3 geschrieben ist, läuft irgendwie nur per Konsole, aber läuft nicht ohne, ich finde auch irgendwie leider keine genaue Hilfe, verwende vermutlich auch die falschen Suchbegriffe.

Ich komme so nicht wirklich weiter. =(
nezzcarth
User
Beiträge: 1635
Registriert: Samstag 16. April 2011, 12:47

Verwendest du eine Distribution, die systemd einsetzt? Wenn das der Fall ist (bei aktuellen Versionen der meisten größeren Distributionen ist es das), solltest du mal überlegen, ob du nicht teamspeak und deinen Bot über eine Systemd-Unit starten möchtest. Damit ist es recht einfach Abhängigkeiten zu definieren.
Spohky
User
Beiträge: 21
Registriert: Montag 17. April 2017, 10:52

@nezzcarth

TS3 und der Bot laufen auf Debian8.
Ich kenne mich ehrlich gesagt so gut wie gar nicht aus.
Der TS3 Server läuft ja, das ist nicht mein Problem, der startet auch automatisch und alles.

Ich bin jetzt so weit das er erkennt ob der TS3 Server läuft, aber irgendwie erkennt er noch nicht ob der Bot läuft.
TS3 Server frage ich so ab: PIDS=`ps cax | grep "ts3server" | grep -o '^[ ]*[0-9]*'`
Bot frage ich so ab: PIDS=`ps cax | grep "python3 ts3bot.py" | grep -o '^[ ]*[0-9]*'`

Unter htop wird es so angezeit und es hatte beim testen der alleinigen abfragen funktioniert, verschachtelt geht es nun aber nicht mehr.
Benutzeravatar
noisefloor
User
Beiträge: 3856
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

wenn du Debian 8 benutzt, dass möchtest du den Bot ganz sicher über eine systemd Service Unit starten. Vorteile:

* kann bei jedem Systemstart automatisch geladen werden
* du kannst du Skript in Abhängigkeit von der Verfügbarkeit des TS3 Servers starten (vorausgesetzt, TS3 wird auch über eine Service Unit gestartet)
* systemd kann das Skript neu starten, falls es im laufenden Betrieb crasht
* Abstürze etc. werden systemd direkt in systemweit Journal geloggt

Das einzige, was im Weg steht, sind fehlende Linux-Kenntnisse. Zu systemd findest du aber bergeweise Doku und Beispiele im Netz. Ansonsten ggf. vielleicht auch in einem Debian-Forum nachfragen. Dein Problem hat nämlich sonst eher wenig mit Python an sich zu tun :-)

Gruß, noisefloor
Spohky
User
Beiträge: 21
Registriert: Montag 17. April 2017, 10:52

Okey, danke denn noch, dachte das dieses Thema eher hier rein passt, da es sich ja eig um Python handelt.
Habe gestern noch folgenden Befehl gefunden, den ich vorerst mal nutzen werde, solange ich noch an der Entwicklung des Bots bin. =)
Das führt es solange aus, bis der Server Neu gestartet wird oder das Script sich verabschiedet.

Code: Alles auswählen

chmod +x test.py
nohup /path/to/test.py &
Danke aber für den Tipp mit "systemd Service Unit" schaue ich mir auf jeden fall an. =)
Antworten