通过 Linux 触发器提升效率的实用方案
一 核心工具与适用场景
二 快速上手示例
# 每天 02:00 执行
0 2 * * * /usr/local/bin/backup.sh >> /var/log/backup.log 2>&1
# /etc/systemd/system/backup.service
[Unit]
Description=Daily Backup
[Service]
ExecStart=/usr/local/bin/backup.sh
# /etc/systemd/system/backup.timer
[Unit]
Description=Run backup daily at 02:00
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
# 启用
sudo systemctl daemon-reload
sudo systemctl enable --now backup.timer
# 安装:apt/yum install inotify-tools
inotifywait -m -e create,modify,delete /data/incoming |
while read path action file; do
/usr/local/bin/handle.sh "$path$file" &
done
# /etc/systemd/system/net-init.service
[Unit]
Description=Network Initialization
After=network-online.target
Wants=network-online.target
[Service]
ExecStart=/usr/local/bin/net-setup.sh
sudo systemctl enable net-init.service
# /etc/udev/rules.d/99-usb-backup.rules
ACTION=="add", SUBSYSTEM=="usb", ATTR{idVendor}=="1234", ATTR{idProduct}=="5678", RUN+="/usr/local/bin/usb-backup.sh"
# 生效
sudo udevadm control --reload-rules && sudo udevadm trigger
以上示例覆盖了常见场景的最小落地方式,可直接改造为你的业务脚本。
三 提升效率的关键优化
四 常见场景与推荐方案
| 场景 | 推荐工具 | 关键点 |
|---|---|---|
| 日志轮转与清理 | Cron / Systemd Timers | 避开业务高峰;加锁防并发;保留策略写入日志 |
| 代码/配置落地即部署 | inotifywait | 防抖合并;失败回滚;变更前后健康检查 |
| 数据库备份 | Cron / Systemd Timers | 错峰执行;保留最近 N 份;校验与告警 |
| 网络就绪后任务 | systemd 依赖 | 绑定 network-online.target;超时与重试 |
| USB/外设自动化 | Udev | 精确匹配 idVendor/idProduct;最小权限执行 |
| 笔记本/台式机非 7x24 | anacron | 错过任务自动补执行;适合开发机/家用机 |
| 以上组合已在生产实践与常见教程中广泛验证,可按你的系统环境与业务要求择优采用。 |