如何在Windows启动时自动运行WSL中的cron任务?
解决WSL中Cron任务随Windows开机自动启动的问题
方法一:通过Windows任务计划程序触发Cron启动
这是最直接的方案,让Windows开机时自动调用WSL命令启动cron服务:
- 打开「任务计划程序」(Windows搜索栏直接搜索即可)
- 点击右侧「创建任务」,填写任务名称(比如「WSL Cron 自动启动」)
- 切换到「触发器」标签,点击「新建」,选择「当计算机启动时」,确定
- 切换到「操作」标签,点击「新建」:
- 「程序或脚本」填写
wsl.exe - 「添加参数」填写
-u root service cron start(用root权限启动cron服务)
- 「程序或脚本」填写
- 切换到「常规」标签,勾选「不管用户是否登录都运行」和「使用最高权限运行」
- 保存任务,重启Windows后验证:无需打开WSL窗口,cron服务会自动启动
方法二:启用WSL Systemd让Cron随发行版自启
如果你的WSL 2版本支持Systemd(Windows 11 22H2及以上默认支持),可以配置Systemd来管理cron的自启:
- 在WSL发行版中编辑
/etc/wsl.conf文件,添加以下内容:
[boot] systemd=true
- 保存后退出,在Windows命令行执行
wsl --shutdown关闭所有WSL实例 - 重新启动WSL,执行
sudo systemctl enable cron,将cron设置为随Systemd启动的服务 - 再配合Windows任务计划程序,添加一个开机触发的任务,执行
wsl.exe -d <你的发行版名称>(比如wsl.exe -d Ubuntu),确保Windows开机时自动启动WSL发行版,Systemd会随之启动并拉起cron
额外优化:防止WSL自动停止
WSL默认会在闲置一段时间后自动停止发行版,可能导致cron中断,可关闭此功能:
在Windows命令行执行:
wsl --set-auto-stop <你的发行版名称> false
内容的提问来源于stack exchange,提问作者byteflush
相关产品推荐
相关产品推荐

