“修改 Ubuntu 触发条件”这个说法比较宽泛,需要先明确你指的是哪一类触发条件。在 Ubuntu 里,常见的“触发条件”通常包括以下几类,我分别说明,你可以对号入座:
查看/编辑当前用户的 cron:
crontab -e
示例:每天 3 点执行
0 3 * * * /path/to/script.sh
修改时间规则即可(分 时 日 月 周)。
系统级 cron:
sudo nano /etc/crontab
查看已有 timer:
systemctl list-timers
修改 .timer 文件(如 /etc/systemd/system/xxx.timer):
[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true
然后:
sudo systemctl daemon-reload
sudo systemctl restart xxx.timer
sudo systemctl enable xxx.service
编辑 service 文件:
sudo systemctl edit xxx.service
常见条件:
[Unit]
After=network.target
Wants=network.target
ConditionPathExists=/tmp/flag
可修改:
After=Wants=Requires=Condition*udev 规则决定“硬件事件触发什么动作”。
规则文件:
sudo nano /etc/udev/rules.d/99-my-rule.rules
示例(U 盘插入触发脚本):
ACTION=="add", SUBSYSTEM=="block", RUN+="/usr/local/bin/usb.sh"
修改 ACTION、SUBSYSTEM、ATTR{} 等条件即可。
重载规则:
sudo udevadm control --reload
如果你指的是 软件包安装/升级时的触发条件(高级用法):
触发文件在:
/var/lib/dpkg/triggers/
或包内:
DEBIAN/triggers
示例:
activate-noawait /usr/share/myapp
⚠️ 一般不建议手动修改,除非你维护 deb 包。
如 if、case、inotifywait 等:
if [ -f /tmp/start ]; then
...
fi
或文件变化触发:
inotifywait -m /data -e modify | while read path action file; do
echo "changed"
done
如电源、插入电源、合盖等:
gsettings list-recursively | grep trigger
或:
gnome-control-center
为了给你精确步骤,可以告诉我:
我可以直接给你可复制的配置文件示例。