关闭,但仍允许新登录

关闭,但仍允许新登录

我有一个 Linux 虚拟机AWSEC2它启动、执行任务,然后自行关闭。我发出这样的关闭命令:

shutdown -h 5

我有 5 分钟的延迟时间,以便让自己有时间ssh进入服务器并取消关闭(如果我想对服务器执行某些操作)。

我遇到的问题是一旦我发出 shutdown 命令,Linux 将不再允许新的登录。手册页中似乎没有任何内容允许它发出关闭命令,但仍然允许新的登录。

有没有办法发出此关闭命令,但仍然允许新ssh登录?

答案1

您可以简单地不使用shutdown时间规范,但是

echo shutdown -h now | at now + 5 minutes

或类似的;一个简单的

sleep $((60*5)) ; shutdown -h now

也可以。

但是,使用的at优点是您可以使用查看等待命令atq并使用取消它们atrm

答案2

通常,shutdown创建文件/etc/nologin,该login命令将其理解为拒绝非 root 登录。

这给你留下了两个明显的选择:

  1. 连接为root(首选使用公钥身份验证而不是密码)。
  2. /etc/nologin开始关机后删除该文件。请注意,新连接的用户不会看到wall即将关闭的警告消息;这可能对他们的会议有害。

答案3

简单的解决方案就是不要跑得太快shutdown。相反,先休眠一段时间,然后shutdown仅在延迟结束后才运行。

如果作业作为 shell 脚本运行,这很容易。您还需要某种方法来阻止最终发生关闭。您可以直接终止脚本,或者让脚本在睡眠结束后检查某些文件以停止关闭:

sleep 300
if ! [ -e /noshutdown ]; then
    shutdown -h now
fi

相关内容