Я большой поклонник программы 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
после команды, чтобы запустить оболочку после завершения команды.