linux + 命令超时

linux + 命令超时

在我的 bash 脚本中,我想为 lvresize 命令添加超时,因此如果命令正在等待,

我将在 5 秒后退出,如下所示:

 timeout 5  lvresize -L 1M /dev/mapper/rootvg-home

 Rounding size to boundary between physical extents: 32.00 MiB
 WARNING: Reducing active and open logical volume to 32.00 MiB
 THIS MAY DESTROY YOUR DATA (filesystem etc.)
 Do you really want to reduce home? [y/n]:

但由于某些不清楚的原因,超时对 lvresize 不起作用?

为什么?超时 5 秒后仍未退出命令?

答案1

无论为什么会失败(我的假设是lvresize忽略TERM信号),这都是一个糟糕的方法,因为lvresize真正的任务可能需要那么长时间,而你真的不想在它工作时杀死它。

相反,单独请求确认(timeout如果需要),然后lvresize不间断地运行。

答案2

要对任何问题回答“否”,请-qq向命令中添加选项。

使用时--force/--yes您应该仔细检查脚本正在做什么。+1 同意 Karen B 的建议使用expect

相关内容