Powiedzmy, że brakuje ci zarówno GNU, jak screen
i tmux
(i X11 oraz konsol wirtualnych), ale chcesz przełączać się między powłoką logowania a inną powłoką interaktywną.
Najpierw zaloguj się na konsoli, a następnie uruchom nową powłokę, tymczasowo blokując powłokę logowania. Aby odzyskać powłokę logowania, aby wykonać tam trochę pracy, zrobiłbyś to suspend
. Następnie musisz fg
odzyskać interaktywną powłokę, aby kontynuować wszystko, co tam zrobiłeś.
W rzeczywistości, z kontrolą pracy, powłoka logowania mogłoby zapoczątkować szereg interaktywnych muszli jako zadania w tle, które można przełączyć się z fg %1
, fg %2
itd., Ale aby wrócić do powłoki logowania, trzeba by użyć suspend
, jeśli nie chciał ręcznie kill -s STOP $$
.
Zauważ też, że Ctrl+ Zpo znaku zachęty w interaktywnej powłoce go nie zawiesi.
EDYCJA: Początkowo miałem długą hipotetyczną sekcję dotyczącą użycia suspend
skryptu, ale ponieważ polecenie wymaga kontroli zadań, a ponieważ powłoki nieinteraktywne zwykle nie mają kontroli zadań, usunąłem tę sekcję.
Usunięta sekcja z suspend
zastąpioną przez kill -s STOP $$
(to naprawdę nie należy już do odpowiedzi, ale i tak może być interesujące dla innych):
Załóżmy, że masz skrypt działający w tle (skrypt) i że ten proces w pewnym momencie musi się zatrzymać i poczekać, aż proces nadrzędny poinformuje go o kontynuacji. Może to być tak, że rodzic ma czas na wyodrębnienie i przeniesienie plików na miejsce lub coś w tym rodzaju.
Skrypt potomny zawiesiłby się ( kill -s STOP $$
), a skrypt nadrzędny wysłałby CONT
do niego sygnał, gdy będzie mógł kontynuować.
Daje to możliwość zaimplementowania pewnego rodzaju synchronizacji między procesem nadrzędnym a procesem potomnym (choć bardzo podstawowy, ponieważ proces powłoki rodzicielskiej mniej więcej musi zgadywać, że proces potomny jest zawieszony, chociaż można to naprawić poprzez posiadanie potomka pułapki CONT
i nie zawieszaj się, jeśli sygnał ten zostanie odebrany zbyt wcześnie).
fork/exec
wywołanie systemowe