Gameserver Restart Script

  • Ein Shellscript ist nichts anderes als eine Datei in der die Anweisungen stehen.


    Normal würdest du x Befehle in die Befehlszeile einhämmern um das durchführen, hier ist einfach die Datei da die das Automatisch für dich macht zum Zeitpunkt x.


    Rheinwerk OpenBook


    Habe dir hier mal das Openbook von Rheinwerk verlinkt dazu. Müsste selbst auch nachschauen, wie das ganze funktioniert aber wenn es einfache "Befehle" sind die Ablaufen müssen sollte dies nicht unbedingt das Hexenwerk sein.

  • Welche Art von Gameserver ist das?
    Wie wurde dieser gestartet?
    Über einen Screen?
    Eigener User?

    Es handelt sich um Alt:V Server

    Ich frage mich ob es nicht möglich ist die ./altv-server via Cron zu starten und zu stoppen.

    Weil irgendwie will er die serverstart.sh & serverstop.sh nicht ausführen :D
    Cron ruft die Dateien zwar auf, aber starten tut da nicht :/


    Hier mal eine Ausgabe der SH Dateien.

    Serverstart.sh

    Bash
    #!/bin/sh
    screen -S 001_main /home/gvrp/001_main/start.sh
    echo 'Server gestartet.'

    Serverstop.sh

    Bash
    #!/bin/sh
    screen -S 001_main -X quit
    echo 'Server gestopt.'


    Wenn ich folgendes ausführe: env -i /home/gvrp/001_main/serverstart.sh
    Kommt die Meldung:

    Please set a terminal type.

    Server gestartet.

    Server startet dann auch, nur Cron macht da nichts :D

    Einmal editiert, zuletzt von Global-Beatz.de () aus folgendem Grund: Ein Beitrag von Global-Beatz.de mit diesem Beitrag zusammengefügt.

  • Was steht in der /home/gvrp/001_main/start.sh ?
    Generell würde ich screens immer detached starten, sprich -md mit dem Zusatz von der Benennung S.


    Bash
    #!/bin/sh
    screen -mdS 001_main /home/gvrp/001_main/start.sh


    Beim beenden mache ich es gerne über die PID(Prozess ID), aber deins sollte Problemlos funktionieren.

  • Was steht in der /home/gvrp/001_main/start.sh ?
    Generell würde ich screens immer detached starten, sprich -md mit dem Zusatz von der Benennung S.


    Bash
    #!/bin/sh
    screen -mdS 001_main /home/gvrp/001_main/start.sh


    Beim beenden mache ich es gerne über die PID(Prozess ID), aber deins sollte Problemlos funktionieren.

    Steht in der Start.sh

    Bash
    #!/bin/bash
    BASEDIR=$(dirname $0)
    export LD_LIBRARY_PATH=${BASEDIR}
    ./altv-server
  • Hm, ich würde es wahrscheinlich so machen bzw. so ähnlich


    User anlegen

    Code
    useradd -p '*' coolerGtaUser -m -d /home/coolerGtaUser --shell /bin/false

    Alles in das Verzeichnis von dem neuen User legen

    Code
    mv /home/gvrp/001_main/ /home/coolerGtaUser


    start mit dem Skript serverstart.sh

    Bash
    #!/bin/sh
    cd /home/coolerGtaUser
    sudo -u coolerGtaUser LD_LIBRARY_PATH=. screen -mdS 001_main ./altv-server

    Weil wir einen neuen Nutzer haben(mit root kann sowas schief gehen), kannst du weiterhin mit root den Cron ausführen


    Code
    0 12 * * * root /home/coolerGtaUser/serverstart.sh


    Wichtig zu wissen ist, jetzt wird jedes mal beim Ausführen vom serverstart.sh versucht zu starten, eine Abfrage wäre nicht schlecht die überprüft ob kein Server am laufen ist.
    Könnte so umgesetzt werden


    Code
    if ! pgrep -u coolerGtaUser -f altv-server | tail -1 > /dev/null
    then
        sudo -u coolerGtaUser LD_LIBRARY_PATH=. screen -mdS 001_main ./altv-server
    fi

    (EDIT: Bitte vorher testen, war jetzt freihand geschrieben und nicht getestet)

  • serverstart.sh

    Bash
    #!/bin/sh
    
    if ! pgrep -u coolerGtaUser -f altv-server | tail -1 > /dev/null
    then
        cd /home/coolerGtaUser
        sudo -u coolerGtaUser LD_LIBRARY_PATH=. screen -mdS 001_main ./altv-server
    fi

    Wie bereits geschrieben, es ist nicht getestet, kann also gut sein, dass es nicht klappt

  • serverstart.sh

    Bash
    #!/bin/sh
    
    if ! pgrep -u coolerGtaUser -f altv-server | tail -1 > /dev/null
    then
        cd /home/coolerGtaUser
        sudo -u coolerGtaUser LD_LIBRARY_PATH=. screen -mdS 001_main ./altv-server
    fi

    Wie bereits geschrieben, es ist nicht getestet, kann also gut sein, dass es nicht klappt

    Der Crontab führt das zwar aus :D laut syslog.

    Aber Server Startet leider nicht :/

  • Öööh ein c++ Fehler?
    Hast du von GTA alles installiert, was es möchte?
    Spontan würde ich einfach ins graue tippen und auf Probleme mit den Permissions ->File cannot be created


    Code
    chown -R coolerGtaUser:coolerGtaUser /home/coolerGtaUser
    chmod -R 770 /home/coolerGtaUser

    Und dann teste noch mal per Hand

  • Öööh ein c++ Fehler?
    Hast du von GTA alles installiert, was es möchte?
    Spontan würde ich einfach ins graue tippen und auf Probleme mit den Permissions ->File cannot be created


    Code
    chown -R coolerGtaUser:coolerGtaUser /home/coolerGtaUser
    chmod -R 770 /home/coolerGtaUser

    Und dann teste noch mal per Hand

    Jetzt startet der mit: cd /home/gvrp; sudo -u altv LD_LIBRARY_PATH=. ./altv-server :D (Per Hand nur Cron will noch nicht xD)

  • Hattest du die startserver.sh mal per Hand gestartet? Dafür würde ich aber den screen raus nehmen, weil es so einfacher ist zu schauen, ob es funzt.

    Ja hatte ich und es ging :D
    Habe es aber nun hinbekommen, statt unsere Ideen, habe ich einfach via KeyHelp -> Geplante Aufgaben -> Pfad/zu/SH/Datei und nun geht es :D

    Danke dir trotzdem für die Hilfe :)