linux - 是否可以从 bash 脚本中设置超时?

标签 linux bash process settimeout

<分区>

有时我的 bash 脚本会无缘无故挂起

所以他们实际上可以永远挂起(脚本进程将运行直到我杀死它)

是否可以在 bash 脚本中结合超时机制以便在例如 ½ 小时后退出程序?

最佳答案

这种仅限 Bash 的方法通过运行一个函数作为后台作业来强制执行超时,从而将所有超时代码封装在脚本中:

#!/bin/bash

Timeout=1800 # 30 minutes

function timeout_monitor() {
   sleep "$Timeout"
   kill "$1"
}

# start the timeout monitor in 
# background and pass the PID:
timeout_monitor "$$" &
Timeout_monitor_pid=$!

# <your script here>

# kill timeout monitor when terminating:
kill "$Timeout_monitor_pid"

请注意,该函数将在单独的进程中执行。因此,必须传递受监视进程的 PID ($$)。为了简洁起见,我省略了通常的参数检查。

关于linux - 是否可以从 bash 脚本中设置超时?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28927783/

相关文章:

linux - 如何在本地机器上为多个虚拟主机配置 linux/apache

java - 为什么 Tomcat 使用端口 8080 而不是 80?

ruby - 通过运行 unix 命令在 ruby​​ 中创建 zip 文件,请不要使用 gems

linux - 如何为 debian non-free 创建离线存储库?

bash - 如何从 stdout 传递值作为下一个命令的参数

linux - Bash:如何更改文件的第一列并且仅更改第一列

java - 如何使用java获取linux中特定端口的进程信息

process - 在 C# DLL 生命周期内运行并终止 Selenium 服务器单例进程

linux - 水平合并多个文件中的列

postgresql - 许多 Postgres.exe 进程