在 Linux 里,“trigger” 这个词可能出现在不同场景里,测试方法也不一样。先帮你梳理几种常见情况,你看看是哪一类,我也可以继续细化。
systemctl show <unit> --property=Triggers
systemctl show <unit> --property=TriggeredBy
systemctl trigger <unit>
# 或
systemctl start <unit>
# 查看某个设备触发了哪些 unit
systemctl status sys-subsystem-*.device
# 触发所有设备
udevadm trigger
# 指定设备
udevadm trigger --action=add /sys/class/net/eth0
udevadm monitor
udevadm test /sys/class/...
例如 perf 的 trigger:
perf record -e sched:sched_switch --filter 'prev_state==2' \
-F 99 -- sleep 5
测试方式通常是:
perf script 查看是否触发如果你指的是“某个条件满足后执行动作”:
if [ condition ]; then
echo "trigger"
fi
测试方式:
condition=true ./script.sh
CREATE TRIGGER test_trigger
AFTER INSERT ON table
FOR EACH ROW
INSERT INTO log VALUES (NEW.id);
测试:
INSERT INTO table VALUES (...);
SELECT * FROM log;
我可以直接帮你写针对性的测试方法。