• If you need help or want to discuss things, you now can also join us on our Discord Server!
  • A first preview of the unlimited version of SinusBot can be found in the Upcoming Changes thread. A version for Windows will follow, but we don't have a release date, yet.

Solved [GER|DE] Probleme mit dem startup script

vesturo

Active Member
Hallo Sinusbot community,
Ich bin ein bisschen ratlos und weiß nicht an wen ich mich wenden soll... bevor wir beginnen mal die aktuellsten debug logs!
Code:
==========================================================
SINUSBOT RELATED
SYSTEM INFORMATION
 - Operating System: Ubuntu 16.04.5 LTS
 - Kernel: Linux 4.4.0-137-generic x86_64
 - Load Average: 0.06 0.04 0.00
 - Uptime: 2 days, 2 hours, 14 minutes, 57 seconds
 - OS x64 check: OK
 - OS Updates: 13 (updates available!)
 - OS Missing Packages: None
 - OS APT Last Update: 19.10.2018 11:40:52 CEST +02:00:00
 - SHELL LOCALE LANG: de_DE.UTF-8
 - Bot Start Script: found at /etc/systemd/system/sinusbot.service [perms: 755]
 - DNS resolution check: www.sinusbot.com resolved to 104.28.15.74 -> OK
 - HTTPS check with IPv4 mode: SUCCESS [Connection was established to www.sinusbot.com, CODE #200]
 - HTTPS check with IPv6 mode: IGNORE
 - CPU:
    Architecture:          x86_64
    CPU(s):                4
    Socket(s):             1
    Model name:            Common KVM processor
    CPU MHz:               3399.996
    Hypervisor-Anbieter:   KVM
 - RAM: 2.20 GB/9.76 GB in use (22%)
 - SWAP: 0 B/9.99 GB in use (0%)
 - DISK: 6.99 GB/58.93 GB in use (11%)
 - Package versions:
   + libglib: 2.48.2-0ubuntu4.1

BOT INFORMATION
 - Status: not running
 - Webinterface: port locally not reachable (Port: 8087)
 - Binary: /opt/sinusbot/sinusbot
 - Binary Info: MD5 Hash: 457224ee75d8a25d64eab6fc7465cd48, Perms: 777, User: sinusbot
 - Version: 0.14.3-0e747fd
 - TS3 Plugin: installed (md5 hash match)
   - Bot Plugin: 9463787dd59286dea7a4a284409993c3
   - TS3 Client: 9463787dd59286dea7a4a284409993c3
 - Config:
   - LogLevel = 3
   - TS3Path = /opt/sinusbot/TeamSpeak3-Client-linux_amd64/ts3client_linux_amd64 (Version 3.2.1)
   - YoutubeDLPath = not set
 - Installed scripts: advertising.js; alonemode.js; Animated_Nickname.js; bookmark.js; CoverLoader_[Radio_Station_Support].js; followme.js; norecording.js; rememberChannel.js; Support.js; welcome.js; YT-search.js

TIME INFORMATION
 - Time (local): 19.10.2018 14:28:29 CEST +02:00:00
 - Time (remote): 19.10.2018 14:28:29 CEST +02:00:00
 - Time (difference): 0 secs (Time diff less than 2 secs. Good.)
 - Timezone: Europe/Berlin

OTHER INFORMATION
 - TeamSpeak 3 Version: 3.2.1
 - youtube-dl Version: unknown
 - DiagScript Version: 0.7.1
==========================================================
das Webinterface ist von außen trotzdem erreichbar, keine ahnung warum der bot das sagt...


Tja, das problem liegt aber nicht dort sondern beim startup script!
Code:
● sinusbot.service - Sinusbot, the Teamspeak 3 and Discord music bot.
   Loaded: loaded (/etc/systemd/system/sinusbot.service; enabled; vendor preset: enabled)
   Active: failed (Result: exit-code) since Fr 2018-10-19 14:28:40 CEST; 9s ago
  Process: 2600 ExecStopPost=/bin/rm -f /tmp/.sinusbot.lock (code=exited, status=0/SUCCESS)
  Process: 2598 ExecStart=/opt/sinusbot/sinusbot.dat (code=exited, status=203/EXEC)
  Process: 4502 ExecStartPre=/bin/rm -f /tmp/.sinusbot.lock (code=exited, status=1/FAILURE)
 Main PID: 2598 (code=exited, status=203/EXEC)

Okt 19 14:28:40 vm130 systemd[1]: Starting Sinusbot, the Teamspeak 3 and Discord music bot....
Okt 19 14:28:40 vm130 systemd[1]: sinusbot.service: Control process exited, code=exited status=1
Okt 19 14:28:40 vm130 systemd[1]: Failed to start Sinusbot, the Teamspeak 3 and Discord music bot..
Okt 19 14:28:40 vm130 systemd[1]: sinusbot.service: Unit entered failed state.
Okt 19 14:28:40 vm130 systemd[1]: sinusbot.service: Failed with result 'exit-code'.

Ich arbeite noch nicht so lange mit linux und wusste nicht wo ich mich sonst hinwenden sollte, da mir dieser fehler bisher noch nicht untergekommen ist, obwohl ich schon so einige startup scripts gebastelt habe.. ich hänge es mal ebenfalls an. ich habe drei mal überprüft ob ich für Sinusbot und das script die passenden berechtigungen haben
Code:
#!/bin/bash
[Unit]
Description=Sinusbot, the Teamspeak 3 and Discord music bot.
After=syslog.target network.target

[Service]
User=sinusbot
ExecStartPre=/bin/rm -f /tmp/.sinusbot.lock
ExecStopPost=/bin/rm -f /tmp/.sinusbot.lock
ExecStart=/opt/sinusbot/sinusbot.dat
WorkingDirectory=/opt/sinusbot
Type=simple
KillSignal=2
SendSIGKILL=yes

[Install]
WantedBy=multi-user.target

Hilfe :D ich weiß ehrlich nicht weiter und den SSH client rund um die uhr laufen zu haben klingt weniger geil...

Game on,
Robert "Vesturo" Tiede
 

Nobri

Active Member
Heyho,
ich benutze ein eigenes Script auf Basis von dem Programm "Screen", um den Bot im Hintergrund laufen zu lassen.

Wie ich deinen Logs entnehmen kann benutzt du Ubuntu.
Welches Script du benutzt weiß ich nicht, ich teile aber gerne mein Script mit dir.

Here's how:
  1. Zuerst stellen wir sicher, dass du die letzten Updates, Screen und Nano auf deinem Server installiert hast (Müsste eigentlich, da das Standardprogramme sind, ich bitte dich den kommenden Schritt aber trotzdem zu tun.).
    Führe dazu einfach als root-User folgenden Befehl aus:
    Bash:
    apt-get update && apt-get upgrade -y && apt-get dist-upgrade -y && apt-get install screen nano
    Dieser Befehl updatet sämtliche Programme, das Betriebssystem und installiert die Programme "Screen" und "Nano". Die "-y" im Befehl sorgen dafür, dass du nicht nach einer Bestätigung gefragt wirst. Der Server macht die Updates einfach!
  2. Nun meldest dich als der Benutzer an, mit welchem du den Bot starten möchtest. Wenn du den Bot nach Anleitung installiert hast sollte der "sinusbot" Benutzer der richtige sein.
  3. Wechsel nun in das Verzeichnis in dem du den Bot installiert hast. Wenn du nach der Anleitung installiert hast, sollte das folgendermaßen gehen:
    Bash:
    cd /opt/sinusbot
  4. Erstelle in dem Verzeichnis in dem deine "sinusbot" und "config.ini" (und die ganzen anderen Dateien liegen) eine neue Datei mit dem Namen "start.sh". Das geht so:
    Bash:
    nano start.sh
  5. Füge meinen Code in die Datei ein:
    Bash:
    screen -AmdS musikbot /opt/sinusbot/sinusbot -- /usr/bin/Xvfb :1 -screen 0 800x600x16 -ac
    Hierbei ist "musikbot" der Name des Screens und "/opt/sinusbot/sinusbot/" der Pfad zum Bot. Der Rest des Befehls ist einfach Kauderwelsch von Screen x).
  6. Speicher nun die Datei ab. Das geht in Nano mit Strg+O, dann Enter zum Bestätigen und Strg+X zum Schließen.
  7. Setze nun die richtigen Berechtigungen, damit du die Datei ausführen kannst:
    Bash:
    chmod 755 start.sh
  8. Nun solltest du den Bot starten können:
    Bash:
    ./start.sh
Es gibt bestimmt auch hochkomplexe Scripts die einem irgendwelche Fehler ausspucken oder Kaffee kochen können. Wie dem auch sei, das Script funktioniert bei mir schon Jahrelang und ich habe nie etwas anders gebraucht.


Der Screen lässt sich folgendermaßen öffnen:
  1. Du meldest dich als der Benutzer an, welcher den Bot ausführt.
  2. Du schreibst folgendes um die Screens des angemeldeten Benutzers zu sehen:
    Bash:
    screen -ls
  3. Mit folgendem Befehl kannst du deine Screens öffnen:
    Bash:
    screen -r <SCREEN NAME>
    Bei einem Fehler (Cannot open your terminal '/dev/pts/2' - please check.) musst du diesen Befehl ausführen:
    Bash:
    script /dev/null
    Danach sollte es gehen. Also einfach Schritt 3 nochmal wiederholen! =)

Wenn du das jetzt so einrichten möchtest, dass der Bot nach einem Serverrestart auch automatisch neu startet geht das wie folgt:
  1. Wenn du noch als der selbe Benutzer angemeldet bist, der den SinusBot ausführt schreibst du folgendes in die Konsole:
    Bash:
    crontab -e
  2. Nun gehst du ans Ende der Datei und fügst folgende Zeile hinzu:
    Bash:
    @reboot cd /opt/sinusbot && ./start.sh
  3. Nun die Datei auf Nano-typische Weise wieder mit Strg+O, dann Enter zur Bestätigung und Strg+X zum Schließen speichern.

Ich hoffe mal das Hilft dir weiter! =)
Falls etwas nicht funktioniert kannst du dich ja gerne wieder melden und wir probieren etwas anderes! x)

Gruß
 

irgendwr

no longer active, "retired" staff member
is awesome!
V.I.P.
is uber awesome!
Contributor
Insider
@Nobri puh. Nett, dass du dir die mühe machst so eine detaillierte Anleitung zu schreiben. :)
Ich würde in diesem Fall von screen + crontab abraten, systemd ist einfacher & cleaner.

@vesturo Dein startscript ist nicht richtig.
#!/bin/bash
systemd service configs haben kein #!/bin/bash vorne dran, denn es sind keine bash scripts und sollen auch nicht als solche interpretiert werden.
Folge bitte der Anleitung im wiki und installier es genau so (mittlerweile wurde es auch geupdated): https://wiki.sinusbot.com/en:guides:installation:linux#using_a_startscript
 

Nobri

Active Member
@irgendwr danke für den Link zu eurer Anleitung. Natürlich kann man das Ganze auch als Service lösen. Ein Problem mit dem Einsatz von Cron sehe ich allerdings nicht. Was genau ist denn (ich nenne es jetzt mal "uneleganter") Cron als Script-Starter zu benutzen? Resourcentechnisch sollte es glaube ich keinen allzu großen Unterschied machen. Ich denke mal das hängt stark von der eigenen Präferenz ab. x)
 

irgendwr

no longer active, "retired" staff member
is awesome!
V.I.P.
is uber awesome!
Contributor
Insider
@irgendwr danke für den Link zu eurer Anleitung. Natürlich kann man das Ganze auch als Service lösen. Ein Problem mit dem Einsatz von Cron sehe ich allerdings nicht. Was genau ist denn (ich nenne es jetzt mal "uneleganter") Cron als Script-Starter zu benutzen? Resourcentechnisch sollte es glaube ich keinen allzu großen Unterschied machen. Ich denke mal das hängt stark von der eigenen Präferenz ab. x)
Falsch ist daran nichts, systemd ist halt genau dafür ausgelegt.
 

Xuxe

Containerholic
Staff member
is awesome!
V.I.P.
Contributor
Insider
Wie von @irgendwr erwähnt Systemd ist dafür ausgelegt und handled unter der Haube weit aus mehr:
  • (System) Startup targets das unter anderem dein Netzwerk-Stack/Filesystem up ist vor dem Bot
  • (System/Bot) Sauberes stoppen durch entsprechende Kill-Signals
  • (Bot) Pre/Post actions um locks zu entfernen
  • (System/Security) Ausführen des Bots im User-Context ohne dreckige Hacks durch Modifikationen von Permissions an TTY-Sessions oder Sudo
TL;DR es ist komplett einfacher zu warten und viele Probleme sind auf magischerweise verschwunden durch das ablösen von Screen+Scripts durch Systemd.
 

vesturo

Active Member
Hey leute, nachdem ich heute meinen server neu aufgesetzt habe klappt es mit dem startup script!
DANKE für die vielen antworten!
 
Top