crontab问题处理

用pyhton写了一些爬虫,由于数据量比较大,需要跑的时间也比较长,所以将代码部署到服务器上。选择用crontab完成爬虫的定时爬取数据,这样避免了人工的干预,减少一些人为错误。但在部署crontab的时候遇到一些问题,写到这里方面今后的学习。

我在服务器上部署了7个任务,是在每天的凌晨之后检查网站的更新数据,如果有更新就将数据抓下来,没有更新就pass掉。格式是这样的:

03 00 * * * /usr/bin/python path1 > path of logs

10 03 * * *  /usr/bin/python path2 > path of logs

......

02 04 * * * /usr/bin/python path3 > path of logs

跑了两天发现只有第一个任务在跑,其他的任务没有执行,但是检查数据的时候其他的任务网站数据也存在更新,手动执行程序也能爬到更新数据,所以这就是crontab的问题了。

去网上查了好多资料都没找到解决的办法,自己静下心来仔细的检查了一下,发现是每条任务之间存在空行,当初这样写完全为的是美观易读,但这样确实带来了错误。

下面是几个主要的问题:

1、部署任务之间不要加空行

2、>>表示追加,>表示重新写入 一般写日志用追加就行了

3、执行任务的情况会写到  /var/spool/mail下,方面查看任务的执行情况,当然,你也可以不要mail,在logs后面加上些限制就行了

crontab的一些基础用法:

第1列分钟1~59
第2列小时1~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~6(0表示星期天)
第6列要运行的命令

下面是crontab的格式:
分 时 日 月 星期 要运行的命令

这里有crontab文件条目的一些例子:

30 21 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示每晚的21:30重启apache。

45 4 1,10,22 * * /usr/local/apache/bin/apachectl restart
上面的例子表示每月1、10、22日的4 : 45重启apache。

10 1 * * 6,0 /usr/local/apache/bin/apachectl restart
上面的例子表示每周六、周日的1 : 10重启apache。

0,30 18-23 * * * /usr/local/apache/bin/apachectl restart
上面的例子表示在每天18 : 00至23 : 00之间每隔30分钟重启apache。

0 23 * * 6 /usr/local/apache/bin/apachectl restart
上面的例子表示每星期六的11 : 00 pm重启apache。

* */1 * * * /usr/local/apache/bin/apachectl restart
每一小时重启apache

* 23-7/1 * * * /usr/local/apache/bin/apachectl restart
晚上11点到早上7点之间,每隔一小时重启apache

0 11 4 * mon-wed /usr/local/apache/bin/apachectl restart
每月的4号与每周一到周三的11点重启apache

0 4 1 jan * /usr/local/apache/bin/apachectl restart
一月一号的4点重启apache

时间: 2024-11-08 05:03:46

crontab问题处理的相关文章

LINUX 笔记-crontab命令

用户所建立的crontab文件中,每一行都代表一项任务,每行的每个字段代表一项设置,它的格式共分为六个字段,前五段是时间设定段,第六段是要执行的命令段,格式如下: minute   hour   day   month   week   command 其中: minute: 表示分钟,可以是从0到59之间的任何整数. hour:表示小时,可以是从0到23之间的任何整数. day:表示日期,可以是从1到31之间的任何整数. month:表示月份,可以是从1到12之间的任何整数. week:表示星

crontab调用python时出现ImportError: No module named XXX的问题

在 http://chenx1242.blog.51cto.com/10430133/1884415 里写了一个监控mq的脚本,把这个脚本加入crontab里进行时刻监控,于是#crontab -e,添加语句: * * * * * cd /目录  &&  python  mq脚本名.py  >/root/mq.log 2>&1 将执行的结果发送到/root/mq.log里,打开一看里面出现了这样的错误: 但是在shell里单独执行是OK的,于是添加了 source /e

centos 7 crontab demo

vim /etc/crontab content SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin:/opt/jdk1.8.0_131/bin MAILTO=root HOME=/opt/refreshIp/target/ */1 * * * * ./start.sh # For details see man 4 crontabs # Example of job definition: # .---------------- minute

Linux中的crontab命令用法

Crontab 在linux中,crontab的用来设置定期执行指定的命令,我们可以用它来指定一些需要重复的事情,Linux系统的用户只需将想要定期要执行的命令序列加到crontab文件中,操作系统即会按用户配置的时间执行这些命令序列.向crontab文件里添加指令之前,需要检查下crontab服务是否已启动和是否开机自动启动: [查看状态] Linux 系统上面原本就有非常多的计划性工作,因此这个系统服务是默认启动的 可以使用service crond status进行查看状态,下图是我在ce

crontab定时删除指定的hdfs数据

#!/bin/bash # filename:deleteHdfsData.sh # 遍历压缩指定目录下的所有文件,参数指定是否删除原文件(2个参数,1个参数是目录,一个参数是否删除原文件,1删除,0不删除) # crontab: 30 2 * * * sh /Application/aaa/enterprise/hadoop/deleteHdfsData.sh >> /Application/aaa/enterprise/hadoop/run.log 2>&1 # 遍历得到指定

Rsync + Crontab实现定时文件同步(首次全量+后续增量)

一.简介 在配置HA的时候,需要配置多个节点的配置,节点间的配置很多时候都是类似重复的,也许可以通过scp等手段实现,但是每次的更改都需要手动scp也显得麻烦,这边我们可以通过rsync的方式来实现文件的同步. 使用rsync+crontab做定时同步时,主服务器端开启rsync守护进程,而镜像服务器是运行rsync客户端,平时一般会利用crontab定时获取rsync服务器上的数据. 二.配置 ①rsync的服务端(文件发送出去端) 以守护进程的形式后台运行 1.rsync的安装和文件包组成

crontab使用和格式

什么是crontab crontab命令常见于Unix和类Unix的操作系统之中,用于设置周期性被执行的指令.具体的用法见下图: 关于crontab的格式: crontab的格式是分为6列:f1 f2 f3 f4 f5 program 第1列分钟 1-59第2列小时 1-23(0表示子夜)第3列日 1-31第4列月 1-12第5列星期 0-6(0表示星期天)第6列要运行的命令 Tips:当第一列为 * 时表示每分钟都要执行 program,其余类推:当第一列为 a-b 时表示从第 a 分钟到第

linux中crontab

1.直接用crontab命令编辑 cron服务提供crontab命令来设定cron服务的,以下是这个命令的一些参数与说明: crontab -u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数 crontab -l //列出某个用户cron服务的详细内容 crontab -r //删除某个用户的cron服务 crontab -e //编辑某个用户的cron服务 比如说root查看自己的cron设置:crontab -u root -l 再例如,root想删除fre

定时引爆之crontab

楔子 其实写一个python 或者 shell 脚本即可,以下内容只为入门学习. 接下来开始埋放地雷或者定时炸弹. 简介: 1.计划任务,是任务在约定的时间执行已经计划好的工作,这是表面的意思. 在Linux中,我们经常用到 cron 服务器来完成这项工作.cron服务器可以根据配置文件约定的时间来执行特定的作务.比如我们可以在配置文件中约定每天早上4点,对nginx服务器重新启动,这就是一个计划任务: 2.cron是一个linux下的定时执行工具 Cron 是Linux的内置服务,但它不自动起

Linux crontab任务调度

一.crontab说明 Linux crontab任务调度是在规定的时间频率内去执行相应的任务. 二.crontab文件详情 1.crontab文件在Linux中的/etc/crontab 2.查看crontab文件  # vi /etc/crontab  文件描述如下 SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/ # For details see man 4 crontabs # Example of j