在特定时间间隔后停止 Bash 脚本 [重复]
Posted
技术标签:
【中文标题】在特定时间间隔后停止 Bash 脚本 [重复]【英文标题】:Stop Bash Script after a Particular Interval [duplicate] 【发布时间】:2018-05-10 13:50:16 【问题描述】:#!/bin/bash
ls -l /bin/bash
ls -l /sbin/bash
ls -l /usr/local/bin/bash
ls -l /usr/bin/bash
ls -l /usr/sbin/bash
ls -l /usr/local/sbin/bash
运行此脚本后,如果时间超过 60 秒,我想停止此脚本。 假设第一个命令在 10 内执行,第二个命令需要 50 秒后我必须停止脚本的执行。
【问题讨论】:
为什么脚本需要超过 60 秒?这些只是几个ls
命令。
@hek2mgl 有趣的地方。假设是这样。
如果其中一个目录非常大,在某些平台(至少是 Linux)上可能需要很长时间。系统调用是非阻塞的,所以超时不一定能中断它。
它只是一个例子..命令会改变..在现实世界场景中
那么不好的例子。
【参考方案1】:
使用timeout(1)
timeout 60 ./your_script.sh
或者事后杀死它:
./your_script.sh & :
sleep 60 && kill $!
【讨论】:
没有超时? @NicK 不。我不知道别的。也许事后杀了它。 我不是 linux 专家,这就是我面临这个问题的原因......我知道第一行捕获当前时间的方式,并在执行每个命令后检查是否超过预期时间.杀死进程.. 杀死命令也在每个命令的 else 部分。以上是关于在特定时间间隔后停止 Bash 脚本 [重复]的主要内容,如果未能解决你的问题,请参考以下文章