">> " 输出重定的问题,请高手指点!

">> " 输出重定的问题,请高手指点!

我写了一个简单的脚本,想通过tracerout 两个服务器地址来判断网络故障,脚本如下:
  echo " BEGIN TIME:"
date
echo "-------- traceroute  download.gzidc.com----------"
traceroute 211.155.23.29
echo "----------traceroute  www.hk.hi.cn-----------------"
traceroute 218.77.178.12
echo " END TIME:"
date
echo "----------------------------end-----------------------"


之后我在 crontab  中设置了定时执行
15,30,45,59 * * * * /home/stao/wn.sh >>/home/stao/WNWB.leases

但是通过>> 输出的结果并不是traceroute 命令的执行结果,执行结果如下:

  Thu Jul 28 20:15:00 CST 2005
-------- traceroute  download.gzidc.com----------
----------traceroute  www.hk.hi.cn-----------------
END TIME:
Thu Jul 28 20:15:00 CST 2005
----------------------------end-----------------------
BEGIN TIME:
Thu Jul 28 20:30:00 CST 2005
-------- traceroute  download.gzidc.com----------
----------traceroute  www.hk.hi.cn-----------------
END TIME:
Thu Jul 28 20:30:00 CST 2005
----------------------------end-----------------------

而上面脚本直接,./xxx.sh 执行的话,却又是正常的,为什么?
百思不得其解? 请高手们指点一二
可能是这样的:
date、echo这些是内部命令,运行脚本的时候是在当前进程里面进行,你重定向脚本的输出就是对当前进程重定向,因此date、echo的输出没有问题。但是traceroute是外部命令,脚本执行它的时候是在子进程中进行的。但是对父进程的重定向是不能影响子进程的输出,所以会出现你说的这种结果。
斑竹看看,不知道我说得对不对。
非常感谢,可是我直接在脚本内重定向比如
traceroute 211.155.23.29  >>/home/stao/xx.sh
用crontab 用时运行,也是不能重定向文件内?
你这样做是不是同时有两个进程在处理一个文件呢?试试source命令吧,如果不行的话,你还是另外找高人。不过解决了要给我说一下哦/。
不是两个进程处理同一个文件,当我在脚本内加上>> 后,我就把 crontab 内的>> 给取消了。谢谢。
晕了,都没有人碰到过嘛。。。
从你的输出看到,程序到达traceroute的时候立即返回了,并没有等待它执行结束,然后接着余下的部分.
traceroute 的执行还是有一段时间的 ,你可以用top监视一下.
你说的对,但是怎么解决呢? 为什么Traceroute 不能被正确的值行呢?
我这样 怎么没有问题?>!
如果你手功执行的话,当然没有问题,但是,如果你用Crontab 定时执行的话,就会出现这个问题,我没有测试过“> ” 写文件,我只是用了 >> 追加, 我试过两个不同发行版的Linux ,都存在这个问题。