ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Как одновременно выполнять команды в Linux

Как одновременно выполнять команды в Linux

Мы как то писали, как запускать одновременно несколько команд в Linux здесь, теперь мы узнаем как одновременно их выполнять. Допустим, вы редактируете файл конфигурации в редакторе Linux «vi», и вдруг вам нужно найти некоторые данные в другом файле? В обычной системе GUI это не проблема. Вы просто открываете второй файл, проверяете, когда вам нужно, а затем переключитесь на первую программу. В командной строке это не так просто. Выполнение процесса через CLI блокирует дальнейший ввод любой другой программы. Возьмите к примеру команду sleep:

Как одновременно выполнять команды в Linux

 

Пока она работает 30 минут, мы ничего не можем сделать. Однако мы все же можем вручную управлять процессами и запускать команду одновременно в Linux с помощью команд «bg» и «fg». Вот как это работает.

Ctrl + c и Ctrl + z

Мы все знаем, что если процесс неправильный, ctrl + c просто отключает его. Либо если программа работает слишком долго, либо выходит из огромного вывода, который прокручивается быстрее, чем вы можете это увидеть! Нажатие Ctrl + C прерывает немедленно процесс с помощью сигнала SIGINT. Это говорит о том, что процесс завершает то, что он делает, и немедленно прерывается.

В большинстве случаев это работает, но имейте в виду, что каждый процесс должен решить, как его обрабатывать. Некоторые процессы, такие как vi, требуют подтверждения перед выходом – как правило, без уважительной причины, так как прерывание без предупреждения может привести к потере или повреждению данных.

Однако вместо того, чтобы убить процесс с помощью Ctrl + c, вы можете приостановить его. И здесь полезно использовать Ctrl + z. Нажатие Ctrl + z временно приостанавливает программу и отправить ее на задний план. Например:

Как одновременно выполнять команды в Linux

 

На изображении выше мы начали редактировать файл «test» с текстовым редактором vi. Затем мы нажали Ctrl + z. Эта команда «останавливает» процесс или приостанавливает его. Они называются «заданиями», и каждое задание имеет номер. Это число отображается всякий раз, когда мы приостанавливаем процесс в квадратных скобках. Например, номер задания приостановленного vi-приложения – 1.

Теперь, когда процесс приостановлен, мы вернемся к командной строке, где мы можем выполнять другие команды!

Возобновление приостановленной работы

Имейте в виду, что приостановленная работа, такая как редактор vi выше, больше не работает. Она находится во временном замороженном состоянии, ожидающем оживления. Мы можем возродить ее двумя способами:

  1. Восстановите работу и выведите ее на передний план (и запустите командную строку)
  2. Восстановите работу и отправьте ее на задний план (и мы можем продолжать делать другие вещи)

Чтобы повторно активировать приостановленное задание и перенести ее на передний план, мы используем команду:

fg% n

 

Где «n» обозначает номер задания. Поэтому, если вы закончили поиск своих данных и хотите вернуться к редактированию файла в vi, мы вводим:

fg% 1

 

Если мы хотим, чтобы процесс возобновил операции и остался в нем, мы вводим:

bg% n

 

Где «n» – снова номер задания. Поэтому, если у вас есть процесс, который должен работать непрерывно (например, установить Apache), но все же нужно делать другую работу в командной строке, вы можете возобновить его работу с помощью команды «bg».

Если вы забыли номер задания для своих процессов, не волнуйтесь. Просто используйте эту команду:

jobs -l

 

Она покажет список существующих заданий с их статусом и номером задания следующим образом:

Как одновременно выполнять команды в Linux

 

Поэтому никогда не бывает никакой опасности потерять слишком много рабочих мест.

Запуск команд сразу же в фоновом режиме

В приведенном выше сценарии показано, как приостановить процесс с помощью Ctrl + z, а затем возобновить его операции в фоновом режиме с помощью «bg% n». Однако мы можем объединить эти две команды, просто набрав символ амперсанда (&) после команды. Примеры команд с амперсандом можно посмотреть здесь. Это немедленно отправит его на задний план. Например:

sleep 30m &

 

Выполняет команду sleep в течение 30 минут, и процесс будет продолжать работать в течение 30 минут в фоновом режиме следующим образом:

Как одновременно выполнять команды в Linux

Очень удобно! Как и раньше, вы можете использовать команду «fg», чтобы снова вывести процесс на передний план, а затем убить или приостановить его, как вы пожелаете.

Таким образом, с этим предупреждением вы теперь знаете, как одновременно запускать команды в Linux и можете многозадачно использовать ваше содержание.

Exit mobile version