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之间的任何整数。
week:表示星期几,可以是从0到7之间的任何整数,这里的0或7代表星期日。
  • 比如每天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配置文件的格式来照葫芦画瓢往里套就可以。

THE END