Я хочу иметь возможность запустить команду, например ./stats.sh, чтобы открыть экран (или tmux, или что-то еще, если нужно), который либо присоединяется, если он уже существует, либо запускается, если его нет, работает скажем, «htop» в одной панели и «dstat» в другой.

Я знаю, что вы можете сделать это с помощью Ctrl + A | в существующем сеансе экрана, но я хотел бы иметь возможность сделать все это из сценария, который я могу просто запустить. Это возможно?

Другой способ сформулировать вопрос: возможно ли запустить экран из командной строки с несколькими панелями, каждая из которых выполняет свою команду.

1 ответ1

1

Этот вопрос задавался в разных формах, но я буду ссылаться на те, где это уместно.

Сначала, чтобы прикрепить к существующему экрану или создать новый, если необходимо, используйте это:

screen -D -R -S namedscreen

Кроме того, вы можете проверить, существует ли именованный экран, и создать его (отдельно), если нет:

screen -S name -X select . || screen -dm -S name

Для остальной части скритинга вы можете создавать окна и отправлять команды в существующий сеанс экрана:

screen -dm -S name -t window0
screen  -S name -X screen -t window1
screen  -S name -X screen -t window2
screen  -S name -p 0 -X stuff $'command 1\r'
screen  -S name -p 1 -X stuff $'command 2\r'
screen  -S name -p 2 -X stuff $'command 3\r'

Наконец, посмотрите этот пост о том, как сделать то же самое с tmux.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .