Допустим, вам не хватает GNU screenи tmux(и X11, и виртуальных консолей), но вы хотите переключаться между оболочкой входа в систему и другой интерактивной оболочкой.
Сначала вы должны войти в консоль, а затем запустить новую оболочку, временно заблокировав оболочку входа. Чтобы вернуть оболочку входа в систему и выполнить там какую-то работу, вам нужно это сделать suspend. Затем вы должны fgвернуть интерактивную оболочку, чтобы продолжить то, что вы там делали.
В самом деле, с управлением заданиями, то Войти оболочка может породить ряд интерактивных оболочек в качестве фона рабочих мест , которые вы могли бы перейти на с fg %1, и fg %2т.д., но , чтобы вернуться в оболочку входа, вам нужно будет использовать , suspendесли вы не хотели вручную kill -s STOP $$.
Также обратите внимание, что Ctrl+ Zв приглашении в интерактивной оболочке не приостановит его.
РЕДАКТИРОВАТЬ: у меня изначально был длинный гипотетический раздел об использовании suspendв сценарии, но так как команда требует управления заданиями и поскольку неинтерактивные оболочки обычно не имеют управления заданиями, я удалил этот раздел.
Удаленный раздел с suspendзаменой на kill -s STOP $$(это действительно больше не относится к ответу, но в любом случае это может быть интересно другим):
Предположим, у вас есть фоновый процесс (скрипт) в скрипте, и что этот фоновый процесс на каком-то этапе должен остановиться и дождаться, пока родительский процесс скажет, что он продолжится. Это может быть так, чтобы у родителя было время извлечь и переместить файлы на место или что-то в этом роде.
Дочерний скрипт будет приостановлен ( kill -s STOP $$), а родительский скрипт отправит ему CONTсигнал, когда все будет в порядке, чтобы продолжить.
Это дает вам возможность реализовать своего рода синхронизацию между родительским процессом и дочерним процессом (хотя он очень прост, поскольку родительский процесс оболочки более или менее должен догадаться, что дочерний процесс приостановлен, хотя это можно исправить с помощью дочернего процесса. перехватывать CONTи не приостанавливать, если этот сигнал получен слишком рано).
fork/exec