简短回答:可以,但 Ubuntu 自带的定时器(cron / systemd timer)本身不会“主动联网触发”,需要你配合网络条件或脚本来实现“联网触发”的效果。
下面分几种常见情况说明:
⚠️ 它们:
例如:每天 3 点执行,但只在有网时才运行
cron 示例
0 3 * * * /usr/bin/bash /home/user/sync.sh
sync.sh
#!/bin/bash
ping -c1 baidu.com >/dev/null || exit 1
# 下面写你的联网任务
curl https://example.com/api
适合服务器/桌面
# /etc/systemd/system/mytask.timer
[Unit]
Description=Run task after network online
[Timer]
OnBootSec=1min
OnUnitActiveSec=1h
[Install]
WantedBy=timers.target
配合:
# /etc/systemd/system/mytask.service
[Unit]
After=network-online.target
Wants=network-online.target
例如:WiFi 连接后执行脚本
# /etc/systemd/system/network-task.service
[Unit]
After=network-online.target
Wants=network-online.target
[Service]
Type=oneshot
ExecStart=/home/user/on-network.sh
如果你想从外面访问 Ubuntu 让它执行任务:
systemd + socat / python 监听端口webhook 工具| 需求 | 推荐方案 |
|---|---|
| 定时执行联网任务 | cron / systemd timer |
| 没网就不执行 | 脚本里加网络判断 |
| 网络恢复后执行 | systemd + network-online |
| 外部请求触发 | webhook / 监听端口 |
| 云端控制 Ubuntu | 云函数 + SSH / API |
如果你能说清楚:
我可以给你一个可直接用的配置示例。