crond系统计划任务,Linux之定时任务

系统计划任务

大部分系统管理工作都是通过定期自动执行某个脚本来完成的,那么如何定期执行某个脚本,从而实现运维的自动化,这就要借助Linux的cron功能了.

计划任务分为一次性计划任务和周期性计划任务.

  • 一次性计划任务
    • 每晚11点30分开启网站服务.
  • 周期性计划任务
    • 每周一的凌晨3点30分把/var/www/html目录打包备份为backup.tar.gz

顾名思义,一次性计划任务只执行一次,一般用于满足临时的工作需求,可以使用at命令实现.

如果你的Linux没有此命令可以使用yum install at -y来安装.

[root@qdlinux ~]# at 23:30
at> systemctl restart httpd
at> <EOT>
at > 此处同时按下Ctrl + D组合键来结束编写计划任务

//查看已经设置好但还未执行的计划任务
[root@qdlinux ~]# at -l
1   Fri Aug 17 23:30:00 2018 a root

//可以使用atrm任务序号删除
[root@qdlinux ~]# atrm 1
[root@qdlinux ~]# at -l

如果希望Linux能够周期性地、有规律地执行某些具体的任务,那么可以使用crond服务再合适不过了.

如果你的Linux没有此命令可以使用yum install cronie -y来安装.

选项 解释
crontab -e 创建、编辑计划任务
crontab -l 查看当前的计划任务
crontab -r 删除某条计划任务
crontab -u 编辑其他人的计划任务

注意:此命令使用编辑的是/var/spool/cron/username文件.

此命令记忆口诀 ==”分、时、日、月、星期 命令”== 请牢记!!!

字段 说明
取值0-59的整数
取值0-23的任意整数
取值1-31的任意整数
取值1-12的任意整数
星期 取值为0-7,其中0与7均为星期日
命令 要执行的命令或程序脚本
//每周一、三、五的凌晨3点30分打包/var/www/html目录
[root@qdlinux ~]# crontab -e
crontab: installing new crontab
[root@qdlinux ~]# crontab -l
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*
30 3 * * 1,3,5 /usr/bin/tar -czvf backup.tar.gz /var/www/html

记忆练习示例

00 02 * * * ls  //每天的凌晨2点执行ls
00 02 1 * * ls  //每月1号凌晨2点执行ls
00 02 14 2 * ls //每年的2月的14号凌晨2点执行ls
00 02 * * 7 ls  //每周日凌晨2点执行ls
00 02 * 6 5 ls  //每年6月份周5的凌晨2点执行ls
00 02 14 * 7 ls //每月周日或14号凌晨2点执行
00 02 14 2 7 ls //每年2月14号或周日凌晨2点执行
*  02 * * * ls  //每天凌晨2点的每分钟执行
* * 14 2 * ls   //每年2月份14号每分钟执行
* * * * * ls    //每分钟执行
*/5 * * * * ls  //每5分钟执行
00 02 * 1,5,8 * ls //每年1,5,8月的每天凌晨2点执行
00 02 1-8 * * ls //每月的1-8号凌晨2点执行

//这里需要注意的是分字段必须要求数值,不能为空或者*号
//日和星期字段不能同时使用,否则会发生冲突

//每周一到周五凌晨1点清空/tmp目录内的所有文件
[root@qdlinux ~]# whereis rm
rm: /usr/bin/rm /usr/share/man/man1/rm.1.gz
[root@qdlinux ~]# crontab -l
0 1 * * 1-5 /usr/bin/rm -rf /tmp/*

Linux之定时任务,Linux之任务

 

定时任务Crond介绍

Crond是linux系统中用来定期执行命令/脚本或指定程序任务的一种服务或软件,一般情况下,我们安装完Centos5/6
linux操作系统之后,默认便会启动Crond任务调度服务。

Crond服务会定期(默认每分钟检查一次)检查系统中是否有要执行的任务工作,如果有,便会根据其预先设定的定时任务规则自动执行该定时任务工作,这个crond定时任务服务就相当于我们平时早起使用的闹钟一样。

 

必须保留的启动服务:

crond:定时任务服务
network:网络服务
rsyslog:日志服务
sshd:远程链接服务
sysstat:系统监控服务(涉及一系列监控工具)

图片 1

 

为什么要使用定时任务呢?

  • 我们举个例子说明:例如,我们的数据库或者代码程序需要每天晚上0点做一次全备份,这样每天夜里都需要执行的周期性工作,如果要让人操作的话,就得每天半夜爬起来,然后登录系统执行任务,执行完接着睡觉。另外,执行任务的过程也可能持续几个小时,这样一来,一个晚上我们就都不用睡觉了,这样显然是不行的。那么有什么办法来解决这个周期性的执行任务需求呢?
  • 这就是linux系统的定时任务Crond,这相当于我们平时生活中的闹钟功能,每天晚上提前设置定时,早晨按时叫醒你。

ls -l /var/log/messages* #系统的日志

ls -l /var/log/secure* #用户登录日志

 

用户执行的任务工作:某个用户或系统管理员定期要做的任务工作,例如每隔5分钟和互联网上时间服务器进行时间同步(这是安装系统基础优化部分的内容),每天晚上0点备份网站站点数据及数据库数据,一般这些工作需要由每个运维自行设置才行。

 

服务器时间同步

echo "*/5 * * * * /usr/sbin/ntpdate time.nist.gov > /dev/null 2>&1" >> /var/spool/cron/root

可通过上面的命令设置每5分钟执行一次。每次将互联网时间同步到本地Linux系统。

crontab -l 查看当前用户的定时任务配置。*号 下面会详讲~~

time.nist.gov是NTP服务器地址 time.windows.com,微软自家的时间服务器。 更多请参考
==> 国内常用NTP服务器地址及IP

图片 2

 

crontab(命令):正如前面所说的这个命令可以周期性的执行任务工作,例如:每五分钟做一次服务器时间同步。要执行crontab这个命令,也需要启动一个服务crond才行。这个crontab命令是生产工作中最常用到的命令,请大家务必掌握。

1、开机自启动crond服务

图片 3

2、此时此刻服务的状态(查看,开启,关闭)

图片 4

3、如何查看进程

ps -ef | grep crond

图片 5

小结提示:

  • 我们所说的crond服务是运行的程序,而crontab是用来管理用户的定时任务(规则)的命令
  • crond服务是企业生产工作中常用的重要服务,at和anacron很少用,可以忽略
  • 几乎每个服务器都会用到crond服务
  • 上千服务器可以开发分布式定时任务项目方案(批量管理ansible/saltstack)

 

定时任务Crond使用说明

[[email protected] ~]# crontab --help
crontab: invalid option -- '-'
crontab: usage error: unrecognized option
usage:  crontab [-u user] file
    crontab [-u user] [ -e | -l | -r ]
        (default operation is replace, per 1003.2)
    -e  (edit user's crontab)
    -l  (list user's crontab)
    -r  (delete user's crontab)
    -i  (prompt before deleting user's crontab)
    -s  (selinux context)
[[email protected] ~]# 
  • crontab -l 查看当前用户的定时任务配置
  • crontab -e 进入当前用户的定时任务vim编辑模式
  • crontab -u 用户名 -l 查看指定用户的定时任务设置

图片 6

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注