Wie starte ich eine Skriptdatei beim Booten?

7

Ich betreibe einen kleinen Minecraft-Server.

Ich möchte, dass Lubuntu das folgende Skript ausführt, wenn der Server hochfährt. NICHT beim Anmelden und NICHT beim Neustart (es sei denn, es wird natürlich gestartet).

Das Skript befindet sich derzeit in:

/home/mc/server/craftbukkit.sh

Ich kann das Skript manuell starten, indem ich einfach in das Verzeichnis gehe und tippe ./craftbukkit.sh. Aber ich möchte das Skript starten, wenn die Maschine startet.

John Palmer
quelle
Ist das ein Daemon oder ein einmaliges Skript?
Gänseblümchen
@ warl0ck: Daemon. craftbukkit ist der Name des Servers und enthält ein Shell-Skript zum Ausführen, da es sich um eine Java-Anwendung handelt.
Matthew Scharley

Antworten:

5

Ich starte einen Minecraft-Server von einem Debian-Terminal aus, und dies ist wahrscheinlich der falsche Weg, aber es funktioniert. Erstens sudo apt-get install screen, speichern Sie dann das folgende Skript als /etc/init.d/minecraft:

#!/bin/bash
case "$1" in
  start)
    screen -S minecraft /home/mc/server/craftbukkit.sh
    echo "Server started on screen minecraft"
    ;;
  stop)
    screen -X -S minecraft kill
    echo "Server shutting down"
    ;;
  *)
    echo "Usage: /etc/init.d/minecraft {start|stop}"
    exit 1
    ;;
esac

exit 0

Führen Sie nun die folgenden Befehle als root aus:

update-rc.d -f minecraft defaults

Dadurch wird der Minecraft-Server beim Booten des Systems im Hintergrund ausgeführt. Führen Sie zum Anzeigen der Konsole screen -x minecraftein Terminal aus. Um die Konsole zu verlassen, drücken Sie Strg + A und dann D.

Suchipi
quelle
Wenn dies fehlschlägt, können Sie bereinigen, indem Sie die folgenden Dateien entfernen: /etc/init.d/minecraft /etc/rc0.d/K01minecraft /etc/rc1.d/K01minecraft /etc/rc2.d/S01minecraft /etc/rc3.d/S01minecraft /etc/rc4.d/S01minecraft /etc/rc5.d/S01minecraft /etc/rc6.d/K01minecraft /etc/rcS.d/S01minecraft
Suchipi
Ich bin mir sicher, dass es eine einfachere Möglichkeit gibt, die Symlinks einzurichten, aber ich habe Ubuntu seit einiger Zeit nicht mehr verwendet. Dies ist jedoch der richtige Ansatz.
Matthew Scharley
@MatthewScharley update-rc.d ist der richtige Weg, um mit alten Init-Skripten zu tun
Gänseblümchen
Manchmal beschwert sich update-rc.d über dieses Init-Skript, aber ich wusste nichts über die Option -f. Danke, @ warl0ck
Suchipi
1
@ppumkin init.d-Skripte werden als root ausgeführt. Als ich dies in der Vergangenheit auf meinem eigenen Minecraft-Server verwendet habe, lebte alles in / root / minecraft.
Suchipi
6

Auf dem neuesten Ubuntu sollten Sie es so machen, erstellen /etc/init/bukkit.conf(was auch immer .conf),

description     "Some java server"
author          "Moi <[email protected]>"

start on runlevel [2345]   # change start / stop level if needed
stop on runlevel [016]

pre-start script
   echo "script is abort to start"
end script

exec /path/to/script param1 param2

post-start script
   echo "script is started" # if you needed any post-start hack
end script

Weitere Informationen hier.

Gänseblümchen
quelle
0

In Ubuntu / Lubuntu sollte es einen Menüpunkt namens "Startanwendungen" geben. Auf meinem Ubuntu-Server befindet es sich im Menü "System> Einstellungen> Startanwendungen". Das ist in Gnome, aber es sollte lächeln. Wählen Sie die Schaltfläche "Hinzufügen" und geben Sie ihm einen Namen wie "Minecraft". Stellen Sie sicher, dass das Kontrollkästchen aktiviert ist, damit es gestartet wird.

Dies ist möglicherweise keine Hardcore-Linux-Lösung, bietet jedoch eine einfache Möglichkeit, festzustellen, ob sie aktiviert ist, und sie zu deaktivieren / aktivieren, wenn Sie möchten.

Joe
quelle
Leider startet dies das Skript nicht beim Booten, nur wenn Sie sich anmelden.
Daniel Kullmann
wahr, aber ich wollte eine vereinfachte Antwort, wie es normalerweise bei Ubuntu-Varianten der Fall ist oder wie ich sie als Fenster der Linux-Welt bezeichne.
Joe
0

Docker Ich bevorzuge es, Dockerfile zu erstellen und mit --restart = always tag auszuführen

Wenn Sie Ihr Shell-Skript beim Booten ausführen möchten, verwenden Sie die Crontab von Unix. Sie ist sehr einfach zu verwenden und kann in wenigen Minuten konfiguriert werden

  1. Bearbeiten Sie crontab, führen Sie Folgendes aus und ersetzen Sie den "USER" durch Ihren gewünschten Laufzeitbenutzer für den Knotenprozess. Wenn Sie einen anderen Benutzer als sich selbst auswählen, müssen Sie dies mit sudo ausführen.

    $ crontab -u USER -e

  2. Fügen Sie im Editor die folgende Zeile hinzu:

    @reboot sh /home/mc/server/craftbukkit.sh

  3. Das Speichern und Bestätigen der Datei wird durch erneutes Überprüfen des Befehls Nr. 1 gespeichert

    Hinweis: Meiner Meinung nach sollten Sie den vollständigen Pfad in der Crontab-Datei verwenden, um Probleme zu vermeiden

Sie können auf diese URL verweisen Ubuntu Cron HowTo

Chandani Patel
quelle