Saya dulu bekerja untuk perusahaan yang memiliki shell khusus untuk manajemen salah satu produk mereka yang berjalan di Linux dan saya ingin mereplikasi fitur utama shell ini.
Semua pekerjaan dilakukan oleh proses latar belakang dan output dari log ditampilkan ke semua pengguna yang terhubung.
Log akan mengikuti latar belakang shell Anda, dan baris prompt akan selalu tetap sempurna di bagian bawah.
Untuk misalnya
Log line 1
Log line 2
Log line 3
![ROOT@PRODUCT51-LIVE]:~/ #
Cara saya mencoba melakukan ini dengan bash adalah untuk memulai ekor terpisah di file .bashrc pengguna, tetapi ketika output dari perintah dikirim ke stdout - ia datang di bawah bash prompt, misalnya
![ROOT@PRODUCT51-LIVE]:~/ #Log line 1
Log line 2
Log line 3
Dan pengguna harus menekan enter atau CtrlCuntuk baris prompt bersih.
Saya kehabisan ide tentang cara membuat prompt selalu melompat ke bagian bawah output dan saya pikir saya menggunakan terminologi yang salah untuk menemukan apa pun di Google karena saya tidak beruntung - apakah ada yang tahu bagaimana melakukan ini dengan bash?
tail -f
output dan prompt dan output perintah ketika Anda memasukkan perintah yang memiliki jumlah output yang signifikan, terutama ketika proses latar belakang Anda secara aktif mengirimkan outputnya?Jawaban:
Berikut ini melakukan apa yang Anda butuhkan, tanpa menggunakan tmux atau layar atau program lain. Mempertahankan prompt di bagian bawah. Ganti "/ var / log / cron" dengan file apa pun yang Anda butuhkan:
kunci untuk ini adalah karakter kontrol ANSI untuk terminal. Khususnya pernyataan "\ e [x; y" yang menetapkan area yang dapat digulir baru. Jadi, ketika setiap baris file log dibaca, garis bawah di jendela dikecualikan dari area yang dapat digulir, baris dari file log dimasukkan, kemudian bagian bawah ditambahkan kembali.
sumber
Jawabannya adalah layar atau tmux telah digunakan
Saya akan menjelaskan bagaimana Anda bisa mengkonfigurasi layar menggunakan seperti itu
1) Pasang layar menggunakan derivasi
apt-get install screen
Ubuntu / Debian atauyum install screen
RedHat.2)
screen -S shell_and_logs
3) Kemudian tekan Ctrl+ a, diikuti oleh
S
(huruf kapital S).Layar horizontal akan muncul
4) Tekan Ctrl+ adiikuti oleh TAB
Ini akan melompat ke jendela split kedua.
5) Buat jendela lain di sini sehingga Anda mendapatkan prompt perintah dengan menekan Ctrl+ alepaskan tombol lalu tekan
c
6) Anda dapat mengubah ukuran windo kedua dengan menekan Ctrl+ alalu mengetik
:resize
setelah yangLines:
akan muncul. Masukkan jumlah baris yang ingin Anda tampilkan.7) Akhirnya Anda dapat beralih antar windows dengan Ctrl+ adiikuti olehTAB
sumber
tail -F /var/log/messages &
lain untuk menampilkan pesan kepada Anda ketika sesuatu berubah misalnya ketika kegagalan login ditemukan atau ketika beberapa layanan mengalami masalah. Namun ini tidak ideal karena akan mengacaukan shell interaktif Anda.screen
dantmux
yang dapat melakukan ini - misalnya beberapa kapal BSD denganwindow
perintah. Diberi pilihan meskipun saya akan merekomendasikan solusi ini baik pada shell kustom atau opsi lain yang tersedia karena fleksibilitasnya. Ini mungkin tidak setransparan kepada pengguna akhir, tetapi mereka benar-benar tidak akan tahu bedanya, dan pengguna listrik / sysadmin akan dapat menggunakan fleksibilitas ekstra yang ditawarkan olehscreen
.t=$(mktemp); printf '%s\n' 'screen tail -F /var/log/messages' split focus screen > "$t"; screen -S screenname -c "$t"
Masukkan ke dalam skrip dan jalankan setiap kali Anda inginkan. Terima kasih kepada geirha untuk ini di #bash @ irc.freenode.org