LNMP定时任务
阅读本文之前,请先了解下关于crontab的相关基础知识
crontab:是在unix/linux上定时执行某个任务的程序
crond服务:是一个定时执行的服务,可以通过crontab 命令添加或者编辑需要定时执行的任务,crond是工具,是linux服务项。
下面开始设置定时任务
1,创建定时任务文件(下面以test.sh脚本为例)
[root@xxx ~]# cd /
[root@xxx /]# mkdir -p data/crontask 注释:用于集中存放任务文件
[root@xxx /]# mkdir -p data/cronlog 注释:用于集中存放任务日志
[root@xxx /]# vim /data/crontask/test.sh
#!/bin/sh 注释:shell脚本开头
wget http://www.baidu.com
说明:test.sh文件设置的任务是,访问百度网站
2,修改test.sh 文件权限755,使它可被执行
[root@xxx /]# chmod 0755 /data/crontask/test.sh
3,定时任务分为2种,系统级别定时任务和用户级别定时任务
方法1:系统级别定时任务(此方法便于管理所有用户设置的定时任务)
/etc/crontab是系统级别的crontab,系统的设置等,这种方法只有root用户能用。
[root@xxx /]# vim /etc/crontab
SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root #HOME=/ # For details see man 4 crontabs # Example of job definition: # .---------------- minute (0 - 59) # | .------------- hour (0 - 23) # | | .---------- day of month (1 - 31) # | | | .------- month (1 - 12) OR jan,feb,mar,apr ... # | | | | .---- day of week (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat # | | | | | # * * * * * user-name command to be executed * * * * * root /data/crontask/test.sh > /data/cronlog/test.log 2>&1
SHELL变量:要使用哪个shell,这里使用的是bash
PATH变量:系统执行命令的路径
MAILTO变量:crond任务的执行信息将通过电子邮件发给root用户,如果为空,则不发送给任何用户(一般不用更改)
HOME变量:执行crond命令使用的主目录(被我注释掉,操作日志分开存放)
最后一行是crond命令格式,依次是: 分钟 小时 日期 月份 星期 用户 .sh定时任务文件物理路径 日志记录
分钟/小时/日期/月份/星期 这5个参数,可以用的字符有: 星号(*):代表所有可能的值。 逗号(,):指定一个列表范围,例如“1,7,9” 中杠(-):表示一个整数范围,例如“2-5”表示“2,3,4,5” 正斜线(/):指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。例如*/10,如果用在minute字段,表示每十分钟执行一次。
方法2:用户级别定时任务,不写执行用户名称,默认为当前登录用户
[root@xxx /]# crontab -e
0 2 * * * /usr/bin/curl https://域名/模块/方法名
0 2 * * * /data/crontask/test.sh >> /data/cronlog/test.log 2>&1
0 10 * * 1-3 /data/crontask/pgsql.sh
表示执行命令的同时,产生的操作日志以追加的形式重定向到/data/cronlog/test.log
crontab -e是用户级的crontab,会被写到 /var/spool/cron 目录下,生成一个和用户名一致的文件,文件内容就是我们编辑的定时脚本,crontab命令实际是/usr/bin/crontab这个可执行文件
有些系统设置即使用root账号crontab -e也不行,必须放到/etc/crontab中
---------------------
关于/etc/crontab和crontab -e的区别,请参考CSDN网址:https://blog.csdn.net/fanren224/article/details/64906848
4,最后了放上crontab相关指令
crontab命令选项基本只有对用户操作的选项:
-u 指定一个用户
-l 列出某个用户的任务计划
-r 删除某个用户的任务 (慎用)
-e 编辑某个用户的任务