Saya banyak menggunakan perintah "log" layar untuk mencatat output sesi ke file, ketika saya membuat perubahan di lingkungan tertentu. Saya mencari melalui halaman manual tmux, tetapi tidak dapat menemukan yang setara. Adakah yang mengetahui fitur serupa di tmux, atau apakah saya harus menulis skrip pembungkus saya sendiri untuk melakukan ini?
EDIT: Saya mengetahui 'skrip' dan utilitas lain yang memungkinkan saya mencatat sesi. Alasan fungsionalitas layar sangat berguna adalah kemampuan untuk mendefinisikan variabel logfile yang menggunakan string lolos untuk mengidentifikasi secara unik setiap sesi.
misalnya saya memiliki fungsi shell yang, diberi nama host, akan SSH ke host itu di jendela layar baru dan mengatur judul jendela ke nama host. Ketika saya memulai log sesi itu, diawali dengan judul jendela.
Jika fungsi ini tidak ada di tmux, saya harus membuat serangkaian fungsi shell baru untuk mengatur 'skrip' sesi yang ingin saya log. Ini tidak terlalu sulit, tetapi mungkin tidak sepadan dengan usaha yang diberikan layar yang sudah tepat seperti yang saya butuhkan.
sumber
tmux pipe-pane …
perintah didefault-command
(misalnya sebelum memulai shell); tentu saja itu hanya akan berfungsi untuk panel "default" (tidak ada yang dimulai dengan perintah eksplisit, misalnyanew-window sqlite3
). Ada petunjuk bahwa dukungan "hook" mungkin masuk dalam beberapa versi tmux di masa depan ; ini mungkin membiarkan Anda mengkonfigurasi perintah (misalnyapipe-pane …
) secara otomatis dijalankan setelah beberapa perintah lainnyanew-session
,new-window
atausplit-pane
).read
dandate
untuk mengaturnya. Misalnyabind-key H pipe-pane -o 'exec bash -c "while IFS= read -r line; do echo \"\$(date +%%Y%%m%%dT%%H%%M%%SZ%%z): \$line\"; done" >>$HOME/"#W-tmux.log"'
date
untuk setiap baris output akan menjadi hit kinerja yang serius! Jauh lebih baik untukprintf '%(%Y%m%dT%H%M%S)T: %s\n' "$line"
(melarikan diri seperlunya untuk dimasukkan dalam file konfigurasi tmux, sehingga mungkin menggandakan%s
dan melarikan diri dari"
s).Berikut adalah plugin tmux yang memungkinkan logging tanpa mengacaukan binding utama di
.tmux.conf
:https://github.com/tmux-plugins/tmux-logging
Fitur:
prefix + P
matikan pane logging. Output dihapus dari karakter ANSI yang tidak diinginkan!prefix + Alt + P
menyimpan riwayat panel lengkap ke filesumber
Setelah melihat dokumentasi untuk tmux, saya tidak dapat menemukan yang setara dengan pencatatan jendela layar. Sepertinya Anda harus menggunakan fungsi shell Anda untuk melakukan apa yang Anda suka, atau cukup gunakan layar. Anda dapat mengaktifkan debugging, yang mencatat baik sisi server dan klien, tetapi juga mencakup banyak log terkait tmux yang tidak berhubungan juga, sehingga tidak persis seperti yang Anda minta.
Anda mungkin dapat menggunakan clipboard tmux untuk secara otomatis menyimpan buffer ke sesi lain, yang akan diatur untuk menerima konten clipboard dan menyimpan ke file. Ini sepertinya jenis peretasan.
sumber
saya melakukannya menggunakan skrip, ini dari file tmux.conf saya
sumber
log
perintah layar , yang memungkinkan logging on the fly. Tetapi kemudian jika Anda berada di tmux dan ingin menggunakan logging layar, Anda harus tetap memulai shell baru.