Powiedzmy, że brakuje ci zarówno GNU, jak screeni 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 fgodzyskać 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 %2itd., 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 suspendskryptu, ale ponieważ polecenie wymaga kontroli zadań, a ponieważ powłoki nieinteraktywne zwykle nie mają kontroli zadań, usunąłem tę sekcję.
Usunięta sekcja z suspendzastą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 CONTdo 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 CONTi nie zawieszaj się, jeśli sygnał ten zostanie odebrany zbyt wcześnie).
fork/execwywołanie systemowe