Отслеживать, где демон пытается найти свой файл конфигурации

Отслеживать, где демон пытается найти свой файл конфигурации

Я установил демон на систему kubuntu, который пытается найти определенный файл конфигурации в неизвестном месте. Буквально заполнил файловую систему символическими ссылками на файл конфигурации, но он все равно жалуется "файл не найден".

Можно ли написать команду, которая будет регистрировать все попытки доступа к несуществующим файлам на жестком диске, чтобы я мог определить, где программа пытается найти свой файл?

решение1

Вы можете использовать strace для процесса, если знаете его PID:

strace -f -p 123 | tee testoutput.txt

(предполагая, что pid равен 123). "-f" означает "follow forks" (упрощенно), "-p" означает "PID следует". man straceПодробнее см. здесь. Короче говоря, strace отслеживает все действия, которые пытается выполнить процесс, например, открытие файлов, чтение из них или запись в них. Лучше всего перенаправить вывод в файл для анализа — в моем примере это достигается путем передачи его в tee, который разделяет вывод для отображения на консоли, а также для записи в указанный файл.

В выводе найдите что-то вроде

read(51, 0x7f287a7b36f0, 4096)          = -1 EAGAIN (Resource temporarily unavailable)

(Да, это не та ошибка, но пока что я ее нашел только одну) — то есть, readза ней следует что-то в скобках, затем несколько пробелов, за которыми следует «=» и отрицательное число (= ошибка). Думаю, вам следует найти что-то вроде «ENOTFOUND», чтобы указать на отсутствующий файл (точный код ошибки не знаю).

Связанный контент