linux 定时执行脚本
先写一个简单的shell脚本用来测试定时执行脚本
[root@VM-12-12-centos wz]# cat shell_cron_test.sh
#!/bin/bash
if [ -f "/home/wz/cron_test.txt" ];
then
num=$(($(wc -l /home/wz/cron_test.txt | cut -d ' ' -f 1)+1))
else
num=1
fi
echo "$(date +"%y-%m-%d %H:%M:%S") 执行到了第$num次" >> /home/wz/cron_test.txt
执行一次这个脚本将会追加一条时间和执行次数的信息
[root@VM-12-12-centos wz]# cat cron_test.txt
23-11-18 22:05:04 执行到了第1次
23-11-18 22:06:06 执行到了第2次
1.crond和crontab的关系
crond是用来定期执行任务的一种服务。
crontab是用来编辑和添加定时任务的命令。
2.设定定时任务
查看crond服务状态
service crond status
或者
systemctl status crond
启动crond服务
service crond start
或者
systemctl start crond
停止crond服务
service crond stop
或者
systemctl stop crond
重启 crond服务
service crond restart
或者
systemctl restart crond
crontab 选项
-e:编辑某个用户的周期执行服务
-u:指定用户,没有指定默认当前用户
-l:列出某个用户的周期执行服务
-r:删除某个用户的周期执行服务
-i :删除前提示某个用户的周期执行服务
进入当前用户的周期执行任务编辑器(操作和vim一样)
crontab -e
每一行表示一条周期执行计划
注意:命令中使用路径一定要使用 绝对路径
前面表示执行周期规则,后面表示要执行的命令
执行周期规则表示使用方法:
五部分分别表示:
分钟 小时 天数 月数 周数
minute hour day month week
*:表示所有可能值,比如*号在分钟位置表示每分钟都执行命令
-:表示一个范围,比如* 2-4 * * *表示每天2,3,4点的每分钟分钟都执行命令
,:表示指定多个数值,比如* 2,4 * * *表示每天2,4点的每分钟分钟都执行命令
/ :表示指定时间频率,比如*/5 2,4 * * *表示每天2,4点的每5分钟分钟都执行命令
可使用工具在线Cron表达式生成器