繁体   English   中英

Bash 超时命令在脚本中不起作用

[英]Bash timeout command doesn't work within a script

如果 systemctl 命令花费的时间太长,我会尝试执行回显,以下在终端中执行时可以完美运行,但是如果我将完全相同的行粘贴到脚本中并执行该脚本,则始终会调用回显。 自行执行停止命令时,通常最多需要 2 分钟,我总是检查服务的日志,发现它及时停止了。 但是当命令位于脚本中时,超时会继续。

/usr/bin/timeout 180 /bin/systemctl stop aem-service || echo "test"

我使用此命令的目标是在 /bin/systemctl stop aem-service 花费太长时间(超过 180 秒)或以非零退出代码退出时打印测试

这是在 CentOS 7 虚拟机上测试的。

[编辑] 仅执行 /usr/bin/timeout 180 /bin/systemctl stop aem-service 时,我得到退出代码 124,表示超时。 /bin/systemctl stop aem-service on it's own results in exit code 0

我找到了解决方案:从脚本运行时,systemctl 似乎正在等待“输入”进行身份验证。 它并不真正需要这个,所以它在不从脚本运行时立即成功。 我通过添加 --no-ask-password 解决了这个问题:

/usr/bin/timeout 180 /bin/systemctl --no-ask-password stop aem-service || echo "test"

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM