命令来知道我的计算机是否会关闭?

命令来知道我的计算机是否会关闭?

我正在向 Free BSD 计算机发送重启和关机命令。但是我想检查该计算机是否真的会关机或重启(我从重启计算机发送此命令,我想确定我的命令是否会运行)我不想 ping 等,有没有什么命令可以学习它?

编辑1:我认为我应该更清楚地说明我的问题。我从 Java 服务器应用程序发送了以下命令之一:

reboot // or any other command to reboot
shutdown -p now

我在客户端的另一个 Java 程序中调用该命令。让我们考虑一下重启场景。在我从服务器端发送重启命令后,我想检查客户端是否会重启。如果我在发送重启命令后对其进行 ping,客户端 Free BSD 机器可能仍处于活动状态。但是它可以在一段时间后重启。另一方面,在我发送重启命令后,可能会发生一些不好的事情,通信中断,客户端可能无法收到重启命令。

我该如何处理这个问题(我不想用 Java 端解决)Free BSD 是否将重启或关机信号保存在某处(以知道机器将重启或关机)并且我可以查询机器是否计划立即重启或关机?

编辑2: 服务器向客户端发送其中一个命令(我的服务器和客户端都是用 Java 编写的)如果我在发送关机命令后执行 ping 操作,则机器可能会关机但仍处于运行状态(它可能会在 2 秒后关机)。如果我可以查询我的客户端是否收到了关机(或重启)命令,即使它仍处于运行状态,我也会接受,OK 它会关机(或重启)如果我无法得到对客户端查询的答复,则意味着它不存在,因此我会接受它已关机(或重启)。我该如何查询我的机器?

答案1

除非您使用的是具有有问题的 BIOS 的旧 x86 系统或具有某种有问题的固件的非 x86 系统,否则reboot应该始终重新启动,假设您没有遇到设备挂起或有缺陷的设备驱动程序/内核模块的问题。

poweroff略有不同。这需要 x86 机器支持 ACPI。但是,这应该只在较旧的 x86 硬件上才会出现问题。我有一块双 533Mhz Pentium-II 主板,如果启用 ACPI,则只有 1 个 CPU 可见。禁用 ACPI 允许使用两个 CPU。但是,由于未启用 ACPI,因此poweroff实际上不会关闭系统,而只是停止它。我相信这个系统是 90 年代中后期的。我无法想象这会成为任何较新系统的问题。

在非 x86 机器上,除非您对该 CPU 或主板有特定的内核支持,否则它可能不会关闭系统。

当然,如果您当前运行的内核不支持 ACPI,您的内核就可能无法关闭机器。

因此,您能做的最好的事情可能是检查 ACPI 支持。

答案2

除了 ping 之外,您还可以在机器上运行守护进程(类似sshd- 我假设您正在这样做,因为您正在远程连接),如果连接失败,则机器(大概)关闭。

答案3

好的。我现在的理解如下:

客户端的 Java 应用程序发送命令rebootshutdown -p now。然后连接可能会中断,并且您想知道命令是否仍能完成。

关机的答案很简单:是的,它完成了。我经常使用关机,并提前几个小时设置时间,然后注销,服务器就会在指定的时间顺利关闭。

重新启动时也会发生同样的事情shutdown -r

我不知道会发生什么/sbin/reboot。我从未使用过它。我怀疑它仍然会完成,但我从未测试过。

答案4

在 free bsd 中,它会创建一个文件/var/运行/nologin。我检查它以了解是否接收到其中一个信号。

相关内容