Главная > Unix-like, Администрирование > Linux: Управление процессами в командной строке.

Linux: Управление процессами в командной строке.

В этом посте будет немного рассказано о "магии" командной строки linux. А именно, о работе с процессами: перевод выполнения из background'a (фоновый режим) в foreground (передний план) и наоборот.

Приступим сразу к делу. Работу консольного приложения можно приостановить комбинацией клавиш "ctrl+z". После этого приложение "уснёт" и а консоль будет передана под наше управление. В действительности, будет послан системный сигнал STOP, после чего оно перейдёт в состояние "suspend" ("подвешенное" состояние). Этот сигнал (19) и сигнал 9 ("kill -9" - неотлавливаемый сигнал убить процесс системой) обрабатываются самой системой, а не приложением.

Перевести в suspend можно несколько процессов одновременно. Ссылка на них доступна через имя "%<последовательный номер процесса в фоне или его имя>". Для "возвращения к жизни" последнего процесса набираем в консоли fg. Для возвращения других набираем "fg %<последовательный номер процесса в фоне или его имя>", тут отлично работает автодополнение, если оно у вас настроено.

Процессы в статусе suspend не продолжают свою работу, для её продолжения должен быть посла сигнал CONTINUE. Это можно сделать не переходя в foreground ("передний план") с помощью команды "bg %<номер процесса в фоне или его имя>".

Как бонус, можно убивать процессы через "kill %<номер процесса в фоне или его имя>".

Список всех заданий в фоне можно посмотреть с помощью команды jobs.

Кстати, всё вышеописанное также работает и для запущенных сразу в фоне команд с помощью амперсанда (&).

Вот иллюстрация работы:
$ jobs
$ yes > /dev/null
^Z
zsh: suspended yes > /dev/null
$ yes > /dev/null
^Z
zsh: suspended yes > /dev/null
$ yes > /dev/null &
[3] 21627
$ jobs
[1] - suspended yes > /dev/null
[2] + suspended yes > /dev/null
[3] running yes > /dev/null
$ fg
[2] continued yes > /dev/null
^Z
zsh: suspended yes > /dev/null
$ fg %3
[3] running yes > /dev/null
^Z
zsh: suspended yes > /dev/null
$ jobs
[1] suspended yes > /dev/null
[2] - suspended yes > /dev/null
[3] + suspended yes > /dev/null
$ fg %1
[1] continued yes > /dev/null
^Z
zsh: suspended yes > /dev/null
$ jobs
[1] + suspended yes > /dev/null
[2] suspended yes > /dev/null
[3] - suspended yes > /dev/null

Пожалуйста, оцените полезность и качество данной статьи. Одна звезда - плохо, 5 - хорошо.
1/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.2/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.3/5. Мы будем признательны, если вы напишете комментарий с причиной низкой оценки.4/5.5/5. (Еще не оценили)
Загрузка...
  1. Пока что нет комментариев.
  1. Пока что нет уведомлений.