Откройте несколько «Терминалов» без GUI (startx)

12

Я не знаю, является ли название самоочевидным, но я хотел, чтобы было открыто несколько (на данный момент двух) терминалов без необходимости запуска рабочего стола.

Я хочу запустить PHP-скрипт (полный рабочий день) и иметь возможность использовать мой терминал Raspi, как и тогда, когда я запускаю Raspi с помощью Raspbian.

pasadinhas
источник
ты SSH или подключиться напрямую к вашему пи?
SteveIrwin
Привет, что вы, возможно, хотели, может быть предоставлено dvtm. brain-dump.org/projects/dvtm
cgte

Ответы:

8

Просто используйте Alt + F1-F12, чтобы вы могли иметь 12 различных консольных вкладок без запуска графического интерфейса

NNM
источник
это на самом деле вариант, который я сейчас использую :)
pasadinhas
1
Это не работает на Raspbian, нет входа ни в один из других ttys.
AndreKR
9

Если вы находитесь на консоли (подключенная клавиатура и экран), вы должны иметь возможность использовать систему виртуальной консоли Linux для переключения между несколькими терминалами, используя (ctrl-) alt-F1 - F12 и другие с помощью shift.

Количество настроенных терминалов и число из них, имеющих процессы getty (которые запрашивают у вас логин и пароль), зависит от конфигурации .

XTL
источник
2
+1, потому что при прямом подключении к машине это «стандартный» способ получить другой логин и не требует установки screen / tmux ..
Kiirani
6

Даже лучше чем screenесть (на мой взгляд) tmux. Вы можете установить его через sudo apt-get install tmux. Также проверьте справочную страницу с man tmux.

Вы можете запустить его, набрав tmuxна одной из своих консолей (см. Ответ XTL).

Вот наиболее важные команды ( C-b dозначает: одновременно нажмите control и B, затем нажмите D):

  • C-b d отрывать сессию
  • tmux attach на оболочке, чтобы повторно присоединить запущенный сеанс
  • C-b " разделить текущий кадр по горизонтали (новая оболочка запущена)
  • C-b % разделить текущий кадр по вертикали (новая оболочка запущена)
  • C-b arrow (up, down, left, right) перемещаться между окнами в текущем кадре
  • C-b c новый кадр (новая оболочка запущена)
  • C-b n следующий кадр
  • C-b l последний кадр
  • C-b bотправить C-bв работающее приложение
Arne
источник
Сильный сторонник Tmux и здесь. Конфигурирование строки состояния намного проще и лучше обрабатывает перерисовки.
Коди
1
Следует отметить, что tmux не имеет такого же поведения, как screen, в отношении присоединения сеанса к нескольким VT ("screen -x")
Kiirani
3

Вы можете сделать это с экрана также. С помощью экрана вы можете даже отсоединиться от сеанса экрана, выйти из системы, войти в систему, а затем снова подключиться к сеансу экрана, не теряя ничего. Программы будут продолжать работать, и все выходные данные будут отображаться на терминалах, от которых вы отключены.

Несколько ссылок на экранные уроки:

http://www.rackaid.com/resources/linux-screen-tutorial-and-how-to/

http://magazine.redhat.com/2007/09/27/a-guide-to-gnu-screen/

Ссылка на ветку с полезными советами .screenrc:

https://bbs.archlinux.org/viewtopic.php?id=55618

Специальное руководство для Raspberry Pi:

http://raspi.tv/2012/using-screen-with-raspberry-pi-to-avoid-leaving-ssh-sessions-open

Эрик
источник
3
  1. Если скрипт php, который вы хотите запустить, не взаимодействует с пользователем или требует ввода,

    Вы можете использовать &команду, которая отправляет скрипт в фоновом режиме

    Вот пример.

    pi@raspberrypi ~ $php code1 &
    

    Это отправит скрипт в фоновый режим, где он будет продолжать работать.

  2. Если вы подключитесь к своему терминалу через ssh, вы сможете дважды войти в систему с одним и тем же пользователем и иметь два терминала.

  3. Если вы хотите открыть несколько терминалов из сеанса SSH,

    Вы должны смотреть на экран или даже лучше установить, byobuкоторый является оберткой вокруг экрана.

    byobu - это оболочка, которая позволяет легко открывать новые экраны с помощью простой функциональной клавиши вместо комбинации клавиш ctrl-a. Он также показывает строку состояния со всеми открытыми виртуальными терминалами, которые могут быть названы.

    Еще одна приятная особенность заключается в том, что весь ваш экран может работать, пока ваше ssh-соединение отключено. Вы просто подключаетесь снова через ssh и вызываете byobu, и все как раньше.

Надеюсь, это поможет.

Стив Ирвин
источник
2

Для полноты, другой вариант заключается в использовании byobu . Это удобный слой поверх экрана GNU . Это обеспечивает хорошие значения по умолчанию, и в моем смысле это проще в использовании. Я лично использую его на моем Rapsberry Pi, и он работает просто отлично. Чтобы установить его, просто наберите:

$ sudo apt-get install byobu

После установки настройте его с помощью:

$ byobu-config

Вы можете выбрать его запуск автоматически при входе в систему и переключать апплеты уведомления о состоянии ( время работы, загрузка, дата ... )

введите описание изображения здесь

Как примечание, этот вид виртуальной консоли также полезен для совместного использования одного и того же ввода / вывода консоли разными пользователями на разных машинах (это можно назвать совместным использованием экрана в текстовом режиме ).

Лоран Грегуар
источник
Я попробовал byobou на днях и не был счастлив. Управление с помощью функциональных клавиш было очень нестабильным. Не работал на OS X, также имелись проблемы с Debian. Я буду придерживаться tmux и его команд. Функциональные клавиши также сталкиваются с mc (полночный командир).
Арне
Что касается конфликта функциональных клавиш с mc , вы можете изменить их на byobu (вы можете легко выбирать между двумя различными режимами через byobu-config).
Лоран Грегуар
2

Поскольку вашим первоначальным требованием было запустить PHP-скрипт в фоновом режиме, вы можете использовать команду nohup. Пример:

$ nohup php myscript.php &

После запуска команда, указанная в качестве аргумента командной строки nohup, выполняется в фоновом режиме , и ее ввод / вывод отсоединяются от терминала, который ее запустил, чтобы предотвратить отправку SIGHUPсигнала (отсюда и nohupимя) в фоновый процесс, когда Вы выходите из стартовой консоли (сигнал обычно вызывает выход из программы). Вывод перенаправляется в файл (по умолчанию nohup.out).

Для получения дополнительной информации: man nohup.

Для лучшего и более полного ответа вы можете полностью «демонизировать» вашу программу. Вы, вероятно, можете найти ресурсы в Интернете, которые объясняют, как это сделать с помощью PHP-скриптов.

Лоран Грегуар
источник
Некоторые оболочки (bash, zsh?) Также имеют команду disownдля предотвращения зависания выбранных фоновых процессов.
XTL