Почніть фонову screen
назву сеансу "mysession":
screen -d -m -S mysession
Запустити top
в першому вікні
screen -S mysession -X exec top
Запустіть ще одне вікно, назвіть його "win1" та запустіть vmstat 10
у ньому " "
screen -S mysession -X screen -t win1
screen -S mysession -p win1 -X exec vmstat 10
Запустіть інше вікно, назвіть його "win2" та запустіть iostat 30
у ньому " "
screen -S mysession -X screen -t win2
screen -S mysession -p win2 -X exec iostat 30
Щоб підключитися та переглянути сеанс:
screen -x -S mysession
Якщо будь-яка з програм вийде, вікно не закриється, оскільки screen
в кожній з них буде запущена оболонка (яку ви можете використовувати, якщо потрібно).
- АБО - якщо ви хочете лише одну команду на вікно або хочете легше очистити після завершення процесів, не запускайте оболонку за замовчуванням у кожному вікні, а лише команду (и):
screen -d -m -S mysession top
screen -S mysession -p 0 -X title win0 # optional!
screen -S mysession -X screen -t win1 vmstat 10
screen -S mysession -X screen -t win2 iostat 30
screen
"завершить" вікно (можливо, залишивши вміст вікна недоторканим, див. zombie
нижче), коли процес завершиться, або закриє їх:
screen -S mysession -X quit # nuke whole the session
або
screen -S mysession -p win2 -X kill
screen -S mysession -p win1 -X kill
screen -S mysession -p 0 -X kill
(це може або не може знищити жодних запущених процесів, screen
але надсилатиме кожен SIGHUP)
Якщо ви хочете screen
автоматично закривати вікна та виходити, коли всі процеси завершені, додайте це після створення сеансу (хоча якщо у вас цього не zombie
встановлено .screenrc
, це все одно за замовчуванням):
screen -S mysession -X zombie
Це скасовує клавіші закриття та воскресіння "зомбі", після чого вікна зникають, коли команда у кожному вікні закінчується, screen
і вона закриється, коли останнє вікно. (Можливо, вам доведеться використовувати defzombie
замість zombie
, але для мене працює лише останній, незважаючи на те, що документація суперечить.)
tmux
зscreen
, набагато краще термінальний мультиплексор. Відповідь на ваше запитання: unix.stackexchange.com/a/152740