在 Ubuntu 里,很多人说“trigger 权限”通常是指 systemd 的 trigger 单元(如 .trigger 或 socket/timer/path 触发),也可能是 udev 的 trigger 权限,或者是 自定义 trigger 脚本没有执行权限。下面分几种常见情况说明:
mkdir -p ~/.config/systemd/user
cp mytask.service ~/.config/systemd/user/
cp mytask.timer ~/.config/systemd/user/
systemctl --user daemon-reload
systemctl --user enable --now mytask.timer
权限要求:
.service / .timer 文件权限:644chmod +xsudo cp mytask.service /etc/systemd/system/
sudo cp mytask.timer /etc/systemd/system/
sudo systemctl daemon-reload
sudo systemctl enable --now mytask.timer
⚠️ 若 trigger 要访问硬件或系统资源,需在 service 里加:
[Service]
User=root
sudo vim /etc/udev/rules.d/99-my-device.rules
示例(插上设备触发脚本):
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", \
RUN+="/usr/local/bin/my-trigger.sh"
sudo chmod +x /usr/local/bin/my-trigger.sh
sudo udevadm control --reload
sudo udevadm trigger
⚠️ udev 不能直接弹 GUI,只能后台执行
chmod +x trigger.sh
sudo chown root:root trigger.sh # 系统级
检查:
ls -l trigger.sh
给普通用户 sudo 权限(谨慎):
sudo usermod -aG sudo username
或只给某命令:
sudo visudo
username ALL=(root) NOPASSWD: /usr/bin/systemctl restart mytask
我可以直接帮你写完整配置。