Ви напевно помітили, що після того, як ви впровадили команду в Термінал
'і, вам зазвичай потрібно дочекатися завершення її роботи, перш ніж shell
поверне вам керування. Це, охначає що ви запустили команду у пріорітетному режимі. Проте бувають випадки, коли це небажано.
Припустимо, наприклад, що ви вирішили рекурсивно скопіювати один великий каталог в інший. Ви також вирішили ігнорувати помилки, тому ви перенаправили потік помилок в /dev/null
:
cp -R images/ /shared/ 2>/dev/null
Виконання такої команди може забрати кілька хвилин поки вона не виконається повністю. У вас є два вирішення: перший - жорстокий, що припускає зупинку (вбивство) команди, а потім повторне її виконання, але вже в більш підходящий час. Для цього натисніть Ctrl-C: при цьому процес буде завершено, а ви повернетеся назад до рядка із запрошенням. Але зачекайте, поки що не робіть цього! Читайте далі.
Припустимо, ви хочете, щоб команда виконувалася, а ви займалися чимось іншим. Рішенням буде запуск процесу у фоновому режимі. Для цього натисніть Ctrl-Z, щоб призупинити процес:
$ cp -R images/ /shared/ 2>/dev/null # Натисніть зараз C-z [1]+ Stopped cp -R images/ /shared/ 2>/dev/null $
і ви знову в рядку із запрошенням. Процес тепер в режимі очікування, очікуючи вашої команди для його повторного запуску (як це зазначено ключовим словом Stopped
). Це є саме те, що потрібно, але вже в фоновому процесі. Запровадьте bg (BackGround - фоновий) для одержання бажаного результату:
$ bg [1]+ cp -R images/ /shared/ 2>/dev/null & $
При цьому процес продовжить свою роботу, але вже як фонове завдання, як це зазначено знаком &
(амперсанд) наприкінці рядка. Потім ви повернетеся назад у рядок із запрошенням і зможете продовжити роботу. Процес, який виконується як фонове завдання, або у фоновому режимі, називається фоновим завданням.
Звісно ви можете відразу запускати процеси як фонові завдання, додаючи знак & наприкінці команди. Наприклад, ви можете запустити команду копіювання каталогу в фоновому режимі, набравши:
$ cp -R images/ /shared/ 2>/dev/null &
Якщо хочете, ви також можете відновити цей процес у пріоритетному режим і дочекатися його завершення, набравши fg (ForeGround - пріоритетний). Щоб перевести його назад у фоновий режим, введіть таку послідовність Ctrl-Z, bg.
У такий спосіб ви можете запустити кілька завдань: кожній команді при цьому буде присвоєно номер завдання. Команда shell
'а jobs виводить список всіх завдань, пов'язаних із поточним shell
'ом. Перед завданням ставиться знак +
, який означає останній процес, запущений в фоновому режимі. Для відновлення конкретного завдання в пріоритетному режим ви можете запровадити команду fg <n>, де <n>
- номер завдання, наприклад, fg 5.
Зверніть увагу, що в такий спосіб ви також можете припиняти чи запускати повноекранні програми, такі як less або текстовий редактор Vi, і відновлювати їх у пріоритетному режимі, коли вам це знадобиться.