Я хочу иметь возможность запускать сеансы экрана на удаленных серверах с помощью одной команды ssh на моем рабочем столе. Однако для screen, похоже, нужен терминал, который недоступен при запуске команды через ssh.
Итак, очевидное
ssh root@my.machine screen "tail -f /var/log/messages"
(как пример) не работает и дает
Must be connected to a terminal.
Я хочу, чтобы ssh запускал команду под экраном, чтобы я мог позже войти в систему и подключиться к сеансу экрана, который я бы запустил вручную.
Попробуйте использовать параметр -t для ssh
ssh -t root@my.machine screen "tail -f /var/log/messages"
От человека ssh
-t Force pseudo-tty allocation. This can be used to execute arbi- trary screen-based programs on a remote machine, which can be very useful, e.g., when implementing menu services. Multiple -t options force tty allocation, even if ssh has no local tty.
Ты можешь использовать:
ssh root@host 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