deploy/ 里的 systemd 单元(开机自启 + 定时任务) =============================================== 前提 ---- - 应用目录(下面以 /var/www/html/apps/timedtasks 为例,请按实际修改) - 已创建虚拟环境:python3 -m venv .venv && .venv/bin/pip install -r requirements.txt - 已复制 config.example.env 为 .env 并填写 SMTP 等 - scripts/run_dashboard.sh 可执行:chmod +x scripts/run_dashboard.sh 若 ga-dashboard.service 失败(status=2 等),先看日志: sudo journalctl -u ga-dashboard.service -n 80 --no-pager 手动用同一用户试跑(把 ubuntu 改成你的 User=): sudo -u ubuntu bash -c 'cd /var/www/html/apps/timedtasks && ./scripts/run_dashboard.sh' 常见原因:.venv 不存在或路径不对;User= 与目录所有者不一致(RPi OS 常用 pi); 未安装依赖:.venv/bin/pip install -r requirements.txt 1) 复制 unit 到 systemd ----------------------- sudo cp ga-dashboard.service /etc/systemd/system/ sudo cp ga-monitor-run.service /etc/systemd/system/ sudo cp ga-monitor-run.timer /etc/systemd/system/ sudo chmod +x /var/www/html/apps/timedtasks/scripts/run_dashboard.sh sudo chmod +x /var/www/html/apps/timedtasks/scripts/run_monitors.sh 2) 若路径或系统用户不是 ubuntu / /var/www/html/apps/timedtasks --------------------------------------------------------------- sudo nano /etc/systemd/system/ga-dashboard.service sudo nano /etc/systemd/system/ga-monitor-run.service 修改 User=、Group=、WorkingDirectory=、EnvironmentFile=、ExecStart= 中的路径。 3) 重载并启用(开机自启) ----------------------- 先停掉手动的 Web 进程(否则会占 8765,systemd 起不来): 若曾运行 python3 dashboard.py,在对应终端 Ctrl+C,或:pkill -f 'dashboard.py' sudo systemctl daemon-reload # 若之前失败进入 failed 状态,先:sudo systemctl reset-failed ga-dashboard.service # Web 控制台,崩溃会自动拉起 sudo systemctl enable --now ga-dashboard.service # 每天 9:00 / 21:00 各跑一次 run_monitors.py sudo systemctl enable --now ga-monitor-run.timer 4) 查看状态 ----------- sudo systemctl status ga-dashboard.service sudo systemctl list-timers --all | grep ga-monitor 5) 日志 ------- sudo journalctl -u ga-dashboard.service -f sudo journalctl -u ga-monitor-run.service -n 50 6) 改定时时间 ------------- sudo nano /etc/systemd/system/ga-monitor-run.timer # 编辑 OnCalendar= 后: sudo systemctl daemon-reload sudo systemctl restart ga-monitor-run.timer 7) 手动立刻跑一次监测(不等定时器) ----------------------------------- sudo systemctl start ga-monitor-run.service