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