在 Linux 里,“trigger”这个词出现在很多不同的场景里,所以要先看你说的是哪种 trigger。下面按常见情况给你说明设置在哪:
如果你说的是服务什么时候被触发启动:
设置在 .timer 文件里:
/etc/systemd/system/xxx.timer
示例:
[Timer]
OnCalendar=*-*-* 02:00:00
Unit=xxx.service
启用:
systemctl enable xxx.timer
systemctl start xxx.timer
在 .service 文件里:
/etc/systemd/system/xxx.service
[Unit]
After=network.target
Wants=other.service
查看状态:
systemctl list-timers
如果你说的是设备插入/移除时触发脚本:
配置文件在:
/etc/udev/rules.d/
示例:
ACTION=="add", SUBSYSTEM=="usb", RUN+="/usr/local/bin/usb.sh"
重新加载:
udevadm control --reload
如果你说的是文件或目录变化触发:
常用工具:
inotifywait(inotify-tools)path 单元/etc/systemd/system/xxx.path
[Path]
PathChanged=/var/log/test.log
systemctl enable xxx.path
某些设备有:
/sys/class/xxx/trigger
例如 LED:
echo heartbeat > /sys/class/leds/xxx/trigger
如果你说的是 MySQL / PostgreSQL trigger:
我可以直接给你对应的配置文件和示例。