Как я могу определить, откуда выполняется команда при входе в систему на Debian 12?

Вопрос или проблема

При установке моего сервера я установил neofetch, как это обычно делают. Я также настроил его запуск при каждом входе в оболочку.

Перенесемся в сегодняшний день, когда я удалил neofetch в пользу fastfetch.

Теперь, когда я вхожу в систему, я получаю замечательное сообщение об ошибке в верхней части моего терминала:

-bash: neofetch: command not found

Хорошо, я это ожидал. Однако я никак не могу найти, где мне нужно удалить вызов.

Это не в .bashrc или .profile. Более того, я даже попробовал выполнить рекурсивный поиск с помощью grep по файловой системе для neofetch, который вернул… 0 совпадений. Это также не настройка SSH RemoteCommand, так как это происходит с нескольких клиентов, использующих разные конфигурации.

Если это важно, я использую tmux для сохранения сеанса терминала.

Очевидно, что переустановка Debian для этого не вариант, и, наверное, я мог бы просто проигнорировать это, но это просто раздражает.

Проблемы первого мира в своем лучшем проявлении, я понимаю.

Ответ или решение

Теория

Для опытного пользователя или системного администратора в среде Debian поиск источника исполнения команды при входе в систему может показаться задачей несложной. Однако, существуют нюансы, которые могут сделать этот процесс более запутанным. Когда вы устанавливаете приложение и интегрируете его исполнение в процесс входа в систему, необходимо точно понимать, где и как это происходит. По умолчанию, на большинстве Linux систем, включая Debian, существует несколько файлов конфигурации, которые могут содержать команды, исполняемые при входе в систему:

  1. .bashrc — обычно исполняется для интерактивных нон-логин шеллов.
  2. .profile или .bash_profile — исполняются для логин шеллов.
  3. /etc/profile и скрипты в /etc/profile.d/ — системные файлы конфигурации, которые могут вызвать команды для всех пользователей.
  4. .bash_login — если существует, то запускается после .profile.

Если команда neofetch была введена в процессе входа через один из вышеперечисленных файлов или через сторонние сервисы вроде SSH, а вы её потом удалили, система будет выдавать обычное сообщение об ошибке: "command not found".

Пример

Предположим, вы сделали все очевидные шаги, проверили все файлы, но сообщение продолжает появляться. Это может означать, что команда neofetch была добавлена в менее очевидное место. Например, в конфигурацию оконного менеджера tmux или в один из скриптов инициализации или сеансов, которые также могут быть использованы для запуска команд при входе. Некоторые пользователи добавляют команды в файлы типа .xinitrc, xsession, xsessionrc или в конфигурации терминальных эмуляторов.

Разберём подробно, как можно найти, откуда вызывается команда:

  1. Убедитесь, что это не системные файлы: просмотрите /etc/profile и скрипты в /etc/profile.d/. Они могут иметь правила, применяющие neofetch ко всем пользователям.

  2. Проверка конфигурации SSH: если клиентам не помогает изменение конфигураций SSH, посмотрите список правил, которые могут применять команды на логин, например, скрипт в ~/.ssh/authorized_keys или правила для управляющей машины, такие как /etc/ssh/sshd_config.

  3. Tmux конфигурации: поскольку вы указали, что используете tmux, проверьте ~/.tmux.conf на наличие команд, которые могут запускать определённые программы автоматически при старте новой сессии.

  4. Глобальный поиск: использовать команды вроде find вместе с xargs и grep на специфических папках для поиска команды в более глубоких системных уровнях.

Применение

  1. Мониторинг загрузки: добавьте привилегированного пользователя или используйте инструменты аудита (например, auditctl), чтобы отследить, от каких именно файлов происходит загрузка, что поможет идентифицировать источник команды.

  2. Логирование: используйте логирование для отслеживания всех процессов, стартующих при логине, чтобы изолировать и изучить последовательность.

  3. Эксперимент с окружением: измените временно своё окружение (например, PS1 или переменные окружения) для экспериментального запуска, чтобы увидеть, не помогает ли это снизить количество причин.

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

Оцените материал
Добавить комментарий

Капча загружается...