Linux基础之-定时任务

CentOS计划任务

1.at                 atd
	一次性计划任务

2.crontab   *****    crond
	用户级周期性计划任务,关机不执行

3.anacron
	系统级周期性计划任务,开机后自动执行
	因企业要保证7*24,所以这个应用也不是必须的
	
具有守护进程的程序,查看进程是否开启

方法一:

[root@oldboy ~]# ps aux |grep crond
root        523  0.0  0.0 126284  1620 ?        Ss   10:08   0:00 /usr/sbin/crond -n
root       1690  0.0  0.0   9088   660 pts/0    R+   11:30   0:00 grep --color=auto crond

[root@oldboy ~]# ps aux |grep atd  
root       1692  0.0  0.0   9088   664 pts/0    R+   11:30   0:00 grep --color=auto atd

方法二:

systemctl status crond
systemctl status atd

默认crond是已安装,切自动运行,atd是未安装的
yum install -y at	
systemctl start atd

注意:只有进程启动了,才能提供计划任务的服务功能

crond配置文件详解
vim /etc/crontab
SHELL=/bin/bash                         #通过bash解释命令
PATH=/sbin:/bin:/usr/sbin:/usr/bin      #默认命令路径
MAILTO=root							    #邮件信息发送给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
// *  表示任意的(分、时、日、月、周)时间都执行
// -  表示一个时间范围段, 如5-7点
// ,  表示分隔时段, 如6,0,4表示周六、日、四
// /n 表示每隔n单位时间, 如*/10 每10分钟

00 02 * * * ls      
00 02 1 * * ls      
00 02 14 2 * ls      
00 02 * * 7 ls      
00 02 * 6 5 ls      
00 02 14 * 7 ls     
00 02 14 2 7 ls      
*  02 * * * ls      
*  * * * *  ls       
*  * 14 2 *  ls      
*/5 * * * *  ls     
00 02 * 1,5,8 * ls   
00 02 1-8 * *  ls    
===========================================================
crontab选项
	-l    list    计划任务列表
	-u    user    指定用户
	-e    edit    使用vi编辑计划任务
	-r    remove  清空计划任务

/var/spool/cron/username
计划任务的执行注意事项:
1.命令输出必须要带重定向
2.命令必须要先测试,再写入crontab
3.计划任务中,%必须转义
4.计划任务必须写注释
1.每隔5分钟同步一次系统时间。
yum install -y ntpdate
crontab -e
# sync time
*/5 * * * * /usr/sbin/ntpdate ntp1.aliyun.com &>/dev/null

2.备份/etc/hosts文件,要求每天保留一个副本,每天晚上0点执行。
解题思路:
1.先在命令行测试
cp /etc/hosts /tmp/hosts_$(date +\%F).bak
2.编辑crontab
#backup /etc/hosts
00 00 * * * /usr/bin/cp /etc/hosts /tmp/hosts_$(date +\%F).bak

3.备份/etc/hosts,/etc/rc.local,/var/spool/cron/root文件,要求每天保留一个副本,每天凌晨3点15分执行。
1.先在命令行测试
tar czf /tmp/bak_$(date +\%F).tar.gz /etc/hosts /etc/rc.local /var/spool/cron/root
2.编辑crontab
#backup /etc/hosts,/etc/rc.local,/var/spool/cron/root
15 03 * * * /usr/bin/tar czf /tmp/bak_$(date +\%F).tar.gz /etc/hosts /etc/rc.local /var/spool/cron/root
1.解释下列每行时间含义
a. 0 13,20 * 1,2,3,4,5 *  /bin/sh backup.sh           
b. 0 13,20 1,5 * *        /bin/sh backup.sh
c. * 13,20 * * 1,2,3,4,5  /bin/sh backup.sh     
d. 0 13,20 * * 1,2,3,4,5  /bin/sh backup.sh

2.新建/soft/scripts/httpd.sh文件,并让/soft/scripts/httpd.sh脚本在每天的00:10分执行

3.新建/backup目录,每周一下午5:50将/backup目录下的所有文件打包成 backup.tar.gz

4.书写一个定时任务,每天0点0分把/var/log/nginx下大于7天文件转移到/backup/2018_xx_xx的目录中

5.系统脚本/soft/scripts/which.sh,如何定时每隔7分钟执行一次?

6.如何不小心删除了/var/spool/cron/root文件,该如何恢复。
提示:通过日志文件
打赏

Leave a Comment

电子邮件地址不会被公开。 必填项已用*标注