Verwenden von Watch Run 2-Befehlen


42

Ich muss zwei Befehle in denselben Terminalfenstern beobachten. Ich meine so etwas wie

watch du -h filename.txt && df -h

Aber es zeigt nur einen Ausgang.

Ich denke also, dass es möglicherweise nicht möglich ist, watch zu verwenden, um mehrere Befehle im selben Fenster auszuführen.

Wenn es einen Weg gibt, lass es mich wissen.

Danke.

Antworten:


67

Sie können die Befehle zitieren:

watch "du -h filename.txt && df -h"

Und sie werden zusammen hingerichtet.


Vielen Dank, Oli. Eigentlich Office-PC also nicht wagen, Experimente zu machen. also hier gepostet für eine sichere lösung. Danke.
Dienstag,

Hey, bist du sicher, dass sie funktionieren werden? weil ich beim Ausführen eine Erlaubnis verweigert bekomme Fehler "df:` / usr / raja / hostctrl / new ': Erlaubnis verweigert "
rʒɑdʒɑ

Das scheint ein separates Thema zu sein. Sie würden dieses Problem sogar sehen, ohne dass es in die Uhr gewickelt wird.
Oli

3
Beachten Sie, dass dies funktioniert, da diese Beispielbefehle mit true zurückgegeben werden . Sollte der erste Befehl false zurückgeben, würde der zweite Befehl (wegen boolean evaluation shortcut) nicht ausgeführt werden
karatedog

3
FTR verwendet mein Befehl, &&weil das OP verwendet &&. Die Kombination von Befehlen und deren Verknüpfung ist Bestandteil der Antwort.
Oli

19

Wenn Sie sicherstellen möchten, dass beide Befehle ausgeführt werden, besteht eine der Möglichkeiten darin, sie durch ;anstelle von zu trennen &&.

watch 'du -h filename.txt; df -h'

&&Ermöglicht die Ausführung des zweiten Befehls (zweiter Operand rechts von &&) nur, wenn der erste Befehl erfolgreich ausgeführt wurde (Exit-Status 0). Wenn dies beabsichtigtes Verhalten ist, gehen Sie mit &&.


1
Dieses Semikolon erscheint mir am besten als Antwort auf die ursprüngliche Frage. Wenn Sie "zwei Befehle ausführen" möchten, verwenden Sie ein Semikolon! Wenn Sie einen Befehl ausführen möchten, verwenden Sie && ....
JeremyDouglass

3

Der Vollständigkeit halber ...

 watch 'du -h filename.txt || true && df -h'

Das '|| Der Teil true bewirkt, dass der erste Befehl als true ausgewertet wird, auch wenn er aus irgendeinem Grund fehlschlägt. Dadurch kann der nächste Befehl nach && ausgeführt werden, unabhängig von der Ausgabe von first. Dies ist für das Szenario höchstwahrscheinlich nicht erforderlich, da es nur als möglich gezeigt wird.


-1

Verwenden Sie einen &Operator zwischen den Befehlen, damit mehrere Befehle gleichzeitig ausgeführt werden. Mögen:

dothis & dothat

Um Unklarheiten zu beseitigen, gehen Sie wie folgt vor:

c1 & c2  # Run both commands parallelly
c1 ; c2  # Run both commands one by one
c1 && c2 # Run c2 only if c1 exits successfully
c1 || c2 # Run c2 only if c1 fails

c1 und c2 führen nicht beide Befehle gleichzeitig aus. Wenn c1 erfolgreich ausgeführt wurde, wird nur c2 ausgeführt.
7.
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.