Який вплив CTRL + Z на додаток unix \ Linux


85

Мені було цікаво і розгублено, що саме така поведінка CTRl + Z.

Я знаю, якщо процес запущений на передньому плані, і ми натискаємо ctrl + z, він переходить на другий план.

Але що саме відбувається.

Чи продовжує це робити свою роботу, чи її призупиняють, і зупиняються на місці, де вона була.

І якщо він зупиняється на цьому місці, і в чому сенс фонової роботи.


7
Ctrl-Z не надсилає процес у фоновий режим, він призупиняє його.
Wooble

Відповіді:


70

"Фонове завдання" - це лише те, що не взаємодіє з користувачем - він не контролює tty і просто робить свою справу (як правило, безшумно). Завдання переднього плану - це зворотна сторона, вона контролює tty для взаємодії з користувачем.

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


1
щоб скасувати фоновий процес, fgспочатку визначте, яку роботу, видавши, jobs потім скажіть, якщо її% 1, то видача fb %1 та процес відновиться
Скотт Стенсленд

fg %1ніfb %1
ahonnecke

55

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

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

Оболонка має функціональні можливості "фонового" процесу, але це взаємозв'язок між оболонкою і процесом. Сам процес насправді не має поняття "фон" або "передній план".

Дивіться тут для отримання додаткової інформації.


2
^Zнадсилає SIGTSTP, а не SIGSTOP
William Pursell

@WilliamPursell - ах! Помічено. Тепер змінено. Thx
Брайан Агнеу

15

Розглянемо цю команду, яка займає бл. 4,5 секунди на моєму ноутбуці:

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

Якщо натиснути Ctrl+ Z, обчислення буде призупинено. У вас є можливість відновити обчислення на передньому плані за допомогою fgабо відновити його у фоновому режимі bg. Остання більш-менш рівнозначна виконанню:

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

9

Процес призупиняється та зупиняється при натисканні клавіш ctrl + z. За допомогою fg ви можете перемістити призупинене завдання на передній план, з bg ви можете запустити його у фоновому режимі.

Для отримання додаткової інформації див. Http://linuxreviews.org/beginner/jobs/ .

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.