11月112014
crontab centos下crond执行shell不完整
公司的另外一个部门需要我们某一个DB中某一项的数据,DB上面我不想再新建什么程序了。于是想到利用nc来传输文件。
在DB上:
30 1 * * * /bin/sh /root/scripts/a.sh
a.sh 如下
nc -l 10.3.76.42 80 < xxxx.sql 【提一下在centos6.2中 nc 参数不允许同时跟 -L 和 -p 参数,详情见man nc】
在C机器上定点去取。
35 1 * * * /bin/sh /root/scripts/b.sh
nc 10.3.76.42 80 > xxxx.sql
第二天看数据 既然不全。。。在C机器上的xxx.sql只有DB上xxx.sql的前几行。。然后手动执行 1.执行DB 上的监听脚本 2.
执行C机器上的取数据脚本 OK正常 。然后放在crontab中执行还是不行。。。。晕。
后来查了一下 发现一个解释 就是 nc 命令默认是在前台执行 要用到当前shell 。然后我用了nohup参数 还是不行。。最后简单的办法解决了
就是 nc -d 10.3.76.42 80 > xxxx.sql . ..... nc -d意思就是后台执行。。。= =!
执行到一半的情况下就断掉了,需要继续查看原因了,上面的文章以为网友碰见的,我碰见的暂时还没解决掉!
>/dev/null 2>&1
查了下资料说有输出就不能执行完整,OK 继续测试下
* * * * * /bin/sh /etc/fu/mkhtml.sh >/dev/null 2>&1这样就没问题啦,问题解决啦!
以前的一些奇怪的问题就迎刃而解了!
发表评论
木有头像就木JJ啦!还木有头像吗?点这里申请属于你的个性Gravatar头像吧!