Linux系统管理-定时任务
1. crond服务管理
crond服务的启动命令:
service crond restart
crond服务开机自启动:
chkconfig crond on
说明:crond服务默认是已经启动和开机自启动的,一般不需要手动设置。
chkconfig | grep crond
查看crond定时任务服务是否为开机自启动
2. crontab定时任务命令
命令格式:crontab [选项]
选项:
-e 编辑定时任务 -l 查询已经设置好的定时任务 -r 删除当前用户所有的定时任务
示例:
crontab -e
进入crontab定时任务编辑界面。默认会用vi编辑器打开你的定时任务。
定时任务的书写格式如下:
* * * * * 命令
说明:
- 第一个*:一个小时中的第几分钟(0-59)
- 第二个*:一天当中的第几个小时(0-23)
- 第三个*:一个月当中的第几天(1-31)
- 第四个*:一年当中的第几个月(1-12)
- 第五个*:一周当中的星期几(0-7,0和7都代表星期日)
*代表任意时间,指定的数值代表具体的时间。
特殊符号 | 含义 |
---|---|
代表任何时间。比如,第一个就代表一小时中每分钟执行一次。 | |
, | 代表不连续的时间范围。 |
- | 代表连续的时间范围。 |
/n | 代表每隔多久执行一次。/10 命令,代表每隔10分钟执行一次。 |
举例说明:
* * * * * 命令
每分钟执行一次命令。
45 22 * * * 命令
在每天的22点45分执行该命令。
0 17 * * 1 命令
在每周一的17点0分执行该命令。
0 5 1,15 * * 命令
在每月1号和15号的凌晨5点0分执行该命令。
40 4 * * 1-5 命令
在每周一到周五的凌晨4点40分执行该命令。
*/10 * * * * 命令
每隔10分钟执行一次命令。
10 * * * * 命令
在每个小时的第10分钟执行一次命令。(每天执行24次)
*/10 4 * * * 命令
在每天的凌晨4点,每隔10分钟执行一次命令。(每天执行6次)
0 0 1,15 * 1 命令
在每月1号和15号、每周一的0点0分都会执行该命令。(合集)
注意:几号和星期几最好不好同时出现,因为他们定义的都是天。
示例:
*/3 * * * * /bin/echo "333" >> /tmp/test
每隔三分钟,将字符串333追加到/tmp/test文件中。
也可这样写
*/3 * * * * echo "333" >> /tmp/test
5 5 * * 2 /sbin/shutdown -r now
每周二的凌晨5点5分,重启计算机。
* * * * * /root/sh/autobak.sh
每分钟执行一次autobak.sh脚本文件。
举例:创建一个定时备份配置文件目录/etc的定时任务。
首先,需要写一个备份配置文件目录的脚本文件
vi etcbak.sh
内如如下:
#!/bin/bash
date=$(date +\%y\%m\%d)
size=$(du -sh /etc)
echo "Date: $date" > /tmp/bakinfo.txt
echo "Data size: $size" >> /tmp/bakinfo.txt
cd /tmp
tar -zcf etc_bak_$date.tar.gz /etc /tmp/bakinfo.txt &>/dev/null
rm -rf /tmp/bakinfo.txt
注意:备份文件名多以日期命名。而日期命令date +\%y\%m\%d和date +%y%m%d在命令行中都可以格式化输出日期,但是在定时任务crontab中,%有特殊含义,估这里必须转义。
保存退出后,给该脚本赋予执行权限:
chmod 755 etcbak.sh
最后,写入crontab定时任务:
crontab -e
30 3 * * * /root/sh/etcbak.sh
在每天的凌晨3点30分,执行备份。
说明:crontab定时任务能够设置的最小时间是分钟。
还没有评论,来说两句吧...