====== Процессы ======
===== Утилита strace =====
Позволяет выполнить трассировку системных вызовов.\\
===== Утилита ps =====
Утилита для просмотра списка процессов.\\
-p - фильтр по PID (так же есть вариации p -p -q ppid)
-aux - обычный вариант
-eo - форматирование вывода
ps -p 123
ps -p `cat proc.pid`
ps -p `cat proc.pid` -eo "%p"
ps aux | grep -E 'app1|app2'
:!: Доп
Каждый процесс в системе может быть в одном из нескольких состояний:\\
**Запуск** - работает либо готов к работе; **Ожидание** - ожидают какого либо события или ресурсов; **Остановлено** - остановлены с помощью сигнала; **Зомби ** - уже не выполняются, но есть запись о них из-за дочерних процессов\\
**Аргументы**\\
* **-A(a), -e** - все процессы (все кроме фоновых).
* **-N** - все кроме указанных.
* **-C (-G)** - выбрать по имени (по ИД группы).
* **-p (--ppid)** - выбрать по pid (pid родительского процесса).
* **-u** - процессы пользователя.
* **-t** - выбрать по tty.
**Форматирование**\\
* **-f** - максимум информации.
* **UID** - пользователь, от имени которого запущен процесс;
* **PID** (PPID) - идентификатор (родительского) процесса;
* **C** - процент времени CPU, используемого процессом;
* **STIME** - время запуска процесса;
* **TTY** - терминал, из которого запущен процесс;
* **TIME** - общее время процессора, затраченное на выполнение процессора;
* **CMD** - команда запуска процессора;
* **LWP** - показывает потоки процессора;
* **PRI** - приоритет процесса.
* **-F** - добавляет еще несколько полей.
* **SZ (RSS)** - это размер (реальный) процесса в памяти;
* **PSR** - ядро процессора, на котором выполняется процесс.
* **-l** - так же, добавляет поля
* **F** - флаги, ассоциированные с этим процессом;
* **S** - состояние процесса;
* **PRI** - приоритет процесса в планировщике ядра Linux;
* **NI** - рекомендованный приоритет процесса, можно менять;
* **ADDR** - адрес процесса в памяти;
* **WCHAN** - название функции ядра, из-за которой процесс находится в режиме ожидания.
* **-j** - минимум информации.
* **-k, --sort** - сортировка по указанному столбцу.
* **-L, -m** - отображать потоки в колонках (после процесса).
* **-H** - дерево процессов.
====== lsof ======
**LiSts all Open Files** файлы, открытые процессами, так же и процессы открытые файлами. Очень расширенный функционал, множество параметров\\
* **-u (-U)** - открытые конкретным пользователем (сокетом Unix)
* **-p** - открытые процессом
* **-d** - какие файлы и папки открыты в указанной директории
* **-c** - открытые процессами выполняющие команды имена которых указаны в параметре
* **-t** - вывод только PID процессов работающих с указанным файлом
====== Общее ======
:!: Примеры
:!: Найти и завершить перечень процессов, по имени команды
ps -ef | pkill -f my_prog