Bisakah saya melihat apa yang terjadi dalam sesi tmux tanpa melampirkannya?

16

Seringkali saya akan gunakan tmuxuntuk memulai tugas yang akan berjalan untuk sementara waktu. Saya secara berkala akan kembali dan memeriksanya menggunakan tmux -adan kemudian memutuskan sambungan jika masih belum selesai dan periksa lagi nanti.

Apakah ada cara untuk melihat cuplikan singkat tentang apa yang terjadi dalam sesi tanpa melampirkan sepenuhnya? Saya mencari sesuatu seperti melakukan secara teoritis tailpada sesi untuk mendapatkan bit terakhir dari output (tetapi jika saya dapat menghindari membuat file lain dengan salinan dari output semua lebih baik)

Mungkin melampirkan dan melepaskannya juga akan berhasil. Saya mencoba menyelamatkan penekanan tombol, mungkin perintah seperti itu dapat dijalankan dari jarak jauh,
yaitu ssh root@server tmux --tail?

cwd
sumber

Jawaban:

17

Saya pikir capture-panemungkin sesuai dengan kebutuhan Anda:

tmux capture-pane -pt "$target-pane"

(lihat “panel target” di halaman manual untuk cara-cara menentukan panel)

Secara default, perintah itu akan membuang konten saat ini dari panel yang ditentukan. Anda dapat menentukan rentang garis dengan menggunakan opsi -Sdan -E(nomor awal dan akhir): baris pertama adalah 0, dan angka negatif merujuk ke baris dari riwayat "gulir kembali" panel. Jadi menambahkan -S -10memberi Anda sepuluh baris sejarah terbaru ditambah isi panel saat ini.

tmux capture-pane -pt "$target-pane" -S -10

The -ppilihan yang ditambahkan di 1,8. Jika Anda menjalankan versi sebelumnya maka Anda bisa melakukan ini sebagai gantinya:

tmux capture-pane -t "$target_pane" \; save-buffer - \; delete-buffer

Tapi ingat, koma-koma itu jika Anda mengeluarkan perintah ini sshkarena shell jarak jauh akan menambah level tambahan interpretasi shell (koma harus dilewati sebagai argumen pada perintah tmux final , mereka tidak boleh diinterpretasikan oleh lokal atau remote kulit).

Chris Johnsen
sumber
1
Anda benar-benar memiliki tag ini ... Jawaban yang bagus (seperti biasa).
jasonwryan
Satu juga dapat menambahkan -euntuk lolos ANSI (warna dan sebagainya). Itu membuat mnemonik yang bagus-pet
domba terbang
1

Tidak juga. Salah satu pendekatan yang muncul dalam pikiran adalah memulai proses lari panjang Anda ( $lrp) dan kemudian, secara berkala, tanpa melampirkan kembali, menjalankanlist-windows untuk sesi yang relevan.

Pada titik tertentu, nama jendela tmux dengan $ lrp akan berubah kembali ke default, umumnya shell Anda, dan Anda akan dapat melihat bahwa $ lrp telah selesai.

┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: $lrp* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
┌─[Veles ~]
└─╼ tmux list-windows -t 0
0: App1  (1 panes) [142x51] [layout b27d,142x51,0,0,0] @0
1: SSH  (1 panes) [142x51] [layout b27e,142x51,0,0,1] @1
2: IRC  (1 panes) [142x51] [layout b27f,142x51,0,0,2] @2
3: Shell- (1 panes) [142x51] [layout b280,142x51,0,0,3] @3
4: bash* (1 panes) [142x51] [layout b281,142x51,0,0,4] @4 (active)
jasonwryan
sumber
ide bagus. Saya masih bingung tentang $lrp- apakah itu variabel yang Anda sebutkan? dapatkah Anda memberikan contoh bagaimana itu akan digunakan? tidak melihat $lrpterdaftar diman tmux
cwd
@cwd Itu hanya pengganti untuk proses Anda (katakan rsyncatau apalah) ... :)
jasonwryan