Как анализировать процессы Linux через pstree
Изучаем дерево процессов Linux с помощью pstree и разбираем ключи -c, -p и -a. Показываем объединение одинаковых ветвей, вывод PID и аргументов запуска, а также установку пакета psmisc в разных системах.
Фото: Daniil Komov / Pexels
← Все темы
Методы отладки и диагностики: поиск ошибок в Linux системах, сервисах и DevOps процессах.
Изучаем дерево процессов Linux с помощью pstree и разбираем ключи -c, -p и -a. Показываем объединение одинаковых ветвей, вывод PID и аргументов запуска, а также установку пакета psmisc в разных системах.
Разбираем ошибочную конструкцию while с pgrep, command substitution, test и перенаправлением в файл 0. Упрощаем цикл Bash до проверки кода возврата процесса и объясняем, почему лишние квадратные скобки только запутывают условие.
Используем strace и системный вызов execve, чтобы увидеть, какие внешние программы запускает команда и с какими аргументами. На примере man разбираем ключи трассировки, сохранение лога и практическую отладку скриптов и приложений.
Восстанавливаем доступ по SSH, когда ошибка в .bashrc ломает интерактивную оболочку удалённого сервера. Показываем два способа входа через принудительный запуск /bin/sh и SFTP, а также объясняем риск простых ограничивающих …
Сравниваем команды service и systemctl для управления службами Linux. Через strace проверяем вызов systemctl, вспоминаем SysVinit и Upstart и перечисляем альтернативы для OpenRC, runit, s6 и Supervisor.
Тестируем изменения systemd-юнитов через временное переопределение `systemctl edit --runtime`. Показываем выбор редактора, расположение override в `/run/systemd/` и замену ExecStart для nginx только до перезагрузки.
Ищем причины отказа SSH-аутентификации по ключам через журнал сервера и `tail`. Разбираем права на authorized_keys, неверные ключи, типовые сообщения auth.log и безопасное восстановление конфигурации.
Разбираем массив FUNCNAME и получаем имя текущей функции внутри Bash-скрипта. Показываем стек вызовов, аналог funcstack в Zsh и связанные переменные BASH_SOURCE и BASH_LINENO для отладки.
Исследуем заголовок tar-архива через hexdump и смотрим, где сохраняются UID, GID, имя владельца и группа. Проверяем `--owner`, `--group` и поведение распаковки для существующих и выдуманных пользователей.
Утилита `namei` показывает каждый компонент пути, владельца и права доступа, помогая находить ошибки в родительских каталогах. Сравниваем её с `ls -la` на примере недоступной PHP-админки.
Разбираем ошибку `bad ownership or modes` при входе по SSH-ключу и роль параметра `StrictModes`. Показываем безопасную диагностику прав `authorized_keys` и объясняем риски временного отключения проверки.
Проверяем синтаксис Bash-скриптов до выполнения с помощью bash -n и режима set -o noexec. Добавляем проверку всех .sh-файлов в Git hook и используем set -u, чтобы находить обращения к необъявленным переменным.
Debug — подборка материалов по диагностике, поиску неисправностей и расследованию проблем в Linux и инфраструктуре.
В разделе публикуются материалы по:
Здесь собраны практические руководства и реальные примеры поиска причин ошибок, нестабильной работы сервисов и деградации производительности.