对于那些想要在 Windows 10/11 中通过 WSL(适用于 Linux 的 Windows 子系统)使用 cron 的用户
以下是所需步骤:
-
安装 Linux 发行版
-
设置 crontab
-
创建 Windows 计划任务以便 WSL 在启动时运行
1. 安装 Linux 发行版
打开 powershell (admin) 终端。运行
wsl --list --online
选择一个可用的发行版并通过运行安装
wsl --install -d <Distro>
2. 设置 crontab
打开 powershell (admin) 终端。运行
wsl
您现在应该处于 bash linux 发行版命令行中(第一次可能会提示您创建用户/密码。照做)。运行
sudo service cron status
查看 cron 是否正在运行。如果没有,请运行
sudo service cron start
再次检查状态,它现在应该正在运行。
要编辑 cron 作业,请运行
crontab -e
例如(每天20:58备份pic目录):
58 20 * * * rsync -av /mnt/c/Users/jlo/Pictures/ /mnt/c/Users/jlo/PicBackup/$(date +\%Y\%m\%d\%H\%M\%S)/
保存并退出
3. 创建 Windows 计划任务,以便 WSL 在启动时运行
a) 为了让 Windows 计划任务在启动时运行 WSL,而无需在每次运行“service start cron”命令时输入密码,您需要通过运行以下命令来编辑 visudo:
sudo visudo
并在文件底部添加以下内容:
%sudo ALL=NOPASSWD: /usr/sbin/service cron start
保存并退出。
b) 创建计划任务
打开“开始”> 输入“任务计划程序”> 创建基本任务> 触发器:“当计算机启动时”> 操作“启动程序”> C:\Windows\System32\wsl.exe > 在“添加参数”字段中,添加
sudo /usr/sbin/service cron start
保存任务。现在它应该列在任务计划程序中的其他任务中。
现在一切就绪。我建议重新启动机器并检查 cron 是否正在运行(PS 管理终端 > wsl > sudo service cron status),如果它正在运行,请配置并测试您的第一个 cron 作业。尽情享受吧!
我用来解决这个问题的一些资料来源: