2 Befehle hintereinander ausführen

4 Antworten

Vom Beitragsersteller als hilfreich ausgezeichnet

Hallo platonshead,

Dann schau Dir mal das an:

        sysvinit (alt)                       |  systemd (neu)                                        |  Wirkung:
        =====================================+=======================================================+==========================================================
        /etc/init.d/dienstprogramm start     |  systemctl start dienstprogramm.service               |  Startet einen Dienst sofort
        /etc/init.d/dienstprogramm stop      |  systemctl stop dienstprogramm.service                |  Stoppt einen Dienst sofort
        /etc/init.d/dienstprogramm restart   |  systemctl restart dienstprogramm.service             |  Startet einen Dienst neu
        /etc/init.d/dienstprogramm status    |  systemctl status dienstprogramm.service              |  Zeigt den Staus des Dienstes an
                                             |  systemctl enable dienstprogramm.service              |  Legt einen Dienst in den Systemstart
                                             |  systemctl disable dienstprogramm.service             |  Entfernt einen Dienst aus dem Systemstart
                                             |  systemctl is-enabled dienstprogramm.service;  |  Fragt ab ob ein Dienst mit dem System gestartet wird
        Einige Beispiele:
        ================================+=======================================================+==========================================================
        /etc/init.d/networking start       |       systemctl start network.service                 |       Startet den Netzwerdienst
        /etc/init.d/networking stop        |       systemctl stop network.service                  |       Stoppt den Netzwerdienst
        /etc/init.d/networking restart     |       systemctl restart network.service               |       retartet den Netzwerdienst
        /etc/init.d/networking status      |       systemctl status network.service                |       Fragt den Status des Netzwerkdienst ab

aber eigentlich passt ja Deine Frage gar nicht zur Problemstellung, denn es gibt natürlich die Möglichkeiten zwei (oder mehr) Befehle nacheinander ausführen zu lassen:

befehl 1 ; befehl 2

Führt zuerst befehl 1 und danach befehl 2

befehl 1 && befehl 2

Führt zuerst befehl 1 aus und befehl 2 nur dann wenn befehl 1 keine Fehlermeldung ausgegeben hat.

befehl 1 || befehl 2

Führt befehl 1 aus und falls befehl 1 eine Fehlermeldung ausgibt wird befehl 2 ausgeführt.

Das was Du suchst ist aber nur:

/etc/init.d/networking restart

bzw.

systemctl restart network.service

Damit wird das Netzwerkinterface gestoppt und direkt wieder gestartet.

lieben Gruß aus Zuhaus

Die Aufrufe müssen ja so oder so nacheinander erfolgen. Also entweder du benutzt das bereits von xtremeburnout erwähnte restart (http://www.cyberciti.biz/faq/linux-restart-network-interface/), oder du machst den Befehl mit &&. Du kannst natürlich auch ein Bash-Script schreiben.

Das Problem an deiner Beschreibung ist folgendes:

Führst Du das stop aus, wird deine Verbindung getrennt. Ist die Verbindung getrennt, wird die Konsole geschlossen und alle darauf gestarteten Programme inklusive der Shell (z.B. Bash) beendet. Also auch dein Befehl. Das networking start wird also nicht ausgeführt falls die zeitliche differenz zwischen deinem Verbindungsabbruch und dem ausführen der beiden Befehle zu groß ist. (einige Millisekunden bis wenige Sekunden).

Eine Möglichkeit wäre das einmalige Ausführen eines Scripts durch einen cron-job, oder über das Programm "screen". Screen erstellt eine Sitzung auf dem Rechner, die auch weiter existiert, wenn Du die Verbindung zu dem Rechner trennst. Wenn Du dich neu Verbindest, kannst Du dich bei dieser Screen-Session weiter einklinken und ganz normal weitermachen. Bereits gestartete Programme und Scripts werden natürlich auch ausgeführt, wenn Du gerade nicht verbunden bist.

Das Programm "screen" finde ich daher für ssh-Verbindungen immer sehr nützlich. Vorallem wenn man Netzwerkverbindungen neu starten möchte ;-)

Oder einfach networking restart benutzen. Aber das && geht auch.


platonshead 
Beitragsersteller
 12.03.2012, 12:54

danke, das war einfacher und hat einwandfrei funktioniert ;)

trotzdem würden 2 befehle so kombinierbar sein?

0