Адміністрування сервера під управлінням Linux досить часто супроводжується численними маніпуляціями команд у вікні терміналу. Це звична картина для тих, хто адмініструє сервера на Linux, і в деяких випадках зручно виконувати команди у фоновому режимі. Це цілком може бути використано на практиці, і варто зазначити причини, чому це може бути корисним:
— Коли термінал переповнюється купою повідомлень, так і виконувати паралельно додаткові дії не представляється можливим;
— Якщо ви закриваєте термінал, то зупиняється поточний процес, з його дочірніми процесами;
Дані проблеми вирішуються елементарно, кажучи простою мовою нам необхідно повністю відокремити виконуваний процес від керуючого терміналу.

В даному пості ми розглянемо корисну можливість Linux виконання команд у фоновому режимі. Іншими словами процес запущений вами буде виконуватися окремо від керуючого терміналу.

Як запускати команди або процеси у фоновому режимі
Якщо ваш процес запущено у вікні терміналу, то призупинити його можна за допомогою команди Ctrl+Z, напевно, це багато знають, і подумають, і що з цього. І ось що цікаве, припинивши, таким чином, процес, ми можемо продовжити його у фоновому режимі, для цього необхідно ввести команду

$ bg

Після введення цієї команди процес буде продовжений, але вже у фоновому режимі. Щоб переглянути всі процеси, які виконуються у фоновому режимі, ви можете ввести команду

$ jobs

Давайте розглянемо простий приклад, як це можна застосувати. Припустимо, у нас є tar-архів, який нам необхідно розпакувати, однак нам ніколи чекати, і ми хочемо працювати паралельно.

Розпакування архіву у фоновому режимі

$ tar -czf home.tar.gz .

Тиснемо Cntr+Z, потім вводимо команди

$ bg
$ jobs

Другий спосіб – це додати символ & наприкінці команди, це повідомить системі, що потрібно виконувати команду у фоновому режимі.

$ tar -czf home.tar.gz . &
$ jobs

Подібний спосіб дозволяє виконувати процеси у фоновому режимі, тим не менш, STDIN, STDOUT, STDERR все ще пов’язані з терміналом. Тепер давайте доб’ємося того, щоб процес виконувався навіть при закритті терміналу.

Виконання процесу після закриття вікна термінала
Щоб процес продовжив працювати навіть після закриття вікна терміналу, ми можемо використовувати команду disown. Вона «відчепить» процес від оболонки вікна терміналу, після чого буде виконуватися навіть після закриття вікна консолі.
Давайте розглянемо приклад використання стандартної команди rsync, спробуємо виконати її у фоновому режимі, і відчепили процес від терміналу.

$ sudo rsync Templates/* /var/www/html/ &
$ jobs
$ disown -h %1
$ jobs

Ви так само можете використовувати команду nohup, вона дозволить продовжити виконання процесу навіть коли користувач виходить з оболонки системи.

$ nohup tar -czf iso.tar.gz Templates/* &
$ jobs

Як відокремити процес від керуючого терміналу Linux
Щоб повністю відокремити процес від керуючого терміналу, можна так само використовувати команду, яка буде ефективною при використанні користувацького графічного інтерфейсу (GUI), наприклад, браузер Firefox.

$ firefox /dev/null &

В системі Linux (та й практично у всіх Unix-системах) /dev/null являє собою спеціальний файл пристрою, який називають «порожнім пристроєм». Запис у нього проводитися успішно незалежно від обсягу записаної інформації, читання з нього еквівалентно зчитування кінця файлу (EOF).

Додав: htmaker, 22.10.2016 р.
(1 голосів, середній: 5,00 з 5)

Завантаження…

Діліться з друзями:

См. також:


Оновлення пакетів в CentOS
Рубрика: Linux

Bash: mail: command not found
Рубрика: Linux

Виставляємо тимчасову зону в CentOS 7
Рубрика: Linux

Налаштування SELinux, включення, відключення
Рубрика: Linux, Інф. безпека

Змінюємо пароль root в MySQL 5.7
Рубрика: Linux, MySQL

Установка і настройка mSMTP на Linux
Рубрика: Linux

Установка GIT на CentOS 7
Рубрика: Linux

Як відключити IPv6 в CentOS 7?
Рубрика: Linux

Ротація логів в Linux
Рубрика: Apache, Linux

Коментарі

  • вася пише:
    24.12.2017 в 00:31

    Не завжди таке прокатує. Припустимо я хочу слухати музику в тлі через mplayer. Після припинення вводжу bg — і з’являється околесица: нічого не відтворюється, а mplayer сипле помилками

    Відповісти