Я хотів би запустити якусь програму всередині екранного сеансу, але зі сценарію.
Без сценарію я б просто запустив екран, потім відкрив N вікон з crtl-ac і виконував програми в кожному вікні.
Я спробував наступне
screen -d -m -S test
screen -S test -X exec tail -f /var/log/messages
screen -S test -X screen
screen -S test -X exec tail -f /var/log/xinetd.log
Але коли я приєдную сеанс, хвіст не працює. Якщо я приєднаю сеанс відразу після screen -d -m -S startup
і запускаю screen -S startup -X exec tail -f /var/log/messages
з іншого терміналу, він працює.
Я щось пропустив?
Редагувати після відповіді AlexD:
Напівробоче рішення є
screen -d -m -S test tail -f /var/log/messages
screen -S test -X screen tail -f /var/log/xinetd.log
Команда екранного ланцюга (одна після -X) з командою працює під час виконання exec, мабуть, тому, що exec очікує, що поточне вікно буде визначене, тоді як немає поточного, коли екран від'єднаний. Дякуємо AlexD за ці поради.
Але є дивний побічний ефект: коли програма зупиниться (якщо ви приєднаєте сеанс екрану і crtl-c хвіст, або вбити хвіст), вікно екрана закриється.
Таким чином, поведінка не є такою ж, як Crtl-A c і виконайте команду
Ще одним побічним ефектом є те, що ви не можете зв'язати 2 команди
screen
завжди закінчується , коли команда , з якою був запущений кінці - це нормальна особливість інструменту :) ..so при запускуscreen top
, коли ви кидаєтеtop
,screen
піде теж