linux常用命令-crontab 定时任务
原创
©著作权归作者所有:来自51CTO博客作者东山富哥的原创作品,请联系作者获取转载授权,否则将追究法律责任
1.crontab 定时任务简介
通过crontab 命令,我们可以在固定的间隔时间执行指定的系统指令或 shell script脚本。
时间间隔的单位可以是分钟、小时、日、月、周及以上的任意组合。
这个命令非常适合周期性的日志分析或数据备份等工作。
2.crontab 命令格式
crontab [-u user] file crontab [-u user] [ -e | -l | -r ]
2.1. crontab [-u user]
-u user:用来设定某个用户的crontab服务;
2.2. file
file是命令文件的名字,表示将file做为crontab的任务列表文件并载入crontab。
如果在命令行中没有指定这个文件,
crontab命令将接受标准输入(键盘)上键入的命令,并将它们载入crontab
2.3.-e
2.3.1.命令简介
-e:编辑某个用户的crontab文件内容。如果不指定用户,则表示编辑当前用户的crontab文件
跟vim/vi编辑差不多
2.3.2.使用样例
[weblogic@10_56_81_179 server_81_179]$ crontab -e
58 23 * * * sh /weblogic/webapp/7_third_dat/server_7003/backup.sh
...
其中backup.sh为定时任务要执行的脚本
(在/weblogic/webapp/7_third_dat/server_7003目录下面)
backup.sh文件具体内容如下
#!/bin/bash
#1.设置原始的日志文件存放目录
LOG_HOME="/usr/local/software/nginx/logs/"
#2.设置备分文件名称的格式
LOG_PATH_BAK="$(date -d yesterday +%Y%m%d%H%M)".access.log
#3.将原日志文件按照备份文件名称格式重命名日志文件
mv ${LOG_HOME}/access.log ${LOG_HOME}/${LOG_PATH_BAK}.log
#4.重新创建原日志文件
touch ${LOG_HOME}/access.log
#5.向nginx主进程发信号重新打开日志
kill -USR1 `cat /usr/local/software/nginx/logs/nginx.pid`
2.4.-l
2.4.1. 命令简介
-l:显示某个用户的crontab文件内容,如果不指定用户,则表示显示当前用户的crontab文件内容。
2.4.2.使用样例
[weblogic@10_56_81_179 server_81_179]$ crontab -l
58 23 * * * sh /weblogic/webapp/7_third_dat/server_7003/backup.sh
[weblogic@10_56_81_179 server_81_179]$
2.5.-r
2.5.1 命令简介
r:从/var/spool/cron目录中删除某个用户的crontab文件,
如果不指定用户,则默认删除当前用户的crontab文件。
2.5.2.使用样例
该命令一般不要使用
[weblogic@10_56_81_179 server_81_179]$ crontab -r
2.6.-i
-i:在删除用户的crontab文件时给确认提示。
3.crontab 定时任务的时间格式
3.1.命令简介
3.1.1.通用字符
分 时 日 月 星期 要运行的命令
第1列分钟0~59
第2列小时0~23(0表示子夜)
第3列日1~31
第4列月1~12
第5列星期0~7(0和7表示星期天)
第6列要运行的命令
3.1.2.特殊字符
3.1.2.1 *(星号)
代表任何时刻都接受的意思。举例来说,范例一内那个日、月、周都是*,
就代表着不论何月、何日的礼拜几的12:00都执行后续命令的意思。
3.1.2.1 ,(逗号)
代表分隔时段的意思。举例来说,如果要执行的工作是3:00与6:00时,就会是:
0 3,6 * * * command
时间还是有五列,不过第二列是 3,6 ,代表3与6都适用
3.1.2.3 -(减号)
8点到12点之间的每小时的20分都进行一项工作:
20 8-12 * * * command
仔细看到第二列变成8-12.代表 8,9,10,11,12
3.1.2.4 /n(斜线)
*/5 * * * * command
用*与/5来搭配,也可以写成0-59/5,意思相同
3.2 使用样例
###实例1:每1分钟执行一次myCommand
###实例2:每小时的第3和第15分钟执行
###实例3:在上午8点到11点的第3和第15分钟执行
###实例4:每隔两天的上午8点到11点的第3和第15分钟执行
###实例5:每周一上午8点到11点的第3和第15分钟执行
###实例6:每晚的21:30重启smb
30 21 * * * /etc/init.d/smb restart
###实例7:每月1、10、22日的4 : 45重启smb
45 4 1,10,22 * * /etc/init.d/smb restart
###实例8:每周六、周日的1 : 10重启smb
10 1 * * 6,0 /etc/init.d/smb restart
###实例9:每天18 : 00至23 : 00之间每隔30分钟重启smb
0,30 18-23 * * * /etc/init.d/smb restart
###实例10:每星期六的晚上11 : 00 pm重启smb
0 23 * * 6 /etc/init.d/smb restart
###实例11:每一小时重启smb
* */1 * * * /etc/init.d/smb restart
实例12:晚上11点到早上7点之间,每隔一小时重启smb
0 23-7 * * * /etc/init.d/smb restart