Есть несколько способов узнать PID (Process ID) процесса в Linux (включая CentOS 7):
- С помощью
psиgrep(самый распространенный способ): Это классический метод для поиска процессов по имени или части команды. Есть еще htop.
ps aux | grep <имя_процесса_или_ключевое_слово>
-
ps aux: Показывает все запущенные процессы (a- все процессы с терминалом,u- в формате пользователя,x- все процессы без терминала). -
|: “Пайп”, передает вывод первой команды на вход второй. -
grep <имя_процесса_или_ключевое_слово>: Фильтрует строки, содержащие указанное слово.
Пример для вашего случая с вредоносом: Вам нужно искать процессы, которые могли быть запущены вредоносными скриптами. Имена могут быть замаскированы, например, под [kcached], или запускаться из путей вроде /home/bitrix/.config/dbus/gs-dbus.
ps aux | grep -E "\[kcached]|gs-dbus|htop/core"
-
-Eиспользуется для расширенных регулярных выражений, чтобы|(ИЛИ) работало, и\[kcached]искало точное имя с квадратными скобками. -
Или ищите по пользователю, от которого они запускались (скорее всего
bitrix):
ps aux | grep bitrix
Затем внимательно просмотрите список COMMAND и найдите подозрительные.
Как выглядит вывод:
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
bitrix 1234 0.5 2.1 123456 22345 ? Sl 10:00 0:05 /home/bitrix/.config/dbus/gs-dbus -k /home/bitrix/.config/dbus/gs-dbus.dat -liQD
bitrix 1235 0.0 0.0 1234 567 ? S 10:00 0:00 [kcached]
user 5678 0.0 0.0 21536 1044 pts/0 S+ 11:30 0:00 grep --color=auto -E \[kcached]|gs-dbus|htop/core
В этом примере:
-
PID процесса
/home/bitrix/.config/dbus/gs-dbusравен 1234. -
PID процесса
[kcached]равен 1235. -
Строка с
grep— это сама команда поиска, ее игнорируйте. PID дляgrepздесь5678.
Второй столбец в выводе ps aux — это PID.
- С помощью
pgrep(более прямой способ): Командаpgrepспециально создана для поиска PID по имени или другим атрибутам.
pgrep <имя_процесса>
Она выведет только PID(ы).
Полезные опции для pgrep:
-
-l: Показать имя процесса вместе с PID. -
-f: Искать по полной командной строке (не только по имени процесса). Это полезно, если процесс запускается скриптом или с множеством аргументов. -
-u <имя_пользователя>: Искать процессы, запущенные определенным пользователем.
Пример для вашего случая:
pgrep -lf gs-dbus
pgrep -lf kcached # Может не найти [kcached], так как это измененное имя
pgrep -af "\[kcached]" # Искать точное имя [kcached] по всей командной строке
pgrep -u bitrix -lf "gs-dbus"
-
pgrep -af "/home/bitrix/.config/dbus/gs-dbus": Поиск по полному пути к исполняемому файлу. -
С помощью
topилиhtop(интерактивные утилиты): -
Запустите
topилиhtop(htop более удобен, если установлен:sudo yum install htop). -
В
htopвы можете нажатьF3или/и ввести имя процесса для поиска. -
В
topво время его работы можно нажатьLи ввести строку для поиска. -
PID будет отображаться в соответствующем столбце (обычно называется
PID).
Как выбрать подходящий способ:
-
Для быстрого получения PID, если вы знаете точное имя процесса:
pgrep -l имя_процесса. -
Для более гибкого поиска, когда имя известно частично или нужно видеть всю команду:
ps aux | grep ключевое_слово. -
Для поиска по всей командной строке, включая аргументы, с
pgrep:pgrep -af "часть_командной_строки". -
Для интерактивного мониторинга и поиска:
htopилиtop.
После того как вы нашли PID, вы можете использовать его с командой kill для завершения процесса, например:
sudo kill
Если процесс не завершается, можно использовать более “жесткий” сигнал:
bash Скопировать
Закрыть блок
sudo kill -9 # Используйте с осторожностью
В вашем случае, после удаления записей из cron, вам нужно будет найти и убить уже запущенные экземпляры вредоносного ПО.
Ищете надежного партнера по веб-разработке и автоматизации? Мы помогаем бизнесу расти с помощью современных технологий, автоматизации процессов и экспертного SEO. Свяжитесь с нами, чтобы обсудить вашу задачу.