Открытые программы без блокировки терминала через Putty

На наших университетских Linux-компьютерах есть куча проприетарного программного обеспечения, доступное через пульт дистанционного управления через Putty.

Когда я использую свой собственный ящик Linux, если я хочу сохранить контроль над терминалом после запуска программы, я просто использую «matlab $» и т. Д. Но по какой-то причине это не работает в Putty, что довольно раздражает так как нам нужен доступ к Matlab, emacs и AMPL одновременно. «matlab $» на терминале Putty просто открывает Matlab и оставляет мой один терминал недоступным.

Любые идеи о том, что здесь происходит?

Я думаю, что вы пытаетесь запустить процесс в фоновом режиме, если это так, то & является символом, который вы помещаете в конце строки, чтобы указать «запустить в фоновом режиме», и вы получите запрос терминала. Однако фоновая задача все равно будет иметь доступ к вашему терминалу для вывода, если вы не перенаправите это.

Если вы хотите одновременно запускать несколько задач переднего плана, то есть некоторые терминальные программы, которые позволяют запускать несколько терминалов на одном экране, они мультиплексируют физический терминал между несколькими процессами, terminator – это тот, который я использовал, но там много. screen tmux

Изучите эти программы и посмотрите, какая из них работает для вашей ситуации. Например, man screen .

Похоже, вы хотите запускать GUI-программы. Когда вы запускаете Emacs, если доступна среда GUI, она открывает окно GUI; в противном случае он запускается в терминале. Я не знаю о Matlab, но я подозреваю, что происходит то же самое. Ваш вопрос путается: matlab $ является недопустимым синтаксисом оболочки, но я подозреваю, что вы используете matlab & . Когда вы кладете & после командной строки, команда запускается в фоновом режиме. Это нормально для приложения с графическим интерфейсом, но не может быть сделано для приложения с текстовым режимом: ему нужно будет вернуться на передний план, как только он захочет получить доступ к терминалу.

Если вы хотите запустить Emacs, Matlab или другие команды в текстовом режиме в окне PuTTY и переключаться между ними, запустите Screen или Tmux в удаленной оболочке, запущенной PuTTY. Экран и Tmux – это приложения терминального мультиплексора: они предоставляют несколько окон, где вы можете запускать отдельные приложения и позволять переключаться между окнами. Например, чтобы запустить Matlab, откройте новое окно и запустите matlab (без & поскольку Matlab будет на переднем плане этого окна). Экран или Tmux имеют то преимущество, что если соединение SSH закрывается из-за сбоя сети, сеанс терминала остается активным, и вы можете перезапустить PuTTY и снова подключиться к существующей сессии.

Если вы хотите запустить Matlab (или любое другое приложение) в режиме GUI, вам нужна переадресация X11. GUI Linux основан на X Window System (X11), который имеет протокол связи между приложениями и сервером отображения, который может быть перенаправлен по сети. Для этого вам понадобится сервер X11 для Windows. Как часть моего комплекта выживания Windows , я использую Xming ; скачать и установить бесплатную версию. Запустите Xming (поместите его в стартовую сессию Windows, если хотите). В конфигурации PuTTY в разделе «Connection → SSH → X11» обязательно включите пересылку X11 и установите «местоположение отображения X» на localhost:0 (см., Например, этот учебник ). После этого, когда вы подключаетесь к PuTTY, вы сможете запускать удаленные графические приложения.

Для Emacs я рекомендую запускать его локально и редактировать удаленные файлы. Установите EmacsW32 , который немного улучшил поддержку Windows из официальных источников. Emacs может открывать удаленные файлы довольно прозрачно через Tramp – просто введите /remotehostname:path/to/file чтобы открыть файл под вашим домашним каталогом или /remotehostname:/path/to/file чтобы ввести абсолютный путь. Настройте Tramp для использования метода plinkx и укажите Emacs на исполняемый файл plink из PuTTY .