防止输出消息的终止

时间:2016-05-01 05:50:29

标签: shell

我有一个shell脚本,涉及创建后台进程,然后在某个时候终止它。条带的精简版本是:

#!/bin/bash
sleep 100 &
# do something
kill $!
sleep 0

当我运行此脚本时,它会产生一些(不需要的)输出

> ./script.sh         
./script.sh: line 5: 99515 Terminated: 15          sleep 100

即使我将kill line的stdout和stderr传递给/dev/null,也会发生此输出。但由于某种原因,当我省略最后一行时,它不会发生。为什么要生成输出?如何防止输出?

2 个答案:

答案 0 :(得分:0)

您可以发送SIGINT(或 SIGQUIT )(而不是 SIGTERM );变化

kill $!

kill -n 2 $!

kill -n 3 $!

答案 1 :(得分:0)

使用trap

sleep 100 &
sleep_pid=$!

# Ignore SIGTERM
trap "" TERM

kill -TERM $sleep_pid
sleep 0

请参阅man 1p trap

  

如果action为空(""),则shell应忽略每个指定的值   条件是否出现。