在 Ubuntu 里并没有一个叫 “trigger” 的通用命令,这个词通常出现在 systemd、udev、cron、inotify/fswatch 等场景中。下面我按最常见的几种“trigger”用法给你说明,你可以对照看看你指的是哪一种。
这是 Ubuntu 上最标准的 trigger 方式,用来定时或事件触发服务。
服务文件
# /etc/systemd/system/mytask.service
[Unit]
Description=My Task
[Service]
Type=oneshot
ExecStart=/usr/local/bin/mytask.sh
定时器文件
# /etc/systemd/system/mytask.timer
[Unit]
Description=Run mytask every minute
[Timer]
OnBootSec=5min
OnUnitActiveSec=1m
[Install]
WantedBy=timers.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
查看状态:
systemctl list-timers
当你插入 USB、硬盘等硬件时触发脚本。
# /etc/udev/rules.d/99-usb.rules
ACTION=="add", SUBSYSTEM=="block", KERNEL=="sd[a-z]1", RUN+="/usr/local/bin/usb_trigger.sh"
重新加载规则:
sudo udevadm control --reload
手动触发测试:
sudo udevadm trigger
crontab -e
0 8 * * * /usr/local/bin/mytask.sh
sudo apt install inotify-tools
inotifywait -m /data -e create -e modify |
while read dir event file; do
echo "$file changed"
done
systemctl trigger(不存在)systemd 没有 trigger 子命令,只有:
systemctl start
systemctl restart
systemctl reload
udevadm trigger这是真实存在的命令:
sudo udevadm trigger --type=devices
你可以直接回答下面任意一个:
我可以直接给你针对你场景的完整配置示例。