最近开始使用win10和WSL。
我想让 crontab 运行以下命令。
/usr/sbin/shutdown now
但即使该命令在 Linux 操作系统中工作,它也不起作用(我已经检查过了)。
我想这样做的原因是;我想强行让电脑在夜间关闭,因为附近的人告诉我整夜保持安静(CPU风扇的噪音?)。
接下来我能做什么?
我到底想要做什么如下。
- 由于计算机在 22:00~05:59 期间被激活,因此
shutdown
将执行命令并让用户无法登录。 - 由于计算机在没有指定时区的情况下被激活,计算机会引导我登录并执行那种
shutdown at 2200
如果真的 WSL 不能这样做,我该如何使用任务调度程序或其他东西来实现呢?
不幸的是,您在问题中做出的许多假设是行不通的。我将介绍下面的每一个。虽然此信息包含在超级用户的其他问题和答案中,但可能很难将所有信息“放在一起”。因此,虽然人们可能会认为这是这些问题的“重复”(就像我最初所做的那样),但它可能确实需要自己的答案来汇总所有其他相关答案。
所以,让我们逐个解决这个问题:
您正在尝试
cron
在 WSL 下工作这里的问题是 WSL 并非旨在在启动时“启动”服务,因为没有 WSL“启动”的概念。请参阅此问题以获取有关该方面的更多信息。
您正在尝试通过 Linux
shutdown
命令关闭 WSLWSL 是一个虚拟化环境,无需直接控制硬件。WSL 中的 Linux
/usr/sbin/shutdown
命令无权访问主机硬件。关闭 WSL 本身的正确方法是运行wsl --shutdown
(从 PowerShell、CMD 或开始菜单)。this question涵盖了这一点,尽管由于它早于wsl
,您必须查看第二个答案。您正在尝试通过 Linux
shutdown
命令关闭 Windows正如评论中提到的,WSL 生命周期与 Windows 的生命周期不同。WSL 是在Windows中运行的软件。关闭 WSL 环境(在某种程度上)就像使用 File->Exit 或Alt+退出记事本一样F4。您不会期望 Windows 在您关闭记事本时关闭,您也不应该期望 Windows 在您关闭 WSL 时关闭。
要关闭 Windows,请参阅
shutdown.exe
命令,该命令包含在许多其他超级用户问题中。你真正的问题在底部——如何使用任务计划程序来做到这一点。 这个问题涵盖
shutdown.exe
了在任务计划程序中的使用,对于初学者。这至少可以在 22:00 运行关机。然后听起来您还希望有一些东西来检查用户是否在“安静时间”之间尝试登录并阻止它。这个答案中涵盖了 Windows
net user /time
命令。另请参阅此处的其他答案,以了解更多关于您正在尝试做的事情。最后,如果 Windows 已在安静时间启动,您希望将其关闭。这也应该通过
shutdown.exe
每隔一段时间重复的任务计划程序任务中的一个来完成。像这样的任务在超级用户的多个答案中都有介绍,但这里有一个供参考。