【127】Linux中 crontab 定时任务

内容目录(原文见公众号python宝)

一、crontab 介绍    1.1 常见命令参数          1.2 定时任务分类          1.3 crontab文件内容分析         1.4 crontab日志路径二、常用的命令展示三、定时任务的执行四、注意事项

一、crontab 介绍 

        crontab:定时任务的守护进程,精确到分,设计秒的我们一般写脚本  -->相当于闹钟
        日志文件:  ll /var/log/cron*
        编辑文件:vim /etc/crontab        
        进程:ps -ef | grep crond  ==> /etc/init.d/crond restart
        作用:定时备份,实时备份

1.1 常见命令参数

'''
参数说明:
-e 编辑该用户的计时器设置,如果不指定用户,则表示编辑当前用户的crontab文件
-l 列出该用户的计时器设置,如果不指定用户,则表示显示当前用户的crontab文件内容。
-r 从/var/spool/cron目录中删除某个用户的crontab文件,如果不指定用户,则默认删除当前用户的crontab文件。

-i  在删除用户的crontab文件时给确认提示。
-u user 用来设定某个用户的crontab服务,例如,“-u ixdba”表示设定ixdba用户的crontab服务,此参数一般有root用户来运行。
file file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。如果在命令行中没有指定这个文件,crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab。
'''

1.2 定时任务分类

Linux下的任务调度分为两类,系统任务调度和用户任务调度。
       系统任务调度:系统周期性所要执行的工作,比如写缓存数据到硬盘、日志清理等。 
        在/etc/crontab文件,这个就是系统任务调度的配置文件。
       用户任务调度:用户定期要执行的工作,比如用户数据备份、定时邮件提醒等。
        用户可以使用 crontab 工具来定制自己的计划任务。

        在crontab 文件都被保存在/var/spool/cron目录中。其文件名与用户名一致

1.3 crontab文件内容分析

前四行是用来配置crond任务运行的环境变量

        第一行:SHELL变量指定了系统要使用哪个shell,这里是bash

        第二行:PATH变量指定了系统执行命令的路径

        第三行:MAILTO变量指定了crond的任务执行信息将通过电子邮件发送给root用户

                     如果MAILTO变量的值为空,则表示不发送任务执行信息给用户

        第四行:HOME变量指定了在执行命令或者脚本时使用的主目录。

注:

        星号(*):代表所有可能的值,如month字段为星号,则表示在满足其它字段的制约条件后每月都执行该命令操作。

        逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”

        中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”

       正斜线(/):可以用正斜线指定时间的间隔频率,如“0-23/2”表示每两小时执行一次。

小 结:

    数字的表示最好用2为阿拉伯数字显示

    周和日最好不要同时用

    定时任务要加注解

    可以定向到日志文件或者空文件

    定时任务一定是绝对路径,且目录必须存在才能出结果

    crontab 服务一定要开启运行

1.4 crontab日志路径

ll /var/log/cron*

    /var/log/cron只会记录是否执行了某些计划的脚本,但是具体执行是否正确以及脚本执行过程中的一些信息则linux会每次都发邮件到该用户下。

二、常用的命令展示

yum install crontabs   # 安装crontab

# crontab服务操作说明
/sbin/service crond start //启动服务

/sbin/service crond stop //关闭服务

/sbin/service crond restart //重启服务

/sbin/service crond reload //重新载入配置

# 查看crontab服务状态
service crond status

# 查看crontab服务是否已设置为开机启动
方法一: 界面启动      ntsysv
方法二: 加入开机自动启动:   chkconfig –level 35 crond on

crontab -l   # 查看定时任务列表

# 编辑定时任务
crontab –e   # 编辑定时任务
vim /var/spool/cron/root   # 同上,编辑定时任务

# crontab -r 删除定时任务
从/var/spool/cron目录中删除用户的crontab文件
如果不指定用户,则默认删除当前用户的crontab文件
crontab –i  在删除用户的crontab文件时给确认提示

# 恢复丢失的crontab文件
'''
如果不小心误删了crontab文件,假设你在自己的$HOME目录下还有一个备份,
那么可以将其拷贝到/var/spool/cron/<username>,其中<username>是用户名。
如果由于权限问题无法完成拷贝,可以用:
crontab <filename> 其中,<filename>是你在$HOME目录中副本的文件名。
有些crontab的变体有些怪异,所以在使用crontab命令时要格外小心。如果遗漏了
任何选项,crontab可能会打开一个空文件,或者看起来像是个空文件。
这时敲delete键退出,不要按<Ctrl-D>,否则你将丢失crontab文件。
'''

三、定时任务的执行

# 每小时执行执行命令'free -g',将输出保存到/home/pythonbao/f.txt下。
0 * * * * echo `free -g` > /home/pythonbao/f.txt

# 每隔10分钟执行一次
*/10 * * * *  echo `free -g` > /home/pythonbao/f.txt  

# 每天八点执行一次
0 8 * * *   echo `free -g` > /home/pythonbao/f.txt    

# 每分钟执行一次 
* * * * * echo `free -g` > /home/pythonbao/f.txt

# 意思是每两个小时重启一次apache 
0 */2 * * * /sbin/service httpd restart  

# 意思是每天7:50开启ssh服务 
50 7 * * * /sbin/service sshd start  

# 意思是每天22:50关闭ssh服务 
50 22 * * * /sbin/service sshd stop  

# 每月1号和15号检查/home 磁盘 
0 0 1,15 * * fsck /home  

# 每小时的第一分执行 /home/bruce/backup这个文件 
1 * * * * /home/bruce/backup  

# 每周一至周五3点钟,在目录/home中,查找文件名为*.xxx的文件,并删除4天前的文件。
00 03 * * 1-5 find /home "*.xxx" -mtime +4 -exec rm {} \;  

# 意思是每月的1、11、21、31日是的6:30执行一次ls命令
30 6 */10 * * ls  
30 21 * * * /usr/local/etc/rc.d/lighttpd restart       # 每晚的21:30重启apache。
45 4 1,10,22 * * /usr/local/etc/rc.d/lighttpd restart  # 每月1、10、22日的4 : 45重启apache。
10 1 * * 6,0 /usr/local/etc/rc.d/lighttpd restart      # 每周六、周日的1 : 10重启apache
0,30 18-23 * * * /usr/local/etc/rc.d/lighttpd restart  # 每天18 : 00至23 : 00之间每隔30分钟重启apache。
0 23 * * 6 /usr/local/etc/rc.d/lighttpd restart        # 每星期六的11 : 00 pm重启apache。
* */1 * * * /usr/local/etc/rc.d/lighttpd restart       # 每一小时重启apache
* 23-7/1 * * * /usr/local/etc/rc.d/lighttpd restart    # 晚上11点到早上7点之间,每隔一小时重启apache
0 11 4 * mon-wed /usr/local/etc/rc.d/lighttpd restart  # 每月的4号与每周一到周三的11点重启apache
0 4 1 jan * /usr/local/etc/rc.d/lighttpd restart       # 一月一号的4点重启apache
*/30 * * * * /usr/sbin/ntpdate 210.72.145.44           # 每半小时同步一下时间

About Me:小麦粒

● 本文作者:小麦粒,专注于python、数据分析、数据挖掘、机器学习相关技术,也注重技术的运用

● 作者博客地址:https://blog.csdn.net/u010986753

● 本系列题目来源于作者的学习笔记,部分整理自网络,若有侵权或不当之处还请谅解

● 版权所有,欢迎分享本文,转载请保留出处

● 个人微信号:pythonbao 联系我加微信群

●个人 QQ:87605025

● QQ交流群pythonbao :483766429

● 公众号:python宝 或 DB宝

● 提供OCP、OCM和高可用最实用的技能培训

● 题目解答若有不当之处,还望各位朋友批评指正,共同进步

如果您觉得到文章对您有帮助,欢迎赞赏哦!有您的支持,小麦粒一定会越来越好!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值