crontab是linux和unix常见的一种设置定时执行某脚本的命令,能够执行python,sh等脚本;java
常常遇到的需求是定时扫描数据库数据,而后对那些执行过程当中有问题的步骤拿出来发邮件给相应的管理员,或者定时清理数据库大表数据迁移到历史表等需求;因为我是学java的第一反应就是写一个定时任务去作,可是这样有一个比较致命的缺陷:不支持分布式,能够解决的办法是单独用一台服务器去部署这些定时任务(通常的企业没有这么土豪),可是比较简单的是用python写一个脚本,而后用crontab写一个定时执行的脚本命令去执行脚本python
crontab [-u user] filelinux
crontab [-u user] [-i] (-e/-l/-r)数据库
使用-u的命令只有root用户才有权限使用,能够指定用户服务器
若是不使用-u那么就是默认当前用户分布式
-i命令是可选的,使用-i以后,删除crontab脚本时会给出提示spa
-e 至关因而用vi编辑一个crontab命令,编辑完能够像vi一个文件同样保存,默认保存在/var/spool/crontab文件夹下,该用户通常只有root用户有权限进入unix
-l 列出用户的crontab脚本,若是没有用-u指定用户,那么默认当前用户crontab
-r 删除用户的crontab脚本,若是没有用-u指定用户,那么默认当前用户部署
file是指将你写的脚本加载到crontab中做为crontab命令去执行——这个命令没有亲自写过,后续补上
* * * * * python /aaa/bbb/ccc/python.py >> /aaa/bbb/ccc/python.log2>&1
前面五个星分别表明分钟,小时,日,月,星期(0-6)
后面是执行脚本的命令
若是是每隔几分钟执行那就是*/10 * * * *