Найти в Дзене
Кадр за кадром

Работа с процессами

Процесс Процесс - это условное обозначение управления ресурсами. Процесс является программным решением и работает на основе программного кода. Все процессы расположены в иерархии, вершина которой представлена процессом init. В системе процессы можно идентифицировать по их номерам - PID, a PPID - ID родительского процесса. Множество процессов порождены другими процессами. COMMAND - команда, которая запустила процесс; PID/PPID - ID процесса и предка процесса; USER - пользователь от имени которого работает процесс; Controlling TTY - терминал, с которого управляется процесс; TIME - затраченное процессом время работы процессора; Для поиска процессов по критерию предназначено программа ps; ps <Ключи> Утилита ps поддерживает несколько семейств ключей. Ключи можно комбинировать ps -a - Вывод всех процессов, кроме демонов и процессов, образующих сессию ps -x Вывод всех процессов без терминала ps -u Вывод имени пользователя, с правами которого работает процесс ps -aux | grep <Строка> - Поиск пр
Оглавление
  • Процессы;
  • Управление сервисами;
  • Взаимодействие
  • Статус служб

Процесс

Процесс - это условное обозначение управления ресурсами. Процесс является программным решением и работает на основе программного кода. Все процессы расположены в иерархии, вершина которой представлена процессом init. В системе процессы можно идентифицировать по их номерам - PID, a PPID - ID родительского процесса. Множество процессов порождены другими процессами.

COMMAND - команда, которая запустила процесс;

PID/PPID - ID процесса и предка процесса;

USER - пользователь от имени которого работает процесс;

Controlling TTY - терминал, с которого управляется процесс;

TIME - затраченное процессом время работы процессора;

Для поиска процессов по критерию предназначено программа ps;

ps <Ключи>

Утилита ps поддерживает несколько семейств ключей. Ключи можно комбинировать

ps -a - Вывод всех процессов, кроме демонов и процессов, образующих сессию

ps -x Вывод всех процессов без терминала

ps -u Вывод имени пользователя, с правами которого работает процесс

ps -aux | grep <Строка> - Поиск процесса по подстроке в выводе всех процессов системы

ps -aux | grep ps
ps -aux | grep ps

Мониторинг процессов

Благодаря утилите top можно мониторить процессы в реальном времени

top <ключ>

С помощью этой утилиты можно отследить проблемы потреблении ресурсов. Обновление программы можно задать ключом d <количество секунд>.

top
top

Колонки обозначают следующие параметры процесса:

PID,USER,PR - ID процесса, пользователь, приоритет;

VIRT,RES,SHR - виртуальная память, физическая память, раздельная память (в байтах)

S - состояние, R\S\Z;

%CPU, %MEM - потребление в доле от общего размера ресурса;

COMMAND - команда, с которой запущен процесс.

Утилита free отвечает за мониторинг оперативной памяти и файла подкачки.

free -h

Ключ -h предназначен для вывода информации в читаемом виде. Пункты расшифрованы следующим образом:

total - общее количество оперативной памяти;

used - используемая процессами память;

free - свободная оперативная память;

buff/cache - память, занятая кэшированием\буферизацией;

available - количество памяти, которое может быть немедленно освобождено для нового процесса.df

free -h
free -h

Утилита df отвечает за проверку свободного места на дисках в ОС.

df -h
df -h

Взаимодействие с процессами

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

SIGINT (2) - Прервать выполнение процесса. Посылается с помощью Ctrl+C.

SIGHUP (6) - Потеряно соединение с терминалом, запрос на перезапуск\ переконфигурацию процесса.

SIGTERM (15) - Завершение работы процесса. Может быть проигнорирован.

SIGTSTP (20) - Приостановка работы процесса, Ctrl+Z.

SIGSTOP (23) - Остановка работы процесса. Не игнорируется.

SIGKILL (9) - Прерывание работы процесса, завершение работы. Не игнорируется.

Рассылка сигналов выполняется командой kill:

kill <Сигнал> <PID>

kill -TERM 1234

kill -9 1234

Сигнал может быть выбран в числовой или текстовой форме.

-5

Приоритет процесса измеряется числом от -20 до 19, где -20 обозначает наивысший приоритет и 19 минимальный. Изменение приоритетов процесса выполняется с помощью команды renice:

renice <Новый приоритет> <PID>

-6

Systemd

Управление демонами осуществляется с помощью подсистемы systemd. Выполнение команд в отношении systemd выполняется с помощью специальной утилиты systemctl:

systemctl <Команда> <Аргументы>

Команды могут иметь несколько аргументов и не иметь вовсе. Некоторые команды могут требовать привилегий суперпользователя, так же результат некоторых команд может зависеть от наличия/отсутствия привилегий у вызывающего пользователя.

systemctl status <Cервис> - systemctl status sshd - Запрос статуса службы. В случае, если у вызывающего есть повышенные привилегии — будет отображены последние несколько строк из журналов, связанных с данным сервисом.

systemctl stop <Cервис> - systemctl stop sshd Остановка службы.

systemctl start <Cервис> - systemctl start sshd - Запуск службы.

systemctl disable <Cервис> - systemctl disable sshd Выключение автозапуска службы.

systemctl enable <Cервис> - systemctl enable sshd - Включение автозапуска службы.

systemctl list-unit-files Вывод списка всех установленных юнитов systemd.

-7