在我的 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
。