如何通过 SSH 运行 badblocks 和 smartctl,并在不中断 badblocks 和 smartctl 的情况下关闭 SSH?

如何通过 SSH 运行 badblocks 和 smartctl,并在不中断 badblocks 和 smartctl 的情况下关闭 SSH?

我有一台服务器,里面有一块硬盘,我想用 smartctl (smartmontools) 和 badblocks 来测试。我会先使用 smartctl,然后再使用 badblocks。

我的问题分为三部分:

  1. 我如何通过 SSH 运行命令以便在关闭终端时该进程不会停止?
  2. 如何将 badblocks 结果和 smartctl 信息输出到文件?
  3. 我如何运行 smartctl,然后 badblocks 将自动启动(当 smartctl 完成时)而无需再次 SSH?

谢谢。

答案1

尽管我发现研究力度严重不足,但这里还是有一个答案。

  1. nohup包装进程,使其不会收到挂断 (HUP) 信号。这样,会话关闭后,进程仍会继续运行。

    对于更复杂的功能,您可以使用screentmux,其工作方式与 Windows 上断开连接的远程桌面会话非常相似。程序继续运行并收集输出。当您重新连接到screen/tmux会话时,它将呈现给您。

  2. 输出重定向是这里的关键字,相应的操作符是>as in echo bla > file.txt

  3. 你不需要。这是因为实际上不是它smartctl在测试,而是硬盘本身在测试。测试完成后不会收到任何通知,你必须定期轮询状态/结果。

答案2

操作方法是通过 SSH 登录,然后启动screen

在中screen,运行如下命令:

 smartctl <options>; badblocks <options>

现在,输入Ctrl+AD以“分离”会话screen。这样,当您关闭 SSH 时,它将继续运行。

您可以screen稍后再次登录时通过运行来“重新连接”会话screen -r

如果您仍想将命令的输出保存到文件,请像这样运行它们:

(smartctl <options>; badblocks <options>) >/path/to/log/file.txt

相关内容