Вопрос или проблема
Мне интересно узнать, как я могу запустить процесс в SSH, который принимает ввод пользователя, затем отключиться, не прерывая ничего (процесс продолжает работать), а потом вернуться и “прицепиться” к нему, чтобы снова использовать.
Я хочу запустить сервер игры на Pi (с установленной Arch Linux) и хочу иметь возможность подключаться к Pi время от времени и присоединяться к процессу сервера, чтобы иметь возможность отправлять команды типа “kick (player)” или “stop” и т. д., через стандартный ввод этого процесса.
Также я хотел бы запускать более “простые” процессы, например, вычисления, которые занимают много времени для завершения (проекты для школы) и оставлять их запущенными на Pi, но я хочу иметь возможность получать результат, когда они завершатся, или останавливать их, если посчитаю, что они заняли слишком много времени (думаю, я бы делал это, убивая процесс, верно?).
Я могу предложить использовать tmux
.
вы можете получить доступ к серверу, затем открыть tmux
(tmux – это мультиплексор терминала), делать, что хотите, затем отсоединиться и выйти из вашей сессии ssh, а потом снова подключиться по ssh и переподключиться к тому же терминалу.
для дополнительной информации http://www.hamvocke.com/blog/a-quick-and-easy-guide-to-tmux/
Ответ или решение
Запуск команд через SSH и возможность последующего взаимодействия с процессами без их остановки является задачей, требующей использования специализированных инструментов. В данном контексте предлагается использовать tmux
– терминальный мультиплексор. Tmux
позволяет управлять несколькими терминальными сессиями одновременно и предоставляет возможность отсоединяться и повторно подключаться к активным сессиям без прерывания работы запущенных процессов.
Что такое tmux
и его преимущества:
-
Непрерывность работы:
Tmux
позволяет запустить процесс и отсоединиться от SSH-сессии без остановки этого процесса. Это решает вашу задачу с игрой на сервере и долгими вычислениями. -
Повторное подключение: В любой момент можно вернуться и повторно подключиться к текущей сессии, чтобы продолжить работу или ввести команды, такие как «kick (player)» или «stop».
-
Многозадачность: Управление несколькими сессиями одновременно, переключение между ними и даже разделение окна на несколько панелей.
Как использовать tmux
:
-
Установка: В Arch Linux установите
tmux
с помощью команды:sudo pacman -S tmux
-
Запуск сессии: Подключитесь к вашему Raspberry Pi через SSH и введите:
tmux
Это создаст новую
tmux
сессию. -
Запуск процесса в
tmux
: Запустите ваш процесс, например, игровой сервер или вычислительное задание. -
Отсоединение: Для отсоединения от сессии без ее завершения нажмите
Ctrl+B
, затемD
. Это приведет к выходу из сессии, сохраняя ее активность. -
Повторное подключение: Для возврата к сессии через SSH используйте команду:
tmux attach-session
Это подключит вас к последней активной сессии.
-
Управление сессиями: Для просмотра всех активных сессий используйте:
tmux list-sessions
-
Управление процессами: Если вы хотите остановить процесс или закончить сессию, просто закройте процесс или введите команду
exit
для завершения сессии вtmux
.
Заключение
Использование tmux
предоставляет вам гибкость в работе с удаленными процессами, минимизируя риски их прерывания при закрытии SSH-сессии. Это решение особенно полезно для управляемых серверов игр и долгосрочных вычислений, которые требуют внимания на протяжении длительного времени. Такая практика не только улучшает ваш рабочий процесс, но и способствует более эффективному использованию ресурсов вашего Raspberry Pi.