💡 定时任务在Linux系统中用的是比较多的,个人的话一般用的很少,在企业中定时任务是必不可少的,定时任务多种多样,有程序的定时任务,比如:写一个程序在程序内定时执行,或者是操作系统的定时任务,比如:Windows系统的定时任务、Linux系统的定时任务,他们的名称、操作方式都不相同,但是他们都有一个共同的特征,在某个特定的时间或者时间段执行某项任务,这类通常被我们称之为定时任务,再举个例子,我们手机的闹钟、或者街边的路灯,这些都是定时任务,闹钟会在早上7点发出音乐,路灯会在晚上6点开灯,这些都是生活中的定时任务,今天记录一下在Linux系统中如何使用定时任务
在centos系统中默认自带了crontab程序,我们可以使用rpm -qa | grep crontab
命令来查看是否安装了crontab服务
[root@VM-4-14-centos ~]# rpm -qa | grep crontab
crontabs-1.11-17.20190603git.el8.noarch
[root@VM-4-14-centos ~]#
我们可以直接使用命令 crontab -e命令来添加定时任务,但是在此之前先要检查一下crontab服务是否正常启动了,如果 /etc/init.d下面没有cron或者crontab 命令的话,那么你就不能用/etc/init.d/cron status 命令来查看crontab服务是否正常运行了。使用下方命令查看crond服务是否正常启动。[root@VM-4-14-centos init.d]# /sbin/service crond status
显示running说明服务是正常运行的状态,但如果现在的非running则说明没有启动没正常运行,那么就要使用[root@VM-4-14-centos init.d]# /sbin/service crond start
命令来启动crontab服务了。
如果使用的不是centos发行版本的话,那么系统默认是没用安装crontab的,需要我们手动去安装,需要更新源apt-get update
更新源之后再执行apt-get install cron
进行安装,安装之后可以使用service cron start
命令进行启动crontab服务,其他命令可以通过service cron
进行查询
启动之后我们还需要校对一下服务器的系统时间,如果不校对时间的话,比如现在是北京时间7:30,你设置了一个8:00执行的定时任务,但是到了中午12点发现定时任务还没有执行,于是排查后发现服务器的时间是相差了12个小时,服务器时间是晚上的12点。那么肯定就不对了
如果你的服务器在公网(互联网)的话,可以直接公共的时间服务器(NTP)地址作为标准时间,对于非腾讯云设备,可以使用腾讯云提供的公网 NTP 服务器(即:外网 NTP 服务器)
我们在需要校对的服务器上使用命令 ntpdate ntp.tencent.com
但是如果是在内网的,可以使用date -s 去手动设置时间,或是其他方式同步时间
crontab服务启动完成和时间同步完成之后我们可以使用定时任务,输入命令crontab -e
或者vim /etc/crontab
两种方式都可以添加定时任务,先来看第一种,输入crontab -e
后回车,打开到了编辑页面,先看看一下格式:分-时-日-月-周-[命令]。时间为可选的参数,空白的用*号代替。看一下最后一行,意思是每天晚上20:42分 创建一个test123.txt的文件,
每天中午12:00删库跑路
9月15号中午12点删除跑路
每周三下午六点半执行删除日志的操作
有些可能是上午或者下午都需要运行定时任务,我们可以分开写
亦或者这样,都能满足每天8点和下午15点执行
一般我们通常定时任务和shell脚本一起使用,定时任务单一的命令可能满足不了需求,就需要配合shell脚本定期执行某些操作,而在使用shell脚本的时候要注意使用绝对路径来启动脚本