Я хочу иметь возможность запускать сеансы экрана на удаленных серверах с помощью одной команды ssh на моем рабочем столе. Однако экран, похоже, нуждается в терминале, который недоступен при запуске команды через ssh.
Итак, очевидное
ssh [email protected] screen "tail -f /var/log/messages"
(как пример) не работает, а дает
Must be connected to a terminal.
Я хочу, чтобы ssh запускал команду под экраном, чтобы я мог войти позже и подключиться так же, как и к сеансу экрана, который я бы запустил вручную.
Попробуйте использовать опцию -t для ssh
ssh -t [email protected] screen "tail -f /var/log/messages"
От человека сш
- t Форсировать псевдо-tty. Это может использоваться для выполнения программ на основе arbi - Trary screen на удаленной машине, что может быть Очень полезным, например, при реализации сервисов меню. Несколько опций -t Принудительно распределяют tty, даже если ssh не имеет локального tty.
Ты можешь использовать:
ssh [email protected] screen -m -d "tail -f /var/log/messages"
Это запускает отдельный экран с командой, запущенной на нем.
-m causes screen to ignore the $STY environment variable. With
"screen -m" creation of a new session is enforced, regardless
whether screen is called from within another screen session or
not. This flag has a special meaning in connection with the `-d'
option:
-d -m Start screen in "detached" mode. This creates a new session but
doesn't attach to it. This is useful for system startup
scripts.
Поздний ответ, но это то, что я делаю, я делаю псевдоним (давайте назовем его t), который делает это:
ssh $MYSERVER -a -x -t screen -xRR -A -e^Zz -U -O
Это говорит ssh
об отключении агента и переадресации X11, и говорит screen
подключиться к запущенному сеансу, при необходимости запустить новый, использовать ^Z
как команда прорыва, используйте UTF-8 и будьте внимательны с терминалом.
Все это означает, что я могу открыть терминал, введите t
, и он откроет мой экранный сеанс на $ MYSERVER. Затем я могу открыть другой терминал, сделать то же самое, и я получаю другое окно для того же сеанса.
Очень приятно иметь несколько окон терминала в одном сеансе экрана, поэтому вы можете одновременно просматривать две вкладки экрана.
Поместив следующее в файл ~/.bashrc на моем сервере, он запускает сеанс экрана при первом входе на сервер или, если он уже запущен, повторно подключает меня к этому сеансу.
Я нахожу это очень удобным:
if [ -n "$SSH_CONNECTION" ] && [ -z "$SCREEN_EXIST" ]; then
export SCREEN_EXIST=1
screen -DRi
fi