Как понять какой процесс нагружает систему в Linux и убрать его?
Бывают случаи, когда на сервере падает производительность и нужно найти источник нагрузки на систему. Первое что можно сделать это проверить какие процессы сейчас запущены, от какого пользователя или службы и насколько они важны или просто забирают ресурсы VPS. Это даст возможность представить общую картину происходящего на данный момент на сервере и выявить “тяжелые” задачи.
Подобных команд есть несколько, рассмотрим на примере:
ps aux
После введения команды в консоле получим результат ее обработки, вывод будет представлен в виде столбцов. Рассмотрим, что значит каждый столбец из них и какую функции несет в себе.
Поле “USER” – здесь указан пользователь из под которого был запущен процесс.
- Поле PID – этот параметр указывает на идентификатор процесса. Каждый процесс уникальный в системе и чтобы можно было его легко найти, проводить действия над ним и т.д. нужно как-то инфицировать для этого и служит PID.
- Поле %CPU – указывается в процентном соотношении затраченное процессорное время на выполнения процесса.
- Поле %MEM – в этом столбце аналогично выводится сколько потребляет процесс оперативной памяти в процентах.
- Поле VSZ (Virtual Set Size) – указывает на виртуальный размер процесса в целом. Он включает в себя всю память которой может воспользоваться процесс, включая память, которая уже задействована, память, которая выделена, но не используется, и память из общих библиотек.
- Поле RSS (Resident Set Size) – указывает на то, сколько занимет процесс места в текущое время.
- Поле STAT - задается статус процесса. Самые частые статусы - это может активный (Running), приостановлен (T) или же находится в состоянии ожидания (Sleeping) события которое его активирует или же просто освобождения памяти. Также процесса уже может не выполнятся в системе, но он не остается недостаточно завершен и носит статус (Zombie).
- Поле TIME – здесь выводится процессорное время, которое было использовано на выполнение этого процесса.
- Поле COMMAND - указывается название команды/службы или же сервиса, которые запустили процесс.
После анализа вывода для удаления процесса используется команда kill. Перед ее выполнение важно понимать какой процесс за что отвечает, чтобы не нарушить работу. Команда имеет следующий синтаксис:
kill 8888
где 8888 - идентификатор процесса.
Бывают ситуации что после этой команды процесс остается в системе, тогда можно использовать сигнал -9, тогда процесс удалится на 100%.
kill -9 8888
Сама команда kill имеет много дополнительных опций, посмотреть список всех можно через команду:
kill - l
Назначение сигналов подавать команду ядру на выполнение незапланированного (принудительного) действия над процессом. Такие манипуляции используются при сбоях, и ручной настройке процессов. Все сигналы имеют свой номер от 1 до 64 для более простого использования через консоль вместо буквенного эквивалентна.
Сигналы SIGKILL, SIGTERM, SIGINT, SIGHUP используются для подачи завершения процесса, но если в случае других может проигнорировать система, но при сигнале SIGKILL идет окончательно на удаление.