Programm beim Booten mit Bildschirm starten

Programm beim Booten mit Bildschirm starten

Hier ist mein Skript in init.d (Debian Linux)

#! /bin/sh
# /etc/init.d/blah
#

# Some things that run always
touch /var/lock/McMyAdmin

# Carry out specific functions when asked to by the system
case "$1" in
start)
echo "Starting McMyAdmin "
screen -dmS Minecraft
sleep 2
screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`
;;
stop)
echo "Stopping McMyAdmin"
screen -S Minecraft -X stuff "\quit"`echo -ne '\015'`
;;
*)
echo "Usage: /etc/init.d/McMyAdmin {start|stop}"
exit 1
;;
esac

exit 0

Mein Problem ist, dass beim Starten der Bildschirmsitzung nichts passiert. Wenn ich Zeile für Zeile tippe, funktioniert es einwandfrei, aber im Skript funktioniert nichts. Es erstellt die Bildschirmsitzung, aber es werden keine Befehle an sie gesendet. Was mache ich falsch?

Antwort1

Sie müssen mit cd in das McMyAdmin-Installationsverzeichnis wechseln, bevor Sie es ausführen können. Sie können das Skript start.sh nicht aus einem anderen Verzeichnis ausführen.

Ändern:

screen -S Minecraft -X stuff "bash /opt/McMyAdmin/start.sh"`echo -ne '\015'`

Zu

cd /opt/McMyAdmin/
screen -S Minecraft -X stuff "sh start.sh"`echo -ne '\015'`

Außerdem ist es keine gute Idee, McMyAdmin in /opt/ zu platzieren und als Root auszuführen. Stattdessen sollten Sie einen eigenen Benutzer dafür erstellen und entweder eine @reboot-Zeile in der Crontab dieses Benutzers verwenden oder su in Ihrem Initscript verwenden, um zu ändern, welcher Benutzer zum Ausführen des Servers verwendet wird.

verwandte Informationen