一天一命令-crontab
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了一天一命令-crontab相关的知识,希望对你有一定的参考价值。
一天一命令-crontab
系统软硬件环境平台:
VMware Workstation Pro 12.5.5 build-5234757
CentOS Linux release 7.3.1611
内核版本:3.10.0-514.el7.x86_64
contab
提交和管理用户需要周期性执行的任务
Usage: crontab [-u user] file crontab [-u user] [-l | -r | -e] [-i] [-s] crontab -n [ hostname ] crontab -c Options: -u <user> define user -e edit user‘s crontab -l list user‘s crontab -r delete user‘s crontab -i prompt before deleting -n <host> set host in cluster to run users‘ crontabs -c get host in cluster to run users‘ crontabs -s selinux context -x <mask> enable debugging
查询crond服务的运行情况:
#systemctl list-units --type service | grep cron crond.service loaded active running Command Scheduler #systemctl list-unit-files | grep cron crond.service enabled
linux下的任务调度管理分两类:系统任务调度和用户任务调度。
系统任务调度:系统周期性需要执行的任务,cron文件位置为/etc/crontab或者/etc/cron.d/目录下的自定义文件
#more /etc/crontab SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root # 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
/etc/crontab文件的前4行定义的crond任务运行的环境变量,
第1行SHELL指定使用的shell类型;
第2行PATH指定系统执行命令的路径;
第3行MAILTO变量指定crond的任务执行信息需要发送的用户,空表示不发送给任何人;
第4行HOME变量指定执行命令或脚本时使用的主目录。
#ll /etc/cron.d
total 24
drwxr-xr-x. 2 root root 54 Feb 20 08:31 ./
drwxr-xr-x. 139 root root 8192 May 30 18:35 ../
-rw-r--r--. 1 root root 128 Mar 31 2016 0hourly
-rw-r--r--. 1 root root 108 Nov 5 2016 raid-check
-rw-------. 1 root root 235 Nov 6 2016 sysstat
执行命令#more /etc/cron.d/0hourly
# Run the hourly jobs
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin
MAILTO=root
01 * * * * root run-parts /etc/cron.hourly
时间格式:
# * * * * * user-name command to be executed
# 分 时 日 月 周 用户 命令或脚本
minute:0-59,取值范围0-59之间的整数
hour:0-23
day:1-31
month:1-12或者jan,feb,mar,apr ...
week:0-6或者sun,mon,tue,wed,thu,fri,sat。周日可以用0或7
user:指定用户
command:要执行的命令,可以是系统命令或脚本文件
在以上各个字段中,还可以使用以下特殊字符:
星号(*):代表所有可能的值,例如month字段如果是星号,则表示在满足其它字段的制约条件后每月都执行该命令操作
逗号(,):可以用逗号隔开的值指定一个列表范围,例如,“1,2,5,7,8,9”
中杠(-):可以用整数之间的中杠表示一个整数范围,例如“2-6”表示“2,3,4,5,6”
正斜线(/):可以用正斜线指定时间的间隔频率,例如“0-23/2”表示每两小时执行一次。同时正斜线可以和星号一起使用,例如*/10,如果用在minute字段,表示每十分钟执行一次
也可以通过以下方式来添加时间@...
@reboot : Run once after reboot.
@yearly : Run once a year, ie. "0 0 1 1 *".
@annually : Run once a year, ie. "0 0 1 1 *".
@monthly : Run once a month, ie. "0 0 1 * *".
@weekly : Run once a week, ie. "0 0 * * 0".
@daily : Run once a day, ie. "0 0 * * *".
@hourly : Run once an hour, ie. "0 * * * *".
@hourly root touch ~/`date +%F.log` //每小时执行命令
用户任务调度:用户定期执行的任务,用户自定义的计划任务,所有用户定义的crontab文件位置在/var/spool/cron目录中,文件名和用户名一致,同时可以设置使用者的权限,文件如下:
/etc/cron.allow 列出允许使用crontab目录的用户
/etc/cron.deny 列出不允许使用crontab目录的用户
/var/spool/cron/ 所有用户存放crontab文件的目录,默认以用户名命令
执行命令#ll /etc/cron[2tab]
cron.d/ cron.daily/ cron.deny cron.hourly/ cron.monthly/ crontab cron.weekly/
案列:
* * * * * cmd //每1分钟执行一次cmd
15,30 * * * * cmd //每小时的第15分和第30分钟执行cmd
15,30 8-11 * * * cmd //每天的8-11点的第15分和第30分钟执行cmd
15,30 8-11 */2 * * cmd //每间隔2天的8-11点的第15分和第30分钟执行cmd
15,30 8-11 * * 1 cmd //每周一的8-11点的第15分和第30分钟执行cmd
30 22 * * * cmd //每天的22:30执行cmd
30 22 1,10,20 * * cmd //每月1,10,20号的22:30执行cmd
30 22 * * 6,0 cmd //每周六和周日的22:30执行cmd
0,30 20-24 * * * cmd //每天20-24点间隔30分钟执行cmd
*/30 20-24 * * * cmd //同上
* */2 * * * /etc/init.d/smb restart //每隔2小时重启smb
0 11 4 * mon-wed cmd //每月4号和每周一到周三的11点执行cmd
0 4 1 jan * cmd //1月1号4点执行cmd
01 * * * * root run-parts /etc/cron.hourly //每小时执行/etc/cron.hourly命令里的脚本
15 3 * * 1-5 find $HOME -name big 2>/dev/null | xargs rm -f //Clean up big files every weekday morning at 3:15 am
0 12 14 2 * mailx john%Happy Birthday!%Time for lunch. //Mail a birthday greeting
#crontab -l # Run the hourly jobs SHELL=/bin/bash PATH=/sbin:/bin:/usr/sbin:/usr/bin MAILTO=root HOME=/root * * * * * touch aabbcc * * * * * ls -al /root >> /root/ls.log #date Wed May 31 11:26:18 CST 2017 #ll aabbcc -rw-r--r--. 1 root root 0 May 31 11:26 aabbcc #ll ls.log -rw-r--r--. 1 root root 7341 May 31 11:26 ls.log #date Wed May 31 11:27:29 CST 2017 #ll aabbcc -rw-r--r--. 1 root root 0 May 31 11:27 aabbcc #ll ls.log -rw-r--r--. 1 root root 9788 May 31 11:27 ls.log #crontab -r #crontab -l no crontab for root #ls /var/spool/cron/
本文出自 “rackie” 博客,请务必保留此出处http://rackie386.blog.51cto.com/11279229/1934303
以上是关于一天一命令-crontab的主要内容,如果未能解决你的问题,请参考以下文章