我编写了以下脚本,如果grep在文件中找不到相关字符串,则启用20秒的超时。从kill命令中kill -9 +禁用消息(标准输出)
脚本运行良好,但是从脚本的输出是这样的:
./test: line 11: 30039: Killed
如何从kill命令禁用此消息?
如何告诉kill命令忽略进程不存在?
THX
耶尔
#!/bin/ksh
(sleep 20 ; [[ ! -z ` ps -ef | grep "qsRw -m1" | awk '{print $2}' ` ]] && kill -9 2>/dev/null ` ps -ef | grep "qsRw -m1" | awk '{print $2}' ` ; sleep 1) &
RESULT=$!
print "the proccess:"$RESULT
grep -qsRw -m1 "monitohhhhhhhr" /var
if [[ $? -ne 0 ]]
then
print "kill "$RESULT
kill -9 $RESULT
fi
print "ENDED"
./test
the proccess:30038
./test: line 11: 30039: Killed
kill 3003
我已经尝试了它的不工作 – yael 2010-06-18 10:56:42
您错过了1>或2>也不行 请其他的意见? – yael 2010-06-18 11:00:09
>重定向stdout和stderr,所以当进程不存在或者当它终止进程时它不会输出任何东西。问题中的代码只会将stderr重定向到'kill',所以这个答案就是解决问题的方法。 – 2010-06-18 11:21:25