Как запустить экран с несколькими разделениями прямо из командной строки?

12

Я использую screenпосле того, как я вошел в систему с sshмоего сервера. На данный момент я вручную установил разбиения в окне на экране и вручную выполнил команды, как показано на следующем снимке экрана:

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

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

Есть ли способ сделать это с помощью команд / скрипта, поэтому мне не придется каждый раз переделывать это вручную?

Videonauth
источник
@muru Это вполне соответствует тому, как запускать отдельные экраны, а не тому, как их напрямую упорядочить, как показано выше.
Видеонавт
Все, что можно сделать с помощью ярлыков на экране, можно сделать с помощью команд в .screenrc. Для этой конструкции мы имеем в splitкоманде .
Муру

Ответы:

15

Для конкретного случая оконных механизмов, есть командный экран , чтобы сохранить их в файл: 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 это на самом деле задокументировано в разделе привязок клавиш по умолчанию. C-a | (split -v) Split the current region vertically into two new ones.
Сергей Колодяжный
Да, похоже, это упоминается только на странице руководства C-a |, но не в документации GNU
Muru
Обнаружил странное поведение, о котором вы могли бы упомянуть: если вы layout dump ~/layout/home/$USER/layout
наберете,
@Videonauth, поскольку расширение тильды обычно выполняется оболочкой, неудивительно, если данная команда не поддерживает ее внутренне. Некоторые делают, большинство нет.
Муру
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, поскольку именно он помог мне решить эту проблему.

Videonauth
источник