Команда Linux «screen» — как запустить экран и что-то на нем одновременно?

Команда Linux «screen» — как запустить экран и что-то на нем одновременно?

Я большой поклонник программы Linux «screen», которая позволяет мне запускать экран в сеансе SSH, который может оставаться активным после моего отключения.Подробнее об экране здесь

Есть ли способ запустить сеанс экрана из командной строки, который автоматически запустит другую программу (или скрипт .sh) в рамках этого сеанса экрана?

Я хотел бы добавить это в последовательность загрузки моего Raspberry Pi, чтобы всегда был запущен экран, автоматически запускающий какое-то программное обеспечение, даже если Pi перезапускается, чтобы я мог в любой момент подключиться к Pi по SSH и увидеть вывод этого программного обеспечения.

Я посмотрел наэто решение, но это помогает лишь частично. Он начинает экран таким образом

screen -t "df" watch -n 10 df

и успешно запускает команду «df».

Однако после завершения работы программы экран закрывается и исчезает.

Мне бы хотелось, чтобы экран оставался активным даже после завершения первоначально запущенной программы.

решение1

Измените команду на:

screen -t "df" bash -c 'watch -n 10 df; exec bash'

bash -c: Использоватьбаш -сдля запуска нескольких команд.

exec bash: Последфкоманда завершается, она запускает оболочку (bash), которая не завершится, пока что-то внешнее не завершит ее работу.

решение2

Это можно сделать, запустив команды в оболочке, которая останется запущенной после завершения команды.

Например, вПредотвратить завершение сеанса GNU screen после завершения выполнения скрипта, принятый ответ делает

exec bash

после команды, чтобы запустить оболочку после завершения команды.

Связанный контент