如何在 Windows 10 和 11 上的 WSL 中自动启动 Cron

您所在的位置:网站首页 启动cron服务命令 如何在 Windows 10 和 11 上的 WSL 中自动启动 Cron

如何在 Windows 10 和 11 上的 WSL 中自动启动 Cron

2023-10-29 20:50| 来源: 网络整理| 查看: 265

0 分享至

用微信扫码二维码

分享至好友和朋友圈

Windows 有多种方法可以自动执行任务。最常用的工具是 Windows 任务计划程序,但如果您使用的是适用于 Linux 的 Windows 子系统 (WSL),还有一个 cron 守护程序在后台运行您的 WSL 安装任务。

Cron 默认不运行

在 Windows 10 和 Windows 11 上,cron 包含在 Ubuntu 等 Linux 环境中。问题是 WSL 不会自动启动 cron,这意味着默认情况下不会执行您的自动化任务。

要解决此问题,您可以在每次打开命令行时手动启动 cron,但是手动启动一个应该自动执行任务的工具有点忽略了这一点。

幸运的是,有一个简单的方法可以解决这个问题,它需要使用任务计划程序。

如果您从未在 Linux 中使用 cron 来运行任务,请查看我们之前关于如何在 Linux 上安排任务的教程。出于我们的目的,我们将假设您已经在 WSL 安装中创建了一些 cron 作业,并且您需要帮助以确保它们运行而不是一直照看 cron。

在本教程中,我们将使用检查和启动 cron,这是在现代版本的 Ubuntu(WSL 最流行的发行版)上停止和启动服务的推荐方法。

sudo service

另外,请注意,本教程假定您对您的 WSL 版本具有管理员权限。如果您是您 PC 的唯一用户并且您自己启用了 WSL,那么您确实拥有管理员权限。

提示:这也适用于Windows 11 上的 Linux 的 Windows 子系统,而不仅仅是在 Windows 10 上。

准备 Linux

我们要做的第一件事是让计算机在没有密码的情况下启动 cron。当你启动像 cron 这样的服务时,你使用 command 。但是该命令需要密码,Windows 启动时无法访问该密码。解决此问题的方法是关闭此命令的密码要求。

sudo service cron start

为此,请打开 WSL 终端窗口并输入. 在键盘上按 Enter,输入您的 Linux 密码,然后再次按 Enter 键。如果您使用的是 Ubuntu,这将使用初学者友好的Nano 命令行文本编辑器打开“sudoers”文件。sudoers是一个供系统管理员使用的文件,可以更改用户的权限和访问权限。

sudo visudo

将以下命令添加到 sudoers 文件的底部,然后按 Ctrl+o 保存,按 Ctrl+x 退出文件。

%sudo ALL=NOPASSWD: /usr/sbin/service cron start

这个 sudoers 命令表示任何有足够权限使用 sudo 命令的用户(应该包括你)都不需要密码来运行命令,它会启动 cron 守护进程。

sudo service cron start

保存文件后,您可以通过键入来检查该命令是否正在执行它的工作,并且它应该启动 cron 而无需输入密码。如果可行,让我们再次关闭 cron,以便我们可以测试我们在下一步中创建的任务是否正常工作。为此,请运行.

sudo service cron start

sudo service cron stop

在 Windows 任务计划程序中设置 Cron

这是我们实现 cron 自动化之旅的第一阶段。让我们继续使用任务计划程序进入第 2 部分。点击键盘上的 Windows 键,然后搜索“任务计划程序”。启动“任务计划程序”快捷方式。

当它启动时,查看“操作”部分并选择“创建基本任务”。

这将打开基本任务向导。首先,它会要求您为任务命名并对其进行描述。您可以在此处输入任何您想要的内容。我们将任务称为“cron”,描述为“在系统启动时启动 cron 的任务”。现在,点击“下一步”。

在下一节中,我们开始谈正事。首先,Windows 想知道我们什么时候想要运行任务。选择“当计算机启动时”单选按钮,然后单击“下一步”。

在下一节中,我们想要“启动一个程序”。默认情况下选择该选项,因此单击“下一步”。

现在,我们必须指定要运行的程序,即 WSL。在“程序/脚本”文本输入框中输入以下内容:

C:\Windows\System32\wsl.exe

我们还需要添加一些参数,因为到目前为止我们所做的只是启动 WSL,但是在 WSL 内部,我们需要告诉 Ubuntu 启动 cron。因此,在“添加参数”框中,添加:

sudo /usr/sbin/service cron start

再次单击“下一步”,选中“单击完成时打开属性对话框”框,然后单击“完成”。

任务已创建,但我们必须做最后一件事以确保一切正常。将打开一个新窗口,其中显示您创建的任务的摘要,但它仅设置为在您登录时运行。我们需要选择“运行用户是否登录”的单选按钮,然后按“确定”。

现在,让我们以两种方式测试我们的任务。首先,在任务计划程序的主窗口中,向下滚动直到看到您的任务名称。如果您使用名称“cron”,则应在列表顶部找到它。右键单击任务并选择“运行”。

然后,回到你的 WSL 终端并输入,它应该说 cron 正在运行。如果不是,请仔细检查您在前面的步骤中输入的所有内容是否正确。

sudo service cron status

如果在第一次检查中一切正常,那么是时候进行大测试了。重新启动你的电脑,当你回来时,打开一个 WSL 终端并运行,它应该报告 cron 现在正在运行。

sudo service cron status

恭喜!您已经迈出了进入一个更大的自动化世界的第一步。随着 cron 在后台运行,您在 WSL 中配置的 cronjobs 将自动按计划运行。

特别声明:以上内容(如有图片或视频亦包括在内)为自媒体平台“网易号”用户上传并发布,本平台仅提供信息存储服务。

Notice: The content above (including the pictures and videos if any) is uploaded and posted by a user of NetEase Hao, which is a social media platform and only provides information storage services.

/阅读下一篇/ 返回网易首页 下载网易新闻客户端


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3