猿问
当我的Shell脚本退出时,如何杀死后台进程/作业?
我正在寻找一种方法,可以在我的顶级脚本退出时清理混乱。
尤其是如果我想使用
set -e
,希望脚本退出时后台进程会死掉。
临摹微笑
浏览 1486
回答 4
4回答
FFIVE
可以清理一些乱七八糟的东西trap。它可以提供在特定信号到达时执行的工作清单:trap "echo hello" SIGINT但如果shell退出,也可以用来执行某些操作:trap "killall background" EXIT它是内置的,因此help trap将为您提供信息(适用于bash)。如果您只想杀死后台工作,则可以trap 'kill $(jobs -p)' EXIT注意使用single ',以防止外壳$()立即替换。
0
0
0
天涯尽头无女友
这对我有用(感谢评论者的改进):trap "trap - SIGTERM && kill -- -$$" SIGINT SIGTERM EXITkill -- -$$将SIGTERM发送给整个进程组,从而也杀死后代。EXIT使用时指定信号很有用set -e(此处有更多详细信息)。
0
0
0
繁华开满天机
陷阱'kill $ {jobs -p)'退出我只对Johannes的答案做些微改动,并使用jobs -pr限制kill到正在运行的进程,并向列表中添加一些其他信号:trap 'kill $(jobs -pr)' SIGINT SIGTERM EXIT
0
0
0
随时随地看视频
慕课网APP
相关问题
centos7里没有locate命令,请问在哪里有centos6.5的镜像文件?
2 回答
相关分类
Linux
linux
2 回答
centos7里没有locate命令,请问在哪里有centos6.5的镜像文件?
2 回答
我要回答