linux上定时任务crontab命令的详细用法
在linux中,我们经常为了方便执行某些定时任务,这个时候就会用到一个命令, crontab这个命令。它是用来设置于设置周期性被执行的指令。该命令从标准输入设备读取指令,并将其存放于“crontab”文件中,以供之后读取和执行。通常,crontab储存的指令被守护进程激活, crond常常在后台运行,每一分钟检查是否有预定的作业需要执行。
先来查看一下crontab的文件
root@:~# vi /etc/crontab
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# 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
crontab文件的含义
minute:表示分钟,可以是从0到59之间的任何整数。
hour:表示小时,可以是从0到23之间的任何整数。
day:表示日期,可以是从1到31之间的任何整数。
month:表示月份,可以是从1到12之间的任何整数。
- 比如每天0时0点执行nginx分割日志的定时任务的实例
- 需要root的执行权限,执行路径写脚本的路径
0 0 * * * root /usr/local/nginx/sbin/cut_nginx_logs.sh
#第一个0代表0分,第二个0是0点,后面三个星号;
- 执行自定义脚本
*/30 9-22 * * * root /root/yp.sh
# */30 代表每30分钟,9-22代表早上9点至晚上22点,后面三个星号;
crontab简单例子
每一分钟执行一次 /etc/ls:
* * * * * /etc/ls
在 12 月内, 每天的早上 6 点到 12 点,每隔 3 个小时 0 分钟执行一次 /usr/bin/backup:
0 6-12/3 * 12 * /usr/bin/backup
周一到周五每天下午 5:00 reboot重启一下
0 17 * * 1-5 reboot
每月每天的午夜 0 点 20 分, 2 点 20 分, 4 点 20 分….执行 清空access.log日志文件的操作
20 0-23/2 * * * echo>/home/wwwlogs/access.log
crontab具体实例
0 */2 * * * lnmp nginx reload 意思是每两个小时重启一次nginx
50 7 * * * /sbin/service sshd start 意思是每天7:50开启ssh服务
50 22 * * * /sbin/service sshd stop 意思是每天22:50关闭ssh服务
0 0 1,15 * * fsck /home 每月1号和15号检查/home 磁盘
30 6 */10 * * ls 意思是每月的1、11、21、31日是的6:30执行一次ls命令
总体来说不是很难,根据crontab配置文件的格式来照葫芦画瓢往里套就可以。
版权声明:
作者:ivpsr.com
链接:https://ivpsr.com/176.html
文章版权归作者所有,未经允许请勿转载。
THE END