[英]Prevent bash script from hanging
假設我有以下代碼的bash腳本:
function test() {
some_code
...
make
some_code
}
test
some_other_code
test()可以包含任何可能運行不合理時間的代碼。
我正在嘗試使用類似:
function test() {
cd $WORK_FOLDER
make
}
run_timeout()
{
local timeout=$1
$2 &
local pid=$!
while ps $pid >/dev/null && [ $timeout -ne 0 ]; do
sleep 1
let timeout--
done
kill -9 $pid 2>/dev/null && echo "Process $pid killed because executed too long"
}
run_timeout 15 "test"
run_timeout 5 "test"
但是make在估計的時間后仍在運行。
有什么建議如何解決這個問題?
有沒有什么技術可以防止bash腳本掛起?
我猜$ 2&是您在運行long函數的地方嗎? 我在同一時間遇到了同樣的問題,具體取決於函數中的內容,您將有多個過程……我不知道我的解決方案是否是實現此目標的最佳方法,但是它對我有用。
變化:
$2 &
為:
awk '{system($2)}' &
這樣,pid = $! 將為您提供awk pid,並通過殺死awk來殺死整個過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.