Глубоко анализировать процессы в Linux, находить нежелательные автозагрузки и понимать, откуда процессы берут свою конфигурацию.

1. Какие процессы используют Python в Linux

Основные способы:

bash

# Способ 1: Поиск по имени процесса
ps aux | grep -E "(python|python3)"

# Способ 2: Более точный поиск (только процессы python)
pgrep -a python
pgrep -a python3

# Способ 3: Через pstree (показывает иерархию)
pstree -p | grep -i python

# Способ 4: Показать все python процессы с деталями
ps -fC python3

# Способ 5: Через htop (интерактивно)
# Установите: sudo apt install htop
htop
# Затем в htop нажмите F3 и введите "python"

Чтобы увидеть путь к Python интерпретатору:

bash

# Увидеть полный путь к исполняемому файлу
ps -eo pid,cmd | grep python | grep -v grep

# Или более детально:
ps -eo pid,args,cmd | grep python

2. Как найти принудительно добавленные в автозагрузку программы

Программы могут автозагружаться через разные механизмы:

A. Системные автозагрузки (systemd)

bash

# Показать все юниты, которые запускаются при загрузке
systemctl list-unit-files --state=enabled

# Показать только пользовательские юниты
systemctl --user list-unit-files --state=enabled

# Показать службы, которые запускаются при загрузке
systemctl list-units --type=service --state=running

# Проверить конкретный сервис
sudo systemctl status <service_name>

B. Cron задачи (пользовательские и системные)

bash

# Показать все cron задачи текущего пользователя
crontab -l

# Показать cron задачи для другого пользователя
sudo crontab -u <username> -l

# Системные cron задачи
ls -la /etc/cron.*/

# Просмотреть содержимое
cat /etc/crontab

C. Автозагрузка через профили

bash

# Проверить системные профили
ls -la /etc/profile.d/

# Проверить .bashrc, .profile текущего пользователя
cat ~/.bashrc | grep -i "start\|run\|exec"
cat ~/.profile

# Проверить автозагрузку XDG (для графических сред)
ls -la ~/.config/autostart/
ls -la /etc/xdg/autostart/

D. Проверка общих мест автозагрузки

bash

# Проверить несколько ключевых мест
ls -la /etc/init.d/
ls -la /etc/rc*.d/
ls -la ~/.config/systemd/user/

3. Как узнать, какие файлы использует конкретный процесс

A. Команда lsof (List Open Files)

bash

# Показать все открытые файлы для конкретного PID
lsof -p <PID>

# Показать файлы, открытые процессом по имени
lsof -c <process_name>

# Фильтровать по типу файлов:
lsof -p <PID> | grep -E "(\.py$|\.conf$|\.ini$|\.json$|\.yml$|\.yaml$)"

B. /proc файловая система

bash

# Перейти в каталог процесса
cd /proc/<PID>

# Показать открытые файловые дескрипторы
ls -la fd/

# Показать текущую рабочую директорию
readlink cwd

# Показать исполняемый файл
readlink exe

# Показать переменные окружения
cat environ | tr '\0' '\n'

# Показать аргументы командной строки
cat cmdline | tr '\0' ' '

C. Поиск конфигурационных файлов

bash

# Найти откуда процесс берет конфигурацию
# 1. Сначала посмотреть переменные окружения
cat /proc/<PID>/environ | tr '\0' '\n' | grep -i "config\|conf\|ini"

# 2. Искать конфиги в стандартных местах
find /etc -name "*.conf" -o -name "*.cfg" -o -name "*.ini" 2>/dev/null

# 3. Проверить домашнюю директорию пользователя
sudo -u <process_user> find ~ -name "*.conf" -o -name "*.cfg" 2>/dev/null

Полезные комбинации команд

Полный анализ Python процесса:

bash

# Найти PID Python процесса
PID=$(pgrep -f "python.*your_script" | head -1)

# Показать информацию о процессе
echo "=== Информация о процессе $PID ==="
echo "Команда:"
cat /proc/$PID/cmdline | tr '\0' ' '; echo

echo "=== Открытые файлы ==="
lsof -p $PID | tail -20

echo "=== Текущая директория ==="
readlink /proc/$PID/cwd

echo "=== Конфигурационные файлы (возможно) ==="
lsof -p $PID | grep -E "\.(conf|cfg|ini|json|yml|yaml|xml)$"

Мониторинг изменений в файлах:

bash

# Установить inotify-tools для мониторинга файлов
sudo apt install inotify-tools

# Мониторить директорию с конфигами
inotifywait -m -r /etc/<app_directory>/

Бонус: Утилита strace для анализа

bash

# Установить strace
sudo apt install strace

# Проследить системные вызовы процесса
strace -p <PID> -e trace=file

# Или запустить новую команду с трассировкой
strace -f -e trace=open,openat python your_script.py

Эти команды помогут вам глубоко анализировать процессы в Linux, находить нежелательные автозагрузки и понимать, откуда процессы берут свою конфигурацию.

Оставьте комментарий