傅令江的光影色彩世界
crontab centos下crond执行shell不完整
2014-11-11 令狐江

公司的另外一个部门需要我们某一个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

这样就没问题啦,问题解决啦!

以前的一些奇怪的问题就迎刃而解了!

发表评论:
昵称

邮件地址 (选填)

个人主页 (选填)

内容