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.
Odpowiedzi:
Wystarczy użyć Alt + F1-F12, aby mieć 12 różnych kart konsoli bez uruchamiania GUI
źródło
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 .
źródło
Nawet lepiej niż
screen
jest (moim zdaniem)tmux
. Możesz go zainstalować za pośrednictwemsudo apt-get install tmux
. Sprawdź także stronę zman tmux
.Możesz go uruchomić, pisząc
tmux
na jednej ze swoich konsol (patrz odpowiedź XTL).Oto najważniejsze polecenia (
C-b d
oznacza: 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 ramceC-b c
nowa ramka (uruchomiona jest nowa powłoka)C-b n
następna klatkaC-b l
ostatnia klatkaC-b b
wysłaćC-b
do działającej aplikacjiźródło
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
źródło
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łoOto przykład.
Spowoduje to wysłanie skryptu do tła, w którym będzie nadal działał.
Jeśli wpiszesz ssh do swojego terminala, możesz dwukrotnie ssh do tego samego użytkownika i mieć dwa terminale.
Jeśli chcesz otworzyć wiele terminali z sesji ssh,
Powinieneś spojrzeć na ekran, a nawet lepiej zainstalować,
byobu
któ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.
źródło
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:
Po zainstalowaniu skonfiguruj go za pomocą:
Możesz tam wybrać uruchamianie go automatycznie podczas logowania i przełączanie apletów powiadomień o stanie ( czas pracy, ładowanie, data ... )
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 ).
źródło
byobu-config
).Ponieważ oryginalnym wymaganiem było uruchomienie skryptu PHP w tle, możesz użyć polecenia
nohup
. Przykład:Po uruchomieniu polecenie określone jako argument wiersza polecenia
nohup
jest wykonywane w tle , a jego wejście / wyjście jest odłączone od terminala, który go uruchomił, aby zapobiec wysłaniuSIGHUP
sygnału (stądnohup
nazwa) do procesu w tle, gdy wychodzisz z konsoli startowej (sygnał zwykle powoduje zamknięcie programu). Dane wyjściowe są przekierowywane do pliku (domyślnienohup.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.
źródło
disown
zapobiegające zawieszaniu się wybranych procesów w tle.