Скажіть GNU екрані, щоб він "повторно прикріпив або створив і виконав команду"


0

Для використання IRC, я зазвичай відкриваю irssi на моєму безголовому сервері на екрані. Потім, іноді я відключаю його, щоб чекати відповіді, але іноді я не впевнений, що екран з irssi вже відкритий на сервері.

Для цих часів, я хотів би мати змогу повідомити екран: "Знову до запущеного екрану, але якщо він не існує, створіть новий, запустивши цю команду". Я намагався це зробити за допомогою:

$ screen -R irssi

але він не показує бажану поведінку (замість цього він відкриває порожній екран, коли він не існує, без запуску irssi).

Відповіді:


1

Не впевнений, що це охоплює всі ваші вимоги

screen -dRq sessionname irssi

Якщо екран не запущений, він створює новий сеанс з ім'ям "sessionname" і запускає irssi. "Q" пригнічує підтвердження нового екрану.

Коли ви від'єднаєтесь, вона повторно приєднується до існуючого "sessionname", який запускає irssi.

Не впевнений, що він працює з кількома сеансами на екрані, але я просто не спробував


Це робить все, що мені потрібно, але здається, що у вашому дзвінку "bash" не є частиною команди, а ім'я створюваного екрану. Це також пояснює, чому моя перша спроба не спрацювала (я вказав лише ім'я та команду). Крім того, я не розумію, як це працює;) Особливо поєднання -d -R -m.

Якщо я використовую команду вище, вікно у списку вікон називається "irssi", а не "bash". Я повинен визнати, що я не гуру на екрані;) Зазвичай я використовую screen -dR , щоб почати сеанс. The -q прийшов з сторінки man. І то -m bash irssi з веб-пошуку. Я просто додав все це разом і це спрацювало. Але я також не можу пояснити останній біт ;-)
Brackmeister

0

Якщо irssi є те, що ви майже завжди працює в екрані, то чому б не встановити a .screenrc що автоматично запускає irssi. Потім просто запустіть screen -R. Якщо ваша сесія не запущена, вона почнеться.

# more .screenrc 
startup_message off
term linux
screen 0  irssi

Якщо ви не хочете, щоб ваш екран запускав irssi за замовчуванням, ви могли б просто створити файл rc з ім'ям, що не є стандартним. Можливо .screenrc-irssi. Потім наведіть вказівник на певний конфігураційний файл screen -c .screenrc-irssi.


Дякуємо, роблячи це і видаючи 'screen -c .screen-irssi -R' робить те, що я хочу. Тепер, єдине, що трохи дратує, це повідомлення "Новий екран ...", яке з'являється, коли -R створює новий екран, який я повинен підтвердити за допомогою Return або Space. Чи є спосіб вимкнути це?

@mtu, Kinda схоже, що це вимагає повторної компіляції. Подивитися: superuser.com/questions/182477/…
Zoredache

0

Хм, я трохи збентежений існуючими відповідями. Але якщо працює два виклики screen це не проблема, яку ви завжди можете виконати:

screen -xS sessionname || screen -S sessionname irrsi

Це спробує приєднатися до існуючого без від'єднання будь-якого іншого екрана і, якщо це не так, створить нову сесію з таким іменем. Це те, що я маю alias ред .bashrc і це працює як шарм.

Але я переходжу до нової системи і з нею tmux. Можливо, вам захочеться також спробувати. Набагато зручніший синтаксис файлу конфігурації, розбіжності у вільній формі та безліч опцій і команд, які можуть бути прив'язані до ярликів, які найкраще підходять вам.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.