关闭脚本不按编写的方式工作

关闭脚本不按编写的方式工作

我是 Linux 新手。我写了一个非常简单的脚本来关闭我的计算机,写如下:

!#/bin/bash
echo "Hello World"
sudo shutdown

当我执行此代码时,它会启动关闭计划,通常提前一分钟左右,即使我的脚本不提供计划,但我想立即关闭我的系统。我想知道这是否是我的脚本或 Linux 的功能,以及我可以采取哪些措施来修复我的脚本以使其立即关闭。

答案1

您需要在脚本中解决三个问题。

第一个是 shebang 行中的拼写错误。此类行的正确语法是#!/path/to/interpreter -选项和参数。它必须从第一行的第一个字符开始,并以换行符结束。bash是一个可接受的脚本编写 shell(尽管在这种情况下可能有点过分),因此在修复前两个字符后,它是可以接受的,但有几个选项可能有用。-e出现任何错误时都会退出,迫使您编写更好的脚本,并-x显示 shell 在每一步中正在执行的操作,尽管在这种情况下两者都不会捕获问题。

关机时最常见的两个错误是关机时间和关机类型,而您似乎都犯了这两个错误。 Shutdown的主要特点是一次关闭。有三种方法可以指定绝对时间、相对时间和now。 Now 是它的别名+0,表示从现在起零秒,这也是单用户系统上最常见的情况。关机的另一个主要功能是它支持多种类型的关机,例如暂停、关闭电源和重新启动,但由于关机早于自动电源管理,因此默认关闭到单用户模式。它过去的用途是,在您踢掉所有用户后,您可以在实际关闭系统电源之前同步、卸载和检查文件系统。在切换回多用户模式之前,它对于进行其他维护也很有用。如今它已经很少使用,但仍然是默认设置。手册页将告诉您如何选择关闭类型。

此外,root 用户不需要 sudo,因此您可以为 root 用户跳过它。

答案2

最好的办法是在终端中输入每个命令来测试该命令的作用。对于你的情况,我认为你想使用以下内容:

shutdown now

相关内容