crontab使用

最近使用crontab指令来周期杀死和启动爬虫,以免爬虫出bug后无法恢复
起初想检测爬虫是否出现异常,通过查看进程是否还存在,发现就算出现异常后,进程仍然存在,所以放弃。

screen指令在crontab中执行后虽然能进入screen,但程序的运行和输出仍然是在原来的shell上执行,所以不使用screen指令,直接将爬虫放入后台执行。

Centos与ubuntu中都自带crontab指令,但有所不同。
Ubuntu:

需要在shell脚本中加入java的环境变量:
export JAVA_HOME=/home/vm211/Downloads/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$PATH
export JRE_HOME=/home/vm211/Downloads/jdk1.7.0_79/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib

这里写图片描述
否则不能执行java程序

crontab -e 编辑定时任务
这里写图片描述

SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:~/multipleSourceCrawler
MAILTO=vm211

* */12 * * * /bin/bash ~/multipleSourceCrawler/restart_wechat_public.sh >>~/multipleSourceCrawler/wechat_public_log
* */12 * * * /bin/bash ~/multipleSourceCrawler/restart_wechat_article.sh >>~/multipleSourceCrawler/wechat_article_log
* */12 * * * /bin/bash ~/multipleSourceCrawler/restart_ntes_news.sh >>~/multipleSourceCrawler/ntes_newslog

注意:命令最好使用绝对路径

执行脚本时,使用/bin/bash,但应该也可以使用sh,这点没有进行尝试。
编辑完后可能需要重启cron服务。在ubuntu中,重启命令为:service cron restart

Centos:
Centos中的shell脚本可以不用添加java路径,cron也能执行java命令,可能这与用户的权限有关。

crontab -e 编辑定时任务

这里写图片描述
开始定时任务之后会出现没有找到文件的错误

这里写图片描述
虽然在终端中可以执行脚本,但在crontab中执行就会出现上述错误。谷歌之后发现是由于没有cd到文件所在的目录下,才会产生此错误。

在需要执行shell脚本中,开头先cd到程序所在目录,在执行命令,便能正常执行。

centos中重启服务的命令为:sudo service crond restart
另外,如果不重定向文件输出,那么输出(echo以及其他)便会以邮件的形式发送给用户,邮件所在的centos的路径为 /var/spool/mail,目录下的用户名则为用户收到邮件。而在ubuntu中没有找到。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值