在 Ubuntu 里,“trigger” 这个词可能出现在几个不同的场景里,所以下面我按最常见的几种含义来说明如何“监控 trigger”。
Ubuntu 使用 systemd,trigger 通常是 .service / .timer / .path / .socket 触发的动作。
systemctl list-triggers
(部分 systemd 版本支持)
查看某个服务被什么触发:
systemctl show xxx.service -p TriggeredBy
journalctl -f
或只看某个服务:
journalctl -u xxx.service -f
查看 trigger 来源:
journalctl -u xxx.service | grep -i trigger
例如:
# /etc/systemd/system/watch.path
[Path]
PathModified=/data/
[Install]
WantedBy=multi-user.target
监控是否触发:
systemctl status watch.path
journalctl -u watch.path -f
Ubuntu 的 apt 安装包时会有 dpkg trigger。
cat /var/log/dpkg.log | grep trigger
实时监控:
tail -f /var/log/dpkg.log
手动触发:
dpkg --configure -a
systemctl status cron
journalctl -u cron -f
用户 cron:
crontab -l
例如监听目录变化:
inotifywait -m /path/to/dir
安装:
sudo apt install inotify-tools
可以:
systemd 或 auditd 监控sudo apt install auditd
sudo auditctl -w /path -p wa -k my_trigger
sudo ausearch -k my_trigger
你可以告诉我:
我可以直接给你针对性的监控命令或方案。