Bagaimana cara memulai layar dengan banyak pemisahan langsung dari baris perintah?

12

Saya menggunakan screensetelah saya masuk dengan sshke server saya. Sampai sekarang saya mengatur pemisahan di jendela layar saya dengan tangan dan menjalankan perintah dengan tangan seperti yang ditunjukkan dalam screenshot berikut:

masukkan deskripsi gambar di sini

  • Bagian atas harus dijalankan tail -n 1 -f /home/server/log/access.log.
  • Bagian kanan bawah harus dijalankan htop
  • Yang kiri bawah seharusnya menjadi prompt perintah

Apakah ada cara untuk melakukannya melalui perintah / skrip, jadi saya tidak perlu mengulanginya setiap kali dengan tangan?

Videonauth
sumber
@muru Ini cukup menjawab untuk bagian bagaimana memulai layar terpisah, hanya saja bukan bagian bagaimana agar mereka langsung dipesan seperti yang ditunjukkan di atas.
Videonauth
Segala sesuatu yang dapat dilakukan menggunakan cara pintas di layar dapat dilakukan dengan menggunakan perintah di .screenrc. Untuk pengaturan ini kita memiliki yang splitperintah .
muru

Jawaban:

15

Untuk kasus tertentu pengaturan jendela, ada perintah layar untuk menyimpannya ke file: layout dump. Dari man screen:

layout dump [filename]

Write to a file the order of splits made in the current layout. This is
useful to recreate the order of  your  regions  used  in  your  current
layout.  Only  the  current  layout is recorded. While the order of the
regions are recorded, the sizes of  those  regions  and  which  windows
correspond  to  which regions are not. If no filename is specified, the
default is layout-dump, saved in the directory that the screen  process
was  started in. If the file already exists, layout dump will append to
that file. As an example:

           C-a : layout dump /home/user/.screenrc

will save or append the layout to the user's .screenrc file.

Jadi, begitu Anda membuat pengaturan secara manual, tekan Ctrla:, lalu ketik layout dump /path/to/some/file. Tata letak akan disimpan ke /path/to/some/filedan Anda dapat mengembalikannya di sesi baru dengan:

screen -c /path/to/some/file
muru
sumber
+1 bagus; The split -vtampaknya tak tercatat :) ini adalah mengapa saya berjuang.
Videonauth
@Videonauth sebenarnya didokumentasikan di bawah bagian keybindings default. C-a | (split -v) Split the current region vertically into two new ones.
Sergiy Kolodyazhnyy
Ya, sepertinya itu hanya disebutkan di halaman manual, di sebelah C-a |, tetapi tidak di dokumen GNU
muru
Menemukan perilaku aneh yang mungkin ingin Anda sebutkan: Jika Anda mengetik misalnya layout dump ~/layoutprosesnya akan gagal, itu perlu path lengkap (yaitu /home/$USER/layout)
Videonauth
@ Videoonauth karena ekspansi tilde biasanya dilakukan oleh shell, tidak mengherankan jika perintah yang diberikan tidak mendukungnya secara internal. Sebagian melakukannya, sebagian besar tidak.
muru
10

Saya datang dengan yang berikut untuk membuat output yang ditunjukkan dalam pertanyaan saya dan mengikuti jawaban yang sangat baik @ muru . Menggunakan layout dumpmemberi saya hal berikut:

split
focus
split -v
focus

Catatan: ~Perluasan Tilde ( ) tidak berfungsi dengan baik, layout dumpsebagai ~/layout.dmpcontoh, Anda tidak perlu menggunakannya /home/<username>/layout.dmp.

Dari mana saya kemudian membuat yang berikut ini .screenrc

# create the top screen
chdir /home/server/log
screen -t "Apache Log" tail -n 1 -f access.log
# split the screen and focus onto the new created space
split
focus
#create the bash
chdir /home/server/log
screen
# split vertically and focus onto the new area
split -v
focus
# create the htop screen
screen -t "Htop" htop
# focus twice to end up with the bash area active
focus
focus

Sekarang saya hanya perlu mengetik screendan memulai layout yang saya inginkan. Saya meninggalkan itu di sini sebagai contoh bagi mereka yang bertanya-tanya, tetapi jangan lupa untuk memilih-pilih jawaban @ muru, karena dialah yang membuat saya mampu menyelesaikan ini.

Videonauth
sumber