Як запустити екран із декількох розщеплень безпосередньо з командного рядка?


13

Я використовую screenпісля входу sshна свій сервер. Відтепер я встановлюю розбиття у вікні екрана вручну і запускаю команди вручну, як показано на наступному знімку екрана:

введіть тут опис зображення

  • Верхня частина повинна виконуватись tail -n 1 -f /home/server/log/access.log.
  • Права нижня частина повинна проходити htop
  • У нижній лівій частині повинен бути просто командний рядок

Чи може це зробити за допомогою команд / скриптів, тому мені не доведеться щоразу переробляти це вручну?



@muru Це цілком відповідає йому частиною, як запустити окремі екрани, тільки не частина, як їх безпосередньо упорядкувати, як показано вище.
Videonauth

Все, що можна зробити за допомогою ярликів на екрані, можна зробити за допомогою команд в .screenrc. Для цієї конструкції ми маємо в splitкоманді .
муру

Відповіді:


16

Для конкретного випадку віконних механізмів, є командний екран , щоб зберегти їх в файл: layout dump. Від 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.

Отже, як тільки ви домовитеся вручну, натисніть Ctrla:, а потім введіть layout dump /path/to/some/file. Макет буде збережено /path/to/some/fileі ви зможете відновити його в новому сеансі за допомогою:

screen -c /path/to/some/file

+1 приємний; split -vЗдається недокументовані :) Ось чому я з усіх сил.
Videonauth

@Videonauth це фактично задокументовано в розділі прив'язки клавіатур за замовчуванням. C-a | (split -v) Split the current region vertically into two new ones.
Сергій Колодяжний

Так, схоже, це згадується лише на сторінці, поруч із нею C-a |, але не в документах GNU
muru

Виявили дивну поведінку, яку ви хочете зазначити: Якщо ви введете, наприклад, layout dump ~/layoutпроцес не вдасться, йому потрібно пройти повний шлях (тобто /home/$USER/layout)
Videonauth

@Videonauth, оскільки розширення tilde зазвичай виконується оболонкою, це не дивно, якщо дана команда не підтримує її внутрішньо. Деякі так, більшість - ні.
муру

10

Я придумав наступне, щоб створити результат, показаний у моєму запитанні, і за відмінною відповіддю @ muru . Використання layout dumpдало мені наступне:

split
focus
split -v
focus

Примітка: ~розширення Tilde ( ) не працює, layout dumpтому замість, ~/layout.dmpнаприклад, вам потрібно використовувати /home/<username>/layout.dmp.

З чого я тоді створив наступне .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

Тепер мені потрібно лише набрати screenта запустити потрібний макет. Я залишаю це як приклад для тих, хто цікавиться, але не забудьте відповісти на голосування @ muru, оскільки він саме той, хто змусив мене це вирішити.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.