Otwórz wiele „Terminali” bez GUI (startx)

13

Nie wiem, czy tytuł jest oczywisty, ale chciałem mieć wiele (na razie wystarczyłyby dwa) terminali bez konieczności uruchamiania pulpitu.

Chcę mieć uruchomiony skrypt PHP (w pełnym wymiarze godzin) i nadal móc korzystać z terminala Raspi, tak jak wtedy, gdy uruchamiam Raspi z Raspbian.

pasadinhas
źródło
czy ssh czy łączysz się bezpośrednio ze swoim pi?
SteveIrwin
Cześć, czego mogłeś chcieć, może dostarczyć dvtm. brain-dump.org/projects/dvtm
cgte

Odpowiedzi:

8

Wystarczy użyć Alt + F1-F12, aby mieć 12 różnych kart konsoli bez uruchamiania GUI

nnm
źródło
jest to właściwie opcja, z której obecnie korzystam :)
pasadinhas
1
To nie działa na Raspbian, nie ma loginu na żadnym innym tty.
AndreKR,
9

Jeśli korzystasz z konsoli (podłączona klawiatura i ekran), powinieneś mieć możliwość korzystania z systemu wirtualnej konsoli Linux , aby przełączać się między wieloma terminalami za pomocą (ctrl-) alt-F1 do F12 i więcej z shiftem.

Liczba skonfigurowanych terminali i liczba tych, które mają procesy getty (które proszą o login i hasło), zależą od konfiguracji .

XTL
źródło
2
+1, ponieważ przy bezpośrednim połączeniu z maszyną jest to „standardowy” sposób na uzyskanie kolejnego loginu i nie wymaga instalacji screen / tmux ..
Kiirani 24.04.13
7

Nawet lepiej niż screenjest (moim zdaniem) tmux. Możesz go zainstalować za pośrednictwem sudo apt-get install tmux. Sprawdź także stronę z man tmux.

Możesz go uruchomić, pisząc tmuxna jednej ze swoich konsol (patrz odpowiedź XTL).

Oto najważniejsze polecenia ( C-b doznacza: naciśnij jednocześnie klawisze Control i B, a następnie naciśnij D):

  • C-b d odłącz sesję
  • tmux attach w powłoce, aby ponownie dołączyć działającą sesję
  • C-b " podziel bieżącą ramkę poziomo (uruchomiona jest nowa powłoka)
  • C-b % podziel bieżącą ramkę w pionie (uruchomiona zostanie nowa powłoka)
  • C-b arrow (up, down, left, right) nawigować między oknami w bieżącej ramce
  • C-b c nowa ramka (uruchomiona jest nowa powłoka)
  • C-b n następna klatka
  • C-b l ostatnia klatka
  • C-b bwysłać C-bdo działającej aplikacji
Arne
źródło
Mocny zwolennik tmux również tutaj. Konfiguracja linii statusu jest znacznie prostsza i lepiej obsługuje przerysowywanie.
codey
1
Należy zauważyć, że tmux nie ma takiego samego zachowania jak screen w odniesieniu do dołączania sesji do wielu VT („screen -x”)
Kiirani 24.04.13
3

Możesz to zrobić również z ekranem. Za pomocą ekranu możesz nawet odłączyć się od sesji ekranowej, wylogować się, zalogować, a następnie ponownie dołączyć do sesji ekranowej bez utraty niczego. Programy będą nadal działać, a wszystkie dane wyjściowe będą nadal wyświetlane na terminalach, z których się odłączyłeś.

Kilka linków do samouczków ekranowych:

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

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

Link do wątku z kilkoma przydatnymi wskazówkami .screenrc:

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

Samouczek dla Raspberry Pi:

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

Eric
źródło
3
  1. Jeśli skrypt php, który chcesz uruchomić, nie wchodzi w interakcje z użytkownikiem lub wymaga danych wejściowych,

    możesz użyć &polecenia, które wysyła skrypt w tło

    Oto przykład.

    pi@raspberrypi ~ $php code1 &
    

    Spowoduje to wysłanie skryptu do tła, w którym będzie nadal działał.

  2. Jeśli wpiszesz ssh do swojego terminala, możesz dwukrotnie ssh do tego samego użytkownika i mieć dwa terminale.

  3. Jeśli chcesz otworzyć wiele terminali z sesji ssh,

    Powinieneś spojrzeć na ekran, a nawet lepiej zainstalować, byobuktóry jest zawijany wokół ekranu.

    byobu to opakowanie, które pozwala łatwo otwierać nowe ekrany za pomocą prostego klawisza funkcyjnego zamiast kombinacji klawiszy z ctrl-a. Pokazuje także linię statusu ze wszystkimi otwartymi wirtualnymi terminalami, które można nazwać.

    Inną ciekawą funkcją jest fakt, że cały ekran może pozostać włączony, gdy połączenie ssh jest rozłączone. Po prostu łączysz się ponownie przez ssh i dzwonisz byobu i wszystko jest jak wcześniej.

Mam nadzieję, że to pomoże.

SteveIrwin
źródło
2

Dla kompletności inną opcją jest użycie byobu . Jest to wygodna warstwa na górze ekranu GNU . Zapewnia ładne ustawienia domyślne i jest w moim odczuciu łatwiejszy w użyciu. Osobiście używam go na moim Rapsberry Pi i działa dobrze. Aby go zainstalować, po prostu wpisz:

$ sudo apt-get install byobu

Po zainstalowaniu skonfiguruj go za pomocą:

$ byobu-config

Możesz tam wybrać uruchamianie go automatycznie podczas logowania i przełączanie apletów powiadomień o stanie ( czas pracy, ładowanie, data ... )

wprowadź opis zdjęcia tutaj

Na marginesie, ten rodzaj wirtualnej konsoli jest również przydatny do współdzielenia tego samego wejścia / wyjścia konsoli między różnymi użytkownikami na różnych komputerach (można to nazwać współdzieleniem ekranu w trybie tekstowym ).

Laurent Grégoire
źródło
Próbowałem byobou innego dnia i nie byłem szczęśliwy. Sterowanie za pomocą klawiszy funkcyjnych było bardzo niestabilne. Nie działał na OS X, miał również problemy w Debianie. Pozostanę przy tmuxie i jego poleceniach. Klawisze funkcyjne kolidują również z mc (dowódca północy).
Arne,
Jeśli chodzi o konflikt klawiszy funkcyjnych z mc , możesz je zmienić na byobu (możesz łatwo wybierać między dwoma różnymi trybami za pomocą byobu-config).
Laurent Grégoire,
2

Ponieważ oryginalnym wymaganiem było uruchomienie skryptu PHP w tle, możesz użyć polecenia nohup. Przykład:

$ nohup php myscript.php &

Po uruchomieniu polecenie określone jako argument wiersza polecenia nohupjest wykonywane w tle , a jego wejście / wyjście jest odłączone od terminala, który go uruchomił, aby zapobiec wysłaniu SIGHUPsygnału (stąd nohupnazwa) do procesu w tle, gdy wychodzisz z konsoli startowej (sygnał zwykle powoduje zamknięcie programu). Dane wyjściowe są przekierowywane do pliku (domyślnie nohup.out).

Aby uzyskać więcej informacji: man nohup.

Aby uzyskać lepszą i bardziej kompletną odpowiedź, możesz w pełni „zdemonizować” swój program. Prawdopodobnie można znaleźć w Internecie zasoby, które wyjaśniają, jak to zrobić za pomocą skryptów PHP.

Laurent Grégoire
źródło
Niektóre powłoki (bash, zsh?) Mają również polecenie disownzapobiegające zawieszaniu się wybranych procesów w tle.
XTL