bash – 当我的命令被超时杀死时,如何使“终止”消息静音?
发布时间:2020-12-15 16:59:49 所属栏目:安全 来源:网络整理
导读:通过引用 bash: silently kill background function process和 Timeout a command in bash without unnecessary delay,我编写了自己的脚本来设置命令的超时,以及消除kill消息. 但是当我的进程被杀死时,我仍然收到“已终止”的消息.我的代码出了什么问题? #!
通过引用
bash: silently kill background function process和
Timeout a command in bash without unnecessary delay,我编写了自己的脚本来设置命令的超时,以及消除kill消息.
但是当我的进程被杀死时,我仍然收到“已终止”的消息.我的代码出了什么问题? #!/bin/bash silent_kill() { kill $1 2>/dev/null wait $1 2>/dev/null } timeout() { limit=$1 #timeout limit shift command=$* #command to run interval=1 #default interval between checks if the process is still alive delay=1 #default delay between SIGTERM and SIGKILL ( ((t = limit)) while ((t > 0)); do sleep $interval; #kill -0 $$|| exit 0 ((t -= interval)) done silent_kill $$ #kill -s SIGTERM $$&& kill -0 $$|| exit 0 sleep $delay #kill -s SIGKILL $$ ) &> /dev/null & exec $* } timeout 1 sleep 10
您的代码没有任何问题,“终止”消息不是来自您的脚本,而是来自调用shell(您启动脚本的那个)
从). 您可以通过禁用作业控制来停用: $set +m $bash <your timeout script> (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |