(6 odpovědí)
Uzavřeno před 4 lety.
Vzhledem k cestě k souboru, jak mohu určit, který proces jej vytváří (a/nebo do něj čte/zapisuje)?
Přijatá odpověď:
lsof příkaz (již zmíněný v několika odpovědích) vám řekne, jaký proces má soubor otevřený v době, kdy jej spouštíte. lsof
je k dispozici téměř pro každou unixovou variantu.
lsof /path/to/file
lsof
neřekne vám o souboru, který byl otevřen před dvěma mikrosekundami a uzavřen před jednou mikrosekundou. Pokud potřebujete sledovat konkrétní soubor a reagovat, když k němu přistoupíte, potřebujete jiné nástroje.
Pokud můžete plánovat trochu dopředu, můžete soubor umístit na LoggedFS souborový systém. LoggedFS je skládaný souborový systém FUSE, který protokoluje všechny přístupy k souborům v hierarchii. Parametry protokolování jsou vysoce konfigurovatelné. FUSE je k dispozici na všech hlavních jednotkách. Budete chtít protokolovat přístupy do adresáře, kde je soubor vytvořen. Začněte s poskytnutým vzorovým konfiguračním souborem a upravte jej podle tohoto průvodce.
loggedfs -l /path/to/log_file -c /path/to/config.xml /path/to/directory
tail -f /path/to/log_file
Mnoho unices nabízí další monitorovací zařízení. V Linuxu můžete použít relativně nový auditní subsystém. Není o tom mnoho literatury (ale více než o logfs); můžete začít s tímto tutoriálem nebo několika příklady nebo jen s auditctl
manuálová stránka. Zde by mělo stačit ujistit se, že je démon spuštěn, a poté spustit auditctl
:
auditctl -w /path/to/file
(Myslím, že starší systémy potřebují auditctl -a exit,always -w /path/to/file
) a sledujte protokoly v /var/log/audit/audit.log
.