1.1 定时任务
1.1.1 选择
1.1.1.1 Linux下Crontab文件,每个域之间用空格分割,其排列如下正确的是:B
A.MIN HOUR DAY MONTH YEAR COMMAND
B.MIN HOUR DAY MONTH DAYOFWEEK COMMAND
C.COMMAND HOUR DAY MONTH DAYOFWEEK
D.COMMAND YEAR MONTH DAY HOUR MIN
1.1.1.2 编辑root任务调度命令 :C
A.crontab -l
B.crontab -E
C.vim /var/spool/cron/root
1.1.1.3 cron是一个linux下的定时执行工具,可以在无需人工干预的情况下运行作业,其基本格式为:_* * * * * command____,其中第五个星号代表C
A.分钟
B.小时
C.星期
D.日期
1.1.1.4 以下crontab命令在何时会执行(D)
05 01 * * 1 sh /data/nginx_log/ftp_nginxlog.sh >/dev/null/ 2>&1
A.每天一点五分
B.每天五点一分
C.每星期一五点一分
D.每星期一一点五分
1.1.2 填空
1.1.2.1 由crontab命令定制(crontab -e)执行test用户家目录下的程序sum的格式为:* * * * /home/test/sun
1.1.2.2 Linux系统计划任务编辑命令crontab -e 或vim /var/spool/cron/root
1.1.3 简答
1.1.3.1 以下字段可能和哪个服务有关,表示什么意思
*/5 * * * * ping -c 100 www.wanmei.com > /root/network.log 2>&1
服务:定时任务与域名解析
意思:每个五分钟ping万维网100次;不管是否连通都将结果定向到/root/network.log文件中
1.1.3.2 如何备份生产环境的定时任务?(生产环境的定时任务默认跑在root用户下)
生产环境:线上环境,用户正在使用的环境
备份:/var/spool/cron/或/var/spool/cron/root
1.1.3.3 写一条计划任务,在每天晚上的3:05分执行脚本/usr/script/tongji.sh
[root@oldboyedu59 ~]# crontab -e
#sh /usr/script/tongji.sh by ylz at 2019-4-28
05 03 * * * sh /usr/script/tongji.sh >>/tmp/sh.log 2>&1
1.1.3.4 crontab里0 2 * * 1 /data/postmall/shell/a.sh表示什么含义?
表示每周一凌晨2点整执行脚本/data/postmall/shell/a.sh
1.1.3.5 写一条crontab条目,每天的22点钟删除/test/下的所有文件
[root@oldboyedu59 ~]# crontab -e
# rm /test/* by ylz at 2019-4-28
00 22 * * * rm /test/* >>/tmp/sh.log 2>&1
1.1.3.6 某系统管理员需每天做一定的重复工作,请按照下列要求,编织一个解决方案:
(1) 在下午4:50删除/abc目录下的全部子目录和全部文件
[root@oldboyedu59 ~]# crontab -e
# rm /abc/* by ylz at 2019-4-28
50 16 * * * rm -rf /abc/* >>/tmp/sh.log 2>&1
(2) 每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz
[root@oldboyedu59 ~]# crontab -e
#bak /data by ylz at 2019-4-28
50 17 * * 1 tar zcf /tmp/backup-`date +\%F`.tar.gz /root/ >>/tmp/sh.log 2>&1
1.1.3.7 在每周6的凌晨3:15执行/home/shell/collect.pl,并将标准输出和标准错误输出到/dev/null设备,请写出crontab中的语句
.pl perl 脚本 用prel运行
.py python 脚本 用Python 执行
[root@oldboyedu59 ~]# crontab -e
#/home/shell/collect.pl by ylz at 2019-4-28
15 03 * * 6 prel /home/shell/collect.pl >/dev/mull 2>&1
1.1.3.8 设计一个shell程序,每月第一天执行
假设这个shell程序脚本为shell.sh
00 00 1 * * sh shell.sh >>/tmp/sh.log 2>&1
1.1.3.9 有一个/opt/backup.sh脚本,如何在10月的每天早上06到18每3小时执行并在13点单独执行一次。
[root@oldboyedu59 ~]# crontab -e
#sh /opt/backup.sh by ylz at 2019-4-28
00 06-18/3,13 * 10 * sh /opt/backup.sh >>/tmp/sh.log 2>&1
1.1.3.10每个月的一号,零点十五执行脚本/usr/bin/httpd.sh,如何实现?
[root@oldboyedu59 ~]# crontab -e
#sh /usr/bin/httpd.sh by ylz at 2019-4-28
15 00 1 * * sh /usr/bin/httpd.sh >>/tmp/sh.log 2>&1
1.1.3.11在11月份内,每天的早上6点到12点中,每隔2小时执行一次/ust/bin/httpd.sh 怎么实现
[root@oldboyedu59 ~]# crontab -e
#sh /usr/bin/httpd.sh by ylz at 2019-4-28
00 06-12/2 * 11 * sh /usr/bin/httpd.sh >>/tmp/sh.log 2>&1
1.1.3.12linux服务器,如何实现每天早上5点重启
[root@oldboyedu59 ~]# crontab -e
#reboot Linux by ylz at 2019-4-28
00 05 * * * /sbin/reboot >>/tmp/sh.log 2>&1
1.1.3.13在11月份每天早晨6点到10点 每隔两个小时 执行/usr/bin/httpd.sh
[root@oldboyedu59 ~]# crontab -e
#sh /usr/bin/httpd.sh by ylz at 2019-4-28
00 06-10/2 * 11 * sh /usr/bin/httpd.sh >>/tmp/sh.log 2>&1
1.1.3.14/var/www/html/是网站的发布目录。如何每天凌晨0点30对其进行自动备份。写出操作步骤?
将打包压缩文件命令:tar zcf /tmp/www.bak-
date +%F
.tar.gz /var/www/html/ 写入脚本/server/scripts/bak-www.sh中
[root@oldboyedu59 ~]# crontab -e
#bakwww by ylz at 2019-4-28
30 00 * * * sh /server/scripts/bak-www.sh >>/tmp/bakwww.log 2>&1
1.1.3.15用一普通用户想在每周日零点零分定期备份/user/backup 到 /tmp 目录下,该用户应如何做?
crontab -u oldboy -e 然后输入备份内容
1.1.3.16Unix系统上需要创建以下crontab定时任务:在每周5的凌晨1:10执行命令,将当时系统中含有“asiainfo” 关键字的进程信息查询处理,并追加记录到/progress.log文件中
[root@oldboyedu59 ~]# crontab -e
#ps by ylz at 2019-4-28
10 01 * * 5 ps aux |grep 'asiainfo' >>/progress.log 2>&1
1.1.3.17在每个月的第一天备份并压缩/etc目录下的所有内容,存放在/root/backup 目录里,且文件名为如下形式yymmdd_etc,yy为年,mm为月,dd为日。
2.书写脚本
oot@oldboyedu59 ~]# vim /server/scripts/bak-root.sh
▽
#!bash
tar zcf /root/backup/`date +%Y%m%d`_etc /etc/
[root@oldboyedu59 ~]# sh -x /server/scripts/bak-etct.sh
++ date +%Y%m%d
+ tar zcf /root/backup/20190428_etc /root/
tar: Removing leading `/' from member names
[root@oldboyedu59 /tmp]# tar xf /root/backup/20190428_etc
[root@oldboyedu59 /tmp]# ll
dr-xr-x--- 3 root root 236 Apr 28 16:24 etc
-rw-r--r-- 1 root root 23901 Apr 28 16:26 20190428_etc
(2)写入定时任务
[root@oldboyedu59 ~]# crontab -e
#baketc by ylz at 2019-4-28
00 00 01 * * sh /server/scripts/bak-etct.sh >>/tmp/baketc.log 2>&1
1.1.3.18说一下crontab的配置,尽可能多的写出来
1.在/etc/crontab下设置,指定用户名的
(1)使用vim /etc/crontab 进入配置文件;在最后一行上加上
(2)
* * * * * 用户名 命令/脚本 定向到文件或黑洞
(3)重启/etc/crontab 生效
2.使用命令crontab -e ;不用指定用户名
(1)使用命令crontab -e 进入
(2)写入
* * * * * 命令/脚本 定向到文件或黑洞
(3)wq保存退出
(4)查看是否有上面脚本的执行权限;还要看脚本里面的涉及的操作文件是否有权限
(5)重启crontab,使配置生效
1.1.3.19以下字段可能和那个服务有关,表示什么意思
*/5 * * * * ping -c 100 ue.game.com > /root/network.log 2>&1
定时任务
意思:每个五分钟ping ue.game.com;不管是否连通都将结果定向到/root/network.log文件中
1.1.3.20/var/www/html/是网站的发布目录。如何每天凌晨0点30对其进行自动备份,写出操作步骤
将打包压缩文件命令:tar zcf /tmp/www.bak-
date +%F
.tar.gz /var/www/html/ 写入脚本/server/scripts/bak-www.sh中
[root@oldboyedu59 ~]# crontab -e
#bakwww by ylz at 2019-4-28
30 00 * * * sh /server/scripts/bak-www.sh >>/tmp/bakwww.log 2>&1
1.1.3.21请写出一条计划任务,每天将文件倒数1000行内容在10:00整的时候追加到/tmp的list文件内
假设这个文件为oldboy.txt
[root@oldboyedu59 ~]# crontab -e
#zhuijia by ylz at 2019-4-28
00 10 * * * tail -1000 oldboy.xtx >>/tmp/list >>/tmp/tailold.log 2>&1
1.1.3.22如何稳定(固定)执行计划
1.定时任务服务是否运行:
a)当前任务是否运行
[root@oldboyedu59 ~]# systemctl is-active crond
active
[root@oldboyedu59 ~]# ps -ef |grep 'crond'
root 6816 1 0 Apr28 ? 00:00:00 /usr/sbin/crond -n
root 10518 10384 0 10:02 pts/1 00:00:00 grep --color=auto crond
b)定时任务是否开机自启动
[root@oldboyedu59 ~]# systemctl is-enabled crond
enabled
2.确保rsyslog是否运行(系统日志服务)
[root@oldedu59 ~]# systemctl is-active rsyslog
active
[root@oldedu59 ~]# systemctl is-enabled rsyslog
enabled
3.书写格式是否规范
1.1.3.23每天晚上12点打包备份/etc/目录到/tmp下面
(1)命令行测试
[root@oldedu59 ~]#tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc/
tar: Removing leading `/' from member names
[root@oldedu59 ~]# ll etc-2019-04-28.tar.gz
-rw-r--r-- 1 root root 10213180 Apr 28 09:53 etc-2019-04-28.tar.gz
[root@oldedu59 /tmp]# tar xf /backup/etc-2019-04-28.tar.gz
(2)书写脚本
[root@oldboyedu59 ~]# vim /server/scripts/+7etc.sh
#!/bin/bash
tar zcf /backup/etc-`date +%F_%w`.tar.gz /etc/ >/dev/null 2>&1
rm -f `find /backup/ -type f -mtime +7 ! -name '*1_*'` >/dev/null 2>&1
(3)测试脚本
[root@oldboyedu59 ~]# ll /backup/
total 9980
-rw-r--r-- 1 root root 0 Apr 15 22:34 etc-2019-04-15-1_tar.gz
-rw-r--r-- 1 root root 10216366 Apr 28 20:34 etc-2019-04-28_0.tar.gz
[root@oldboyedu59 ~]# tail /var/log/cron
Apr 28 20:31:01 oldboyedu59 CROND[10219]: (root) CMD (sh /server/scripts/etc-bank.sh)
Apr 28 20:32:01 oldboyedu59 CROND[10227]: (root) CMD (sh /server/scripts/etc-bank.sh)
Apr 28 20:33:01 oldboyedu59 CROND[10241]: (root) CMD (sh /server/scripts/etc-bank.sh)
(4)写入任务;改为每分钟先检查
[root@oldedu59 ~]# #写入定时任务,改为每分钟进行检查
[root@oldedu59 ~]# crontab -e
#show time by ylz at 20190426
#*/2 * * * * date >>/tmp/time.log
#beifeng by ylz at 2019-4-28
* * * * * sh /server/scripts/bak-etc.sh
[root@oldedu59 ~]# tail -f /var/log/cron(看日志 /var/log/cron)
[root@oldedu59 ~]# ll /tmp/etc-2019-04-28.tar.gz (看结果)
-rw-r--r-- 1 root root 5341184 Apr 28 10:22 /tmp/etc-2019-04-28.tar.gz
(5)写入定时任务
[root@oldedu59 ~]# crontab -e
#show time by ylz at 20190426
#*/2 * * * * date >>/tmp/time.log 2>&1
#beifeng by ylz at 2019-4-28
00 00 * * * sh /server/scripts/bak-etc.sh >/dev/null 2>&1
[root@oldedu59 ~]# cat /var/log/cron
[root@oldedu59 ~]# ll /tmp/etc-2019-04-28.tar.gz
-rw-r--r-- 1 root root 5341184 Apr 28 10:22 /tmp/etc-2019-04-28.tar.gz
1.1.3.24每天晚上12点打包备份/etc/目录到/backup 删除7天之前的备份
挑战:
1.每天晚上12点打包备份/etc/目录到/backup 删除7天之前的备份 但是要保留每周1的备份
(1)命令行测试
[root@oldboyedu59 ~]# rm -f `find /root/ -type f -mtime +7 ! -name '*1_*'`
[root@oldboyedu59 ~]# ll
total 24
-rw-r--r-- 1 root root 0 Apr 15 22:34 etc-2019-04-15-1_tar.gz
(2)书写脚本
▽root@oldedu59 ~]# #书写脚本
[root@oldedu59 ~]# mkdir -p /server/scripts
[root@oldedu59 ~]# cat /server/scripts/bak-etc.sh
cat: /server/scripts/bak-etc.sh: No such file or directory
[root@oldedu59 ~]# vim /server/scripts/bak-etc.sh
#!/bin/bash
tar zcf /tmp/etc-$(date +%F).tar.gz /etc/
rm -f `find /root/ -type f -mtime +7 -name 'etc*'`
(3)测试脚本
[root@oldedu59 ~]# cat /server/scripts/bak-etc.sh
#!/bin/bash
tar zcf /tmp/etc-$(date +%F).tar.gz /etc/
[root@oldedu59 ~]# sh /server/scripts/bak-etc.sh
tar: Removing leading `/' from member names
[root@oldedu59 ~]# ll /tmp/etc-2019-04-28.tar.gz
-rw-r--r-- 1 root root 10213180 Apr 28 09:57 /tmp/etc-2019-04-28.tar.gz
(4)写入任务;改为每分钟先检查
[root@oldedu59 ~]# #写入定时任务,改为每分钟进行检查
[root@oldboyedu59 ~]# crontab -e
* * * * * sh /server/scripts/+7etc.sh >>/tmp/bak.root 2>&1
(5)写入定时任务
[root@oldboyedu59 ~]# crontab -e
00 00 * * * sh /server/scripts/+7etc.sh >>/tmp/bak.root 2>&1
终极挑战:
1.每天晚上12点打包备份/etc/目录到/backup/ip地址命名目录 删除7天之前的备份 但是要保留每周1的备份
/backup/10.0.0.200
(1)书写脚本
▽root@oldedu59 ~]# #书写脚本
[root@oldedu59 ~]# vim /server/scripts/bak-etc.sh
#!/bin/bash
tar zcf /tmp/etc-$(date +%F).tar.gz /etc/
rm -f `find /root/ -type f -mtime +7 ! -name '*1_*'`
(2)定时任务
[root@oldboyedu59 ~]# crontab -e
00 00 * * * sh /server/scripts/bak-etc.sh >>/tmp/bak.root 2>&1