gpt4 book ai didi

linux - Bash:当脚本终止时,如何终止脚本的子进程?

转载 作者:IT王子 更新时间:2023-10-28 23:59:10 25 4
gpt4 key购买 nike

该问题适用于如下脚本:

脚本

#!/bin/sh

SRC="/tmp/my-server-logs"

echo "STARTING GREP JOBS..."
for f in `find ${SRC} -name '*log*2011*' | sort --reverse`
do
(
OUT=`nice grep -ci -E "${1}" "${f}"`
if [ "${OUT}" != "0" ]
then
printf '%7s : %s\n' "${OUT}" "${f}"
else
printf '%7s %s\n' "(none)" "${f}"
fi
) &
done

echo "WAITING..."
wait

echo "FINISHED!"

当前行为

在控制台中按 Ctrl+C 会终止脚本,但不会终止已经运行的 grep 进程。

最佳答案

Ctrl+c 编写一个陷阱,并在陷阱中杀死所有子进程。将其放在您的 wait 命令之前。

function handle_sigint()
{
for proc in `jobs -p`
do
kill $proc
done
}

trap handle_sigint SIGINT

关于linux - Bash:当脚本终止时,如何终止脚本的子进程?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7817637/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com