Инициировать оповещение, когда указанная команда выполняется в Linux

У меня в системе установлено 3 общих ресурса самбы, но внезапно один из них отключается без моего разрешения. Может быть, один из гончих скриптов, которые работают в моем crontab, но я не знаю, какой именно.

Я просмотрел все /var/log каталог ищет umount без успеха, тогда я хочу войти, когда команда umount выполнена и какой процесс ее выполняет.

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

Большое спасибо.

У меня есть это программное обеспечение:

mount: mount-2.12q
mount.cifs version: 1.14-3.5.4

2 ответа

Поскольку монтирование - это изменение в файловой системе, возможно, для вас подходит решение inron-наблюдателя incron. Другим вариантом может быть auddd.

Размонтирование происходит не только при вызове двоичного файла umount, многие программы могут это сделать. Смотрите страницу руководства (man syscalls) и найдите umount. Тем не менее, вам придется подключить соответствующий syscall и посмотреть, кто вызывает это. Я не уверен, но, скорее всего, возможно отключить внутри ядра, вызвав соответствующий метод напрямую, поэтому функциональность может обойти интерфейс syscall, который в основном требуется для взаимодействия с пользователем. В этом случае вам придется использовать некоторую технику отладки на самом ядре, что, возможно, немного для обнаружения вашей проблемы!

Вы можете успешно использовать strace в уже запущенном процессе (man strace), например, smbd, и посмотрите, вызывает ли этот процесс umount, что вполне возможно.

В любом случае, если вы можете перекомпилировать ядро ​​из исходного кода, вы можете добавить printk сообщение внутри функции, которая используется для размонтирования устройства, чтобы увидеть, какой процесс это сделал (это мой подход для случаев, когда ничего другого, включая strace, помогает).

Другие вопросы по тегам