Скажімо, вам не вистачає і GNU, screenі tmux(і X11, і віртуальних консолей), але ви хочете перемикатися між оболонкою для входу та іншою інтерактивною оболонкою.
Ви спершу увійдете на консоль, а потім запустите нову оболонку, тимчасово блокуючи оболонку входу. Щоб повернути оболонку входу, щоб виконати якусь роботу там, ви зробите suspend. Тоді ви б fgповернули інтерактивну оболонку, щоб продовжувати все, що ви там робили.
Справді, з управлінням завданнями, то Ввійти оболонка може породити ряд інтерактивних оболонок в якості фону робочих місць , які ви могли б перейти на з fg %1, і fg %2так далі, але , щоб повернутися в оболонку входу, вам потрібно буде використовувати , suspendякщо ви не хотіли вручну kill -s STOP $$.
Також зауважте, що Ctrl+ Zу запиті в інтерактивній оболонці не призупинить її.
EDIT: Спочатку у мене був довгий гіпотетичний розділ щодо використання suspendв скрипті, але оскільки команда вимагає контролю за роботою, а оскільки неінтерактивні оболонки зазвичай не мають управління роботою, я видалив цей розділ.
Видалений розділ із suspendзаміненим на kill -s STOP $$(це дійсно вже не належить до відповіді, але це може бути цікаво іншим):
Скажімо, у вас є фоновий процес (скрипт) у сценарії, і що цей фоновий процес на певному етапі потрібно зупинити і чекати, коли батьківський процес скаже, щоб він продовжувався. Це може бути так, що батько встигає витягнути та перемістити файли на місце чи щось подібне.
Дочірній скрипт буде призупинено ( kill -s STOP $$), а батьківський сценарій надішле CONTсигнал йому, коли буде добре продовжувати.
Це дає вам можливість здійснити своєрідну синхронізацію між батьківським процесом і дочірнім процесом (хоча дуже базовий, оскільки процес батьківської оболонки більш-менш потрібно здогадуватися, що дочірній процес призупинено, хоча це можна виправити, будучи дитиною пастка CONTі не зупиняти, якщо цей сигнал надто рано надійде).
fork/execсистемного виклику