У меня есть сеанс экрана, который я запускаю с парой работающих в нем окон, которые запускают пару приложений, которые запускают консоль в окне терминала (поэтому я запускаю их на экране).
Я бы хотел убить все окна, а затем добавить два новых, которые, по сути, просто повторно запустили команду, чтобы снова запустить программу.
Поскольку это может немного сбить с толку, вот что я бы сделал если бы я просто пытался сделать это вручную в командной строке:
$ screen -x programs
$ (Hit Control-a + \ )
$ (Hit Control-a + c)
$ program1 args0 args1 #running first program again
$ (Hit Control-a + c)
$ program2 args0 args1 #running second program
Технически мне даже не нужно убивать существующие окна, просто остановите интерактивное окно. Обычно я делаю это, когда в окне просто нажимаю CTRL-D, и программа перестает работать. Затем я просто снова запускаю программу.
Я знаю, что есть команды, чтобы я мог подключиться к существующему сеансу экрана по имени, я просто не знаю, как я могу использовать это, чтобы отправить эквивалент CTRL + D, а затем отправить другая команда к нему.
попробуйте это, чтобы выйти из сеанса работы с экраном.
screen -dr your_session_name -X quit
Note:
Различные Linux/Unix системы имеют различные способы работы с длинными процессами. Если Ваша система управляет процессами, используя systemd
, а его версия выше 230
, попробуйте прочитать последнее руководство systemd.