Афоризмы - это интерфейсы, по которым передается оценка и понимание. (Алан.Дж.Перлис)

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

3 мин для чтения
FavoriteLoadingДобавить в избранное
1 Звезда2 Звезды3 Звезды4 Звезды5 Звезд (5 оценок, среднее: 5,00 из 5)
Загрузка...
18 сентября 2018
Как одновременно выполнять команды в 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», чтобы снова вывести процесс на передний план, а затем убить или приостановить его, как вы пожелаете.

Предупреждение
При отправке процесса в фоновом режиме, как это, убедитесь, он не генерирует никакого вывода в командной строке или в стандартном выводе! Убедитесь, что вы перенаправляете вывод в файл или что-то в этом роде. В противном случае он будет продолжать работать в фоновом режиме и заполнять командную строку его выводом, и вы даже не сможете убить его с помощью Ctrl + c, потому что он не работает на переднем плане.

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

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Просмотров: 141

Если статья понравилась, то поделитесь ей в социальных сетях:

Добавить комментарий

Войти с помощью: 

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Размер шрифта

Сообщить об опечатке

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

Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!

badge
Обратный звонок 1
Отправить
galka

Спасибо! Ваша заявка принята

close
galka

Спасибо! Ваша заявка принята

close