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.

rɑːdʒɑ
quelle

Antworten:

67

Sie können die Befehle zitieren:

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

Und sie werden zusammen hingerichtet.

Oli
quelle
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 &&.

Pranav Kulkarni
quelle
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.

Geofferey
quelle
-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
Vibhum Bhardwaj
quelle
c1 und c2 führen nicht beide Befehle gleichzeitig aus. Wenn c1 erfolgreich ausgeführt wurde, wird nur c2 ausgeführt.
7.