Discord Bot geht aus, wenn ich Putty verlasse?
Guten Tag,
ich habe einen Discord Bot geschrieben, der nun 24/7 laufen soll. Ich habe jetzt das Problem, dass er nur läuft, wenn ich die SSH Verbindung halte, also wenn ich Putty schließe, geht auch der Bot aus. Weiß jemand, wie ich den laufen lassen kann?
8 Antworten
Auch wenn Du ein Programm im Hintergrund startest, gehört es noch zur Shell (und wird beendet, wenn das Terminal geschlossen wird).
Bash hat einen builtin-Befehl disown, mit dem Du den letzten Job (oder auch jeden anderen) abtrennen kannst. Er läuft dann als eigener Prozess weiter und bleibt auch nach dem Ausloggen aktiv. Du musst ihn dann eben explizit (z. B. mit kill) beenden.
https://wiki.ubuntuusers.de/Screen/
hiermit geht das beispielsweise
Ich würde tmux gegenüber Screen vorziehen.
Du kannst die Anwendung mittels eines Daemon starten oder einfach als Job laufen lassen. Ich würde Variante 1 wählen.
Nehmen wir mal an dein Bot ist in /script/discordbot.sh (Ein paar nähere Infos zu dem, was du gemacht hast würden helfen...)
Dann erstellst du eine Datei /etc/systemd/system/discordbot.service und schreibst rein:
[Unit]
Description=Teamspeak Server
[Service]
ExecStart=/bin/bash /script/discordbot.sh
Restart=on-failure
[Install]
WantedBy=multi-user.target
Danach noch starten..
sudo systemctl daemon-reload
sudo systemctl enable discordbot.service
sudo systemctl start discordbot.service
sudo systemctl status discordbot.service
Den Systemd Service kann (und sollte!) man noch anpassen und um Sicherheitseinstellungen erweitern, aber das sollte erstmal seinen Zweck erfüllen und dein Script im Hintergrund ausführen.
Wenn du deinen Bot in der Putty Session startest bleibt er auch dort. Sobald die Session beendet wird, wird auch der Bot beendet der sich in der Session befindet.Eine Loesing fuer das Problem waere zum Beispiel einen "screen" zu oeffnen. Unter Debian/Ubuntu machst du das mit:
sudo apt istall screen -y
um den Bot im screen zu starten:
screen -S bot ./start_bot
Ich hoffe, dass hilft dir mit deinem Discord Bot.