Ubuntu 定时器共享的常用做法
一、使用 systemd 定时器集中管理与共享
[Unit]
Description=共享的定时任务服务
After=network.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/shared-script.sh
User=shareduser
Group=sharedgroup
EnvironmentFile=/etc/shared-job.env
StandardOutput=journal
StandardError=journal
[Unit]
Description=每天 02:00 触发共享任务
Requires=shared-job.service
[Timer]
OnCalendar=*-*-* 02:00:00
Persistent=true
[Install]
WantedBy=timers.target
sudo systemctl daemon-reload
sudo systemctl enable --now shared-job.timer
systemctl list-timers --all
journalctl -u shared-job.service -b
二、使用 /etc/crontab 或 /etc/cron.d 实现系统级共享
# m h dom mon dow user command
0 2 * * * root /usr/local/bin/shared-script.sh >> /var/log/shared-job.log 2>&1
# 每天 02:00 以 shareduser 运行
0 2 * * * shareduser /usr/local/bin/shared-script.sh >> /var/log/shared-job.log 2>&1
sudo chown root:root /etc/cron.d/shared-job
sudo chmod 644 /etc/cron.d/shared-job
三、多用户各自 crontab 复用同一脚本
sudo mv /path/to/script.sh /usr/local/bin/shared-script.sh
sudo chmod +x /usr/local/bin/shared-script.sh
0 6 * * * /usr/local/bin/shared-script.sh >> $HOME/shared-job.log 2>&1
四、关键注意事项与最佳实践