安装crontab
目录
在使用crontab之前我们首先需要确认我们是否已经安装了crontab(一般都会默认安装)
1、产看是否安装,使用这个命令可以在屏幕上输出crontab的版本信息
crontab -V
如果成功输出crontab的版本信息则表示已经安装成功
2、安装crontab,如果没有成功回显或者报错,则表示crontab未安装,我的系统是centos8,所以将使用yum命令进行安装,如果是ubuntu系统则推荐使用apt-get进行安装
yum -y install vixie-cron #vixie-cron 软件包是 cron 的主程序;
yum -y install crontabs #软件包是用来安装、卸装、或列举用来驱动 cron 守护进程的表格的程序。
3、配置
crond是 Linux的内置服务,它不会自己运行起来,使用以下命令可以对crond进行启动或关闭
service crond start //启动服务
service crond stop //关闭服务
service crond restart //重启服务
service crond reload //重新载入配置
service crond status //查看crontab服务状态
4、开机自启动
不多说废话,直接给命令
chkconfig --level 345 crond on
基本参数
crontab -e #编辑当前用户的定时器任务
crontab -l #列出当前用户的定时器任务
crontab -x #删除当前用户的定时器任务
crontab file #file文件的内容是定时器任务
定时器任务的书写格式
# * * * * * command
# 分 时 日 月 周 需要执行的命令
#################第一部分,表示在什么时间执行命令#############
#第一列代表分钟 1~59,每分钟用*或*/1表示,每五分钟用*/5表示
#第二列代表小时 0~23,每小时用*或*/1表示,没五小时用*/5表示
#第三列代表日期 1~31,每天用*或*/1表示
#第四列代表月份 1~12,每月有*或*/1表示,
#第五列代表周几 0~6,0代表周日
#如果需要在多个特定的时间节点执行,不同的时间节点用逗号隔开,例如:
#在每个小时的第2,10,20,40,55分钟执行一次,写法如下
#2,10,20,40,55 * * * * command
#################第二部分,表示需要执行什么命令###############
#第六列代表需要执行的命令,涉及路径的命令建议使用绝对路径,避免运行是可能会找不到相应的文件,导致失败
案例
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。
实际案例
要求:制定计划任务,每隔1分钟,查看当前建立的连接,并将相关信息记录到某个日志文件中,第2、10、20、40、55分钟时(模拟场景,实际生产环境中可按需求设定周期),将当前文档移动到指定备份文件夹中,备份文件名中增加日期、时间信息。
分析要求:有两个需要执行的定时任务,我们通过shell脚本+crontab的方法解决问题
脚本1:脚本名称:netlog.shel
脚本作用:查看当前建立的连接,并将相关信息记录到某ETS.log文件中
脚本内容:
#!/bin/sh
Date=$(date +%Y-%m-%d-%T)
/usr/bin/echo ==========$Date==========>>/home/lichao/EST.txt
netstat -nat |grep "ESTA">>/home/lichao/EST.txt
netstat -nat |grep "TIME">>/home/lichao/EST.txt
#以上命令的路径是我linux上的路径,你们使用时需要将路径改成自己路径
#有些同学可能会因为未安装netstat导致运行脚本失败,建议使用脚本到crontab时,先在运行一遍,确定脚 #本有效
#如果提示没有netstat命令,可以使用yum安装一下,命令如下
#yum install net-tools
脚本2:脚本名称:backnetlog.sh
脚本作用: 将当前文档移动到指定备份文件夹中,备份文件名中增加日期、时间信息。
脚本内容:
#!/bin/bash
Date=$(date +%Y-%m-%d-%T)
filename="netLog_$Date.txt"
mv /home/lichao/EST.txt /home/PlanCopy/$filename
#注意:具体路径换成自己的,使用绝对路径!!!!,在使用crontab之前先运行一遍,测试脚本是否可用
#注意:具体路径换成自己的,使用绝对路径!!!!,在使用crontab之前先运行一遍,测试脚本是否可用
#注意:具体路径换成自己的,使用绝对路径!!!!,在使用crontab之前先运行一遍,测试脚本是否可用
#重要的事情说三遍
接下来给脚本执行权限
chmod u+x netlog.sh backnetlog.sh
#权限不够就在前面加sudo
接下来开始写crontab任务
内容:
*/1 * * * * sh /home/lichao/netlog.sh
2,10,20,40,55 * * * * bash /home/lichao/backNetlog.sh
#脚本路径换成自己的!!!
有两种方式执行这个任务:
第一种:crontab -e ,然后在出来的编辑器内,写入以上两条命令,然后重启任务进程
systemctl restart crond
第二种:将内容写入一个文件内,例如文件名为 file1.txt,然后crontab file1.txt
至此结束!!!