在shell中kill掉后台子进程,如何不显示kill后台进程时的Terminated 提示信息
kill后台进程如何屏蔽shell输出kill的消息
#! /bin/bash
clear
function process_signal(){
echo "generating a background child process"
for ((i=9; i>=0; i--))
do
## 接收HUP信号,并进行处理
trap 'echo -e "\nchild process catched HUP signal and exit"; exit 0' HUP
sleep 1
echo -e "\rsleeping ${i}s ...\c"
done &
## 创建后台进程
## 获取最近创建的后台进程的PID
BG_PID=$!
sleep 3
## 向后台进程发HUP信号
echo -e "\nkill HUP signal to child process ${BG_PID}"
(kill -HUP ${BG_PID})
## 如果直接使用 (kill -9 ${BG_PID}) 结束后台子进程,
## 将会有多余的消息被打印
VAR="hello good morning"
echo ${VAR}
echo "function finished."
}
process_signal
echo ${VAR}
echo ${VAR}
echo ${VAR}
echo "sleeping 3s .. "
sleep 3
#! /bin/bash
clear
function process_signal(){
echo "generating a background child process"
for ((i=9; i>=0; i--))
do
## 接收HUP信号,并进行处理
trap 'echo -e "\nchild process catched HUP signal and exit"; exit 0' HUP
sleep 1
echo -e "\rsleeping ${i}s ...\c"
done &
## 创建后台进程
## 获取最近创建的后台进程的PID
BG_PID=$!
sleep 3
## 向后台进程发HUP信号
echo -e "\nkill HUP signal to child process ${BG_PID}"
(kill -HUP ${BG_PID})
## 如果直接使用 (kill -9 ${BG_PID}) 结束后台子进程,
## 将会有多余的消息被打印
VAR="hello good morning"
echo ${VAR}
echo "function finished."
}
process_signal
echo ${VAR}
echo ${VAR}
echo ${VAR}
echo "sleeping 3s .. "
sleep 3
########################################################
=====================================================
如果直接使用kill -9将会出现一下打印信息;
generating a background child process
sleeping 8s ...
kill HUP signal to child process 8546
signal_process.sh: line 4: 8546 Killed (Terminated) for ((i=9; i>=0; i--))
do
trap 'echo -e "\nchild process catched HUP signal and exit"; exit 0' HUP; sleep 1; echo -e "\rsleeping ${i}s ...\c";
done
hello good morning
function finished.
hello good morning
hello good morning
hello good morning
sleeping 3s ..
如果改为以上形式就不会有多余的信息显示;
如果是kill -2 会被忽略