75

Мне было любопытно и растерянно, что именно такое поведение CTRl+Z.

Я знаю, если процесс выполняется на переднем плане, и мы нажимаем Ctrl + Z, он переходит в фоновый режим.

Но что именно происходит.

Продолжает ли он выполнять свою работу, или он приостанавливается и останавливается в том месте, где он был.

И если это остановится в этот момент, и в чем смысл фоновой работы.

4 ответа4

61

"Фоновая работа" - это просто та, которая не взаимодействует с пользователем - она не контролирует tty и просто делает свое дело (обычно молча). Задание на переднем плане является обратным, оно контролирует tty для взаимодействия с пользователем.

Control-Z приостанавливает самый последний процесс переднего плана (последний процесс, который взаимодействует с tty) (если только этот процесс не принимает меры для игнорирования приостановки, как это обычно делают оболочки). Обычно это возвращает вас к вашей оболочке, из которой вы обычно можете ввести команду bg чтобы переместить только что приостановленный процесс в фоновый режим (чтобы он продолжал выполняться), или fg чтобы вернуть его на передний план.

50

Нажатие Ctrl+Z отправляет сигнал TSTP вашему процессу. Это останавливает выполнение (ядро не будет планировать больше процессорного времени для процесса), и процесс ожидает CONT для продолжения обработки.

Вы можете эмулировать / реплицировать это с помощью kill -TSTP и kill -CONT (так как kill отправит назначенный сигнал вашему процессу, несмотря на имя!)

Оболочка имеет функциональность для «фонового» процесса, но это отношения между оболочкой и процессом. Сам процесс на самом деле не имеет понятия «фон» или «передний план».

Смотрите здесь для получения дополнительной информации.

15

Рассмотрим эту команду, которая занимает ок. 4,5 секунды на моем ноутбуке:

echo 2^10000000 | bc -lq | wc -c

Когда вы нажмете Ctrl+Z, расчет будет приостановлен. У вас есть возможность возобновить расчет на переднем плане, используя fg , или возобновить его в фоновом режиме, используя bg . Последнее более или менее эквивалентно выполнению:

echo 2^10000000 | bc -lq | wc -c &
8

Процесс приостанавливается и останавливается при нажатии Ctrl + Z. С помощью fg вы можете переместить приостановленную работу на передний план, с помощью bg вы можете запустить ее в фоновом режиме.

Смотрите http://linuxreviews.org/beginner/jobs/ для получения дополнительной информации.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .