我有一台服务器,里面有一块硬盘,我想用 smartctl (smartmontools) 和 badblocks 来测试。我会先使用 smartctl,然后再使用 badblocks。
我的问题分为三部分:
- 我如何通过 SSH 运行命令以便在关闭终端时该进程不会停止?
- 如何将 badblocks 结果和 smartctl 信息输出到文件?
- 我如何运行 smartctl,然后 badblocks 将自动启动(当 smartctl 完成时)而无需再次 SSH?
谢谢。
答案1
尽管我发现研究力度严重不足,但这里还是有一个答案。
nohup
包装进程,使其不会收到挂断 (HUP) 信号。这样,会话关闭后,进程仍会继续运行。对于更复杂的功能,您可以使用
screen
或tmux
,其工作方式与 Windows 上断开连接的远程桌面会话非常相似。程序继续运行并收集输出。当您重新连接到screen
/tmux
会话时,它将呈现给您。输出重定向是这里的关键字,相应的操作符是
>
as inecho bla > file.txt
。你不需要。这是因为实际上不是它
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