Führen Sie beim Booten des Computers eine SH-Datei aus

Führen Sie beim Booten des Computers eine SH-Datei aus

Ich bin ziemlich neu bei Linux und möchte wissen, was zu tun ist, um beim Start des Computers eine .sh-Datei zu starten. Grundsätzlich habe ich einen Servercomputer mit Linux-Betriebssystem und möchte beim Neustart/Absturz des Systems eine JBoss-Anwendung ausführen

Ich habe S99jBossServersrc2.d mit Link hinzugefügt /etc/rc.d/init.d/jBossServers.shund volle Berechtigung(777) erteilt fürjBossServers.sh

Der Inhalt jBossServers.shist wie folgt

#!/bin/sh
#
# chkconfig: 2345 80 30 
# description: 
#

RETVAL=0

start () {
    /root/batch/startSikkimCA.sh
    /root/batch/startSikkimSp.sh
}

stop () {
    /root/batch/stopSikkimCA.sh
    /root/batch/stopSikkimSp.sh
    RETVAL=$?
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        start
        ;;
    *)
        start
;;
        RETVAL=$?
esac
exit $RETVAL

Ich bin nicht sicher, ob es richtig ist oder nicht, aber die beiden Pfade wurden in

start() und stop()

sind korrekt, aber die Anwendung startet beim Neustart des Computers trotzdem nicht.

Antwort1

AnsehendrinDies ist der herkömmliche Prozessstarter und führt Skripte unter /etc/init.d, /etc/rc1.d, usw. und aus /etc/rc.local. Dies ist wahrscheinlich der gewünschte Speicherort.

Einige Distributionen verwendenEmporkömmlingstattdessen – wenn ja, sehen Sie sich die entsprechenden Dokumente an.

In beiden Fällen können die genauen Pfade je nach Distribution unterschiedlich sein, dies sollte jedoch für den Anfang ausreichen.

Antwort2

Versuchen Sie zu überprüfen, ob Ihre Skripte gestartet werden (z. B. indem Sie touch /var/tmp/startup.scriptsie einfügen). Sind alle Befehle in Ihren Skripten beim Booten im Suchpatch?

Runlevel 2 kommt mir ungewöhnlich vor. 3 sollte bei einem Linux ohne GUI normal sein. Welche Distribution und Version verwendest du?

Antwort3

Suchen /etc/inittabSie nach einer Zeile wie id:3:initdefault:. Die Zahl wird wahrscheinlich 3 oder 5 sein, könnte aber auch 2 oder 4 sein. Die Zahl in dieser Zeile ist der Standard-Runlevel. Höchstwahrscheinlich ist es nicht 2, sodass Ihre Skripte in rc2.d nicht ausgeführt werden.

Legen Sie Ihr Skript in das rcN.d-Verzeichnis, das der Nummer in der initdefaultZeile entspricht.

Im Prinzip ist rc.local die bessere Wahl, aber rc.local variiert so stark von Distribution zu Distribution (manchmal ist es ein Verzeichnis, manchmal ein Skript, manchmal ist es überhaupt nicht eingerichtet), dass es einfacher ist, es einfach in den richtigen Runlevel zu setzen, ohne Ihre Distribution zu kennen. Sie können versuchen, man rc.localherauszufinden, was das auf Ihrem System bedeutet. Wenn Ihr System rc.local als Verzeichnis unterstützt, setzen Sie Ihr Skript dort ein und machen Sie sich keine Gedanken über die Runlevel.

Stellen Sie außerdem sicher, dass Ihr Skript dem Root-Benutzer gehört und über die Berechtigungen 755 (wenn es von jedem ausgeführt werden können soll) oder 744 verfügt.

Antwort4

Hinzufügen eines Startskripts

Diese Methode funktioniert mit Red Hat, Fedora, Ubuntu (Paket chkconfig und Service installieren), Suse.

Sie sollten Ihr Skript in /etc/init.d kopieren (es ist entweder das richtige Verzeichnis oder ein Link zum richtigen Verzeichnis, sodass es gleich funktioniert).

sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh

Dann müssen Sie es zum Systemstartprozess hinzufügen. Anstatt alle erforderlichen Links zu erstellen, verwenden Sie chkconfig (installieren Sie das Paket zuerst unter Ubuntu).

sudo chkconfig add jBossServers.sh

Wenn ich jetzt die Überschrift Ihres Skripts lese, enthält dieses Skript bereits die Informationen für chkconfig bezüglich der Runlevel und Priorität. Also ist alles in Ordnung. Beim nächsten Neustart wird JBoos gestartet.

Aber Sie könnten versuchen, sofort damit anzufangen

sudo service jBossServers.sh start

Hinweis: Wenn Ihr System sich beschwert, dass es chkconfig oder service nicht findet, versuchen Sie vorher, diese mit /sbin/ aufzurufen. Beispiel

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start

verwandte Informationen