Скажімо, вам не вистачає і 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
системного виклику