我編寫了以下腳本,如果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