1.1 定時任務(wù)
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任務(wù)調(diào)度命令 :C
A.crontab -l
B.crontab -E
C.vim /var/spool/cron/root
1.1.1.3 cron是一個linux下的定時執(zhí)行工具,可以在無需人工干預(yù)的情況下運行作業(yè)浩村,其基本格式為:_* * * * * command____,其中第五個星號代表C
A.分鐘
B.小時
C.星期
D.日期
1.1.1.4 以下crontab命令在何時會執(zhí)行(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)執(zhí)行test用戶家目錄下的程序sum的格式為:* * * * /home/test/sun
1.1.2.2 Linux系統(tǒng)計劃任務(wù)編輯命令crontab -e 或vim /var/spool/cron/root
1.1.3 簡答
1.1.3.1 以下字段可能和哪個服務(wù)有關(guān),表示什么意思
*/5 * * * * ping -c 100 www.wanmei.com > /root/network.log 2>&1
服務(wù):定時任務(wù)與域名解析
意思:每個五分鐘ping萬維網(wǎng)100次占哟;不管是否連通都將結(jié)果定向到/root/network.log文件中
1.1.3.2 如何備份生產(chǎn)環(huán)境的定時任務(wù)心墅?(生產(chǎn)環(huán)境的定時任務(wù)默認跑在root用戶下)
生產(chǎn)環(huán)境:線上環(huán)境,用戶正在使用的環(huán)境
備份:/var/spool/cron/或/var/spool/cron/root
1.1.3.3 寫一條計劃任務(wù)榨乎,在每天晚上的3:05分執(zhí)行腳本/usr/script/#sh
[root@oldboyedu59 ~]# crontab -e
#sh /usr/script/#sh by ylz at 2019-4-28
05 03 * * * sh /usr/script/#sh >>/tmp/sh.log 2>&1
1.1.3.4 crontab里0 2 * * 1 /data/postmall/shell/a.sh表示什么含義怎燥?
表示每周一凌晨2點整執(zhí)行腳本/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 某系統(tǒng)管理員需每天做一定的重復(fù)工作蜜暑,請按照下列要求桌粉,編織一個解決方案:
(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執(zhí)行/home/shell/collect.pl财喳,并將標(biāo)準(zhǔn)輸出和標(biāo)準(zhǔn)錯誤輸出到/dev/null設(shè)備吸奴,請寫出crontab中的語句
.pl perl 腳本 用prel運行
.py python 腳本 用Python 執(zhí)行
[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 設(shè)計一個shell程序洞坑,每月第一天執(zhí)行
假設(shè)這個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小時執(zhí)行并在13點單獨執(zhí)行一次拙毫。
[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每個月的一號依许,零點十五執(zhí)行腳本/usr/bin/httpd.sh,如何實現(xiàn)缀蹄?
[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月份內(nèi)峭跳,每天的早上6點到12點中,每隔2小時執(zhí)行一次/ust/bin/httpd.sh 怎么實現(xiàn)
[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服務(wù)器缺前,如何實現(xiàn)每天早上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點 每隔兩個小時 執(zhí)行/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/是網(wǎng)站的發(fā)布目錄蛀醉。如何每天凌晨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 目錄下拯刁,該用戶應(yīng)如何做?
crontab -u oldboy -e 然后輸入備份內(nèi)容
1.1.3.16Unix系統(tǒng)上需要創(chuàng)建以下crontab定時任務(wù):在每周5的凌晨1:10執(zhí)行命令逝段,將當(dāng)時系統(tǒng)中含有“asiainfo” 關(guān)鍵字的進程信息查詢處理垛玻,并追加記錄到/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目錄下的所有內(nèi)容逸绎,存放在/root/backup 目錄里,且文件名為如下形式y(tǒng)ymmdd_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)寫入定時任務(wù)
[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下設(shè)置参淹,指定用戶名的
(1)使用vim /etc/crontab 進入配置文件醉锄;在最后一行上加上
(2)
* * * * * 用戶名 命令/腳本 定向到文件或黑洞
(3)重啟/etc/crontab 生效
2.使用命令crontab -e ;不用指定用戶名
(1)使用命令crontab -e 進入
(2)寫入
* * * * * 命令/腳本 定向到文件或黑洞
(3)wq保存退出
(4)查看是否有上面腳本的執(zhí)行權(quán)限浙值;還要看腳本里面的涉及的操作文件是否有權(quán)限
(5)重啟crontab恳不,使配置生效
1.1.3.19以下字段可能和那個服務(wù)有關(guān),表示什么意思
*/5 * * * * ping -c 100 ue.game.com > /root/network.log 2>&1
定時任務(wù)
意思:每個五分鐘ping ue.game.com开呐;不管是否連通都將結(jié)果定向到/root/network.log文件中
1.1.3.20/var/www/html/是網(wǎng)站的發(fā)布目錄烟勋。如何每天凌晨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請寫出一條計劃任務(wù)筐付,每天將文件倒數(shù)1000行內(nèi)容在10:00整的時候追加到/tmp的list文件內(nèi)
假設(shè)這個文件為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如何穩(wěn)定(固定)執(zhí)行計劃
1.定時任務(wù)服務(wù)是否運行:
a)當(dāng)前任務(wù)是否運行
[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)定時任務(wù)是否開機自啟動
[root@oldboyedu59 ~]# systemctl is-enabled crond
enabled
2.確保rsyslog是否運行(系統(tǒng)日志服務(wù))
[root@oldedu59 ~]# systemctl is-active rsyslog
active
[root@oldedu59 ~]# systemctl is-enabled rsyslog
enabled
3.書寫格式是否規(guī)范
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)寫入任務(wù)卵惦;改為每分鐘先檢查
[root@oldedu59 ~]# #寫入定時任務(wù),改為每分鐘進行檢查
[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 (看結(jié)果)
-rw-r--r-- 1 root root 5341184 Apr 28 10:22 /tmp/etc-2019-04-28.tar.gz
(5)寫入定時任務(wù)
[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天之前的備份
挑戰(zhàn):
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)寫入任務(wù)瓦戚;改為每分鐘先檢查
[root@oldedu59 ~]# #寫入定時任務(wù)沮尿,改為每分鐘進行檢查
[root@oldboyedu59 ~]# crontab -e
* * * * * sh /server/scripts/+7etc.sh >>/tmp/bak.root 2>&1
(5)寫入定時任務(wù)
[root@oldboyedu59 ~]# crontab -e
00 00 * * * sh /server/scripts/+7etc.sh >>/tmp/bak.root 2>&1
終極挑戰(zhàn):
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)定時任務(wù)
[root@oldboyedu59 ~]# crontab -e
00 00 * * * sh /server/scripts/bak-etc.sh >>/tmp/bak.root 2>&1