menggunakan perintah watch run 2

42

Saya harus menonton dua perintah di jendela terminal yang sama. Maksud saya sesuatu seperti

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

Tetapi hanya menunjukkan satu output.

Jadi yang saya pikirkan adalah mungkin tidak mungkin menggunakan arloji untuk menjalankan banyak perintah di jendela yang sama.

Jika ada cara, Tolong beri tahu saya.

Terima kasih.

rɑːdʒɑ
sumber

Jawaban:

67

Anda dapat mengutip perintah:

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

Dan mereka akan dieksekusi bersama.

Oli
sumber
Oli terima kasih. sebenarnya office PC jadi tidak berani melakukan eksperimen. jadi diposting di sini untuk solusi pasti. Terima kasih.
rɑːdʒɑ
Hei kamu yakin mereka akan bekerja? karena ketika mengeksekusi saya mendapatkan beberapa kesalahan izin ditolak "df:` / usr / raja / hostctrl / new ': Izin ditolak "
rɑːdʒɑ
Itu tampaknya menjadi masalah tersendiri. Anda akan melihat masalah itu bahkan tanpa dibungkus dengan arloji.
Oli
3
Sadarilah ini bekerja karena contoh perintah itu kembali dengan true . Jika perintah pertama mengembalikan false , perintah kedua tidak akan dieksekusi (karena boolean evaluation shortcut)
karatedog
3
FTR, perintah saya menggunakan &&karena OP menggunakan &&. Kombinasi perintah dan tautannya bersifat kebetulan untuk jawabannya.
Oli
19

Jika Anda ingin memastikan kedua perintah dijalankan, salah satu caranya adalah memisahkannya dengan ;alih - alih &&.

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

&&memungkinkan eksekusi perintah kedua (operan kedua, di sebelah kanan &&) hanya jika perintah pertama berhasil dijalankan (status keluar 0). Jika ini perilaku yang dimaksudkan, ikuti &&.

Pranav Kulkarni
sumber
1
Bentuk titik koma ini menurut saya paling baik sebagai jawaban atas pertanyaan awal. Jika Anda ingin "menjalankan dua perintah", gunakan tanda koma! Jika Anda ingin "menjalankan satu perintah, maka mungkin yang lain" gunakan && ....
JeremyDouglass
3

Demi kelengkapan ...

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

'|| Bagian true 'menyebabkan perintah pertama untuk mengevaluasi sebagai benar bahkan jika gagal karena suatu alasan. Ini akan memungkinkan perintah berikutnya setelah && untuk mengeksekusi tidak peduli keluaran pertama. Ini kemungkinan besar tidak perlu untuk skenario, hanya menunjukkan itu mungkin.

Geofferey
sumber
-1

Agar beberapa perintah dapat berjalan secara bersamaan, gunakan satu &operator di antara perintah. Seperti:

dothis & dothat

Untuk menghapus kebingungan, berikut cara kerja berbagai operator:

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
sumber
c1 & c2 tidak akan menjalankan kedua perintah secara paralel, jika c1 berhasil dijalankan maka hanya c2 yang akan berjalan.
rɑːdʒɑ