Есть несколько способов узнать PID (Process ID) процесса в Linux (включая CentOS 7):
-
С помощью `ps` и `grep` (самый распространенный способ): Это классический метод для поиска процессов по имени или части команды. Есть еще **[htop](/articles/bitriks-virtualnaya-mashina/htop-otlichnyy-interaktivnyy-monitor-protsessov/)**.
ps aux | grep <имя_процесса_или_ключевое_слово>
<li>`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`:
<li>`-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` (интерактивные утилиты):
<li>Запустите `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, вам нужно будет найти и убить уже запущенные экземпляры вредоносного ПО.