Een service lijkt te draaien, maar het verwachte bestand blijft leeg. Voordat u de configuratie wijzigt of honderden regels in journalctl doorzoekt, bekijk direct de map waarin het moet schrijven.
inotifywait toont de creaties, wijzigingen en verplaatsingen die door de kernel worden gezien. U kunt een beperkte schrijfoperatie bevestigen en dan weten wanneer deze tool niet meer voldoende is.

Identificeer het pad voordat u de monitoring start
Begin met het absolute pad. Een systemd-service kan schrijven naar /var/log/naam-service, naar een applicatiemap of alleen naar het systeemlog. Controleer op Debian en Ubuntu eerst de eenheid en zijn logs:
sudo systemctl status mijn-service --no-pager
sudo journalctl -u mijn-service -n 50 --no-pager
Als u al een specifiek bestand hebt, controleer dan de eigenaar, de rechten en de beschikbare schijfruimte. Monitoring corrigeert noch een ontbrekende map noch een volle schijf.
sudo ls -ld /var/log/mijn-service
sudo df -h /var/log/mijn-service
Installeer vervolgens inotify-tools als de opdracht ontbreekt. Het pakket heeft deze naam op Debian en Ubuntu.
sudo apt update
sudo apt install inotify-tools
Op een RHEL-, Fedora- of Rocky-machine heet het pakket ook meestal inotify-tools. Controleer de naam in de geconfigureerde repository voordat u installeert.
Volg de schrijfacties in een beperkte map
Open een specifieke sessie en bewaak een enkele map. Deze opdracht blijft op de voorgrond totdat Ctrl+C wordt ingedrukt.
sudo inotifywait -m -e create,modify,move,delete /var/log/mijn-service
De optie -m houdt de monitoring open. De gevraagde evenementen voorkomen dat alleen de eenvoudige bestandsconsultaties worden weergegeven. Voer vervolgens de actie uit die de service moet laten schrijven, bijvoorbeeld een testverzoek of een al geplande herstart.
Een resultaat zoals CREATE application.log of MODIFY application.log bevestigt dat de kernel de operatie in deze map heeft gezien. Het zegt nog niet of de inhoud correct is. Lees dan de laatste regels van het bestand:
sudo tail -n 30 /var/log/mijn-service/application.log
De gids volgt een log met tail is er juist voor om de inhoud na het evenement opnieuw te lezen. Als de service alleen naar systemd schrijft, gebruik dan in plaats daarvan journalctl -u mijn-service -f.
Een test doen zonder de service aan te raken
Voordat u een productie-applicatie observeert, neem een laboratoriummap. U controleert zo de syntaxis en de rechten zonder uw evenementen te mengen met die van een actieve service.
mkdir -p /tmp/inotify-test
inotifywait -m -e create,modify,move,delete /tmp/inotify-test
In een tweede sessie, maak dan een bestand aan en wijzig het:
printf 'eerste regeln' > /tmp/inotify-test/probe.log
printf 'tweede regeln' >> /tmp/inotify-test/probe.log
De eerste sessie moet ten minste één creatie en één wijziging weergeven. Stop deze met Ctrl+C, en verwijder de testmap als u deze niet meer nodig hebt.
Ik zou deze controle kiezen voordat ik een configuratiewijziging aanbreng, omdat het een eenvoudige vraag beantwoordt: bereikt de service echt de verwachte map? Het stelt echter niet in staat om conclusies te trekken over de kwaliteit van de geschreven inhoud.
De beperkingen van inotifywait in productie
inotify observeert de lokale evenementen die door de kernel worden doorgegeven. In een zeer actieve map kan de uitvoer snel moeilijk te exploiteren worden en kan de evenementqueue overlopen. Dan moet je terug naar de applicatielogs, de metrische gegevens of een geschikte audit.
Gebruik het niet als het enige bewijs voor een beveiligingsonderzoek. Vermijd ook mappen die geheimen of duizenden tijdelijke bestanden bevatten. Om een proces te identificeren dat een bestand of een poort vasthoudt, lsof beantwoordt een andere vraag.
Wanneer het evenement en de inhoud van het bestand overeenkomen met de testactie, hebt u een schone basis om het diagnostisch proces voort te zetten. Als er geen evenementen verschijnen, controleer dan het pad, de systemd-eenheid en het type log voordat u de service wijzigt.
Voor het exacte gedrag van de opties, raadpleeg de handleiding van inotifywait.