剩余定時任務、第四關練習題、vim快捷鍵補充
作者:George
歸檔:學習筆記
2018/1/4
本章正題:剩余定時任務、第四關練習題、vim快捷鍵補充
1.1 定時任務中-命令或腳本定向到二個位置。(二選一)
情況一:追加到文件 >> /tmp/time.log 2>&1 (相當於>> /tmp/time.log 2>>/tmp/time.log )
註:1. 也可以這麽寫:&>> /tmp/time.log
2. 如果腳本執行錯誤,就會把顯示到屏幕上的錯誤信息追加到這文件中。
3. 如果執行成功屏幕上沒有任何提示,所以就沒有信息寫入文件。
情況二:定向到空
註: 也可以這麽寫:&>/dev/null
1.1.1 如果沒有定向到空或追加到文件,會發生什麽
解:這樣很容易導致硬盤Inode滿了,從而導致服務器不正常。
1)postfix開啟的時候,系統會不斷的給你發郵件
所以會提示:You have new mail in /var/spool/mail/root
註:會導致這個郵件var/spool/mail/root越來越大
2)postfix關閉的時候,會把郵件存放在郵件臨時目錄
郵件臨時目錄:/var/spool/postfix/maildrop/
註:也會占用大量Inode
刪除大量小文件方法:
1. 縮小範圍刪除 ls 1*.txt |xargs rm
2. 全部刪除(文件太多有可能失敗) ls *.txt |xargs rm
3. ls *.txt |xargs -n數字 rm
4. 刪除目錄
創建大量小文件方法:
echo {1..500000}.txt |xargs touch
1.1.2 避免不必要的程序及命令輸出
如:tar zcvf 中的v (顯示詳細過程),可省略
1.1.3 定時任務腳本中的程序文件,盡量使用絕對路徑
1.測試命令
[root@georgekai /]# cd / && tar zcf /tmp/etc-$(date +%F).tar.gz etc/
註:最好進入被打包文件的上一層目錄,使用相對路徑打包
2.寫入腳本中
[root@georgekai /]# echo "/bin/tar zcf etc-$(date +%F).tar.gz etc" > /server/scripts/etc.sh
3.檢查腳本是否可用
[root@georgekai /]# sh /server/scripts/etc.sh
註:測試腳本時,是否會顯示到指定文件,取決於命令的作用是否會顯示到屏幕上。
#tar etc
* * * * * /bin/sh /server/scripts/etc.sh > /dev/null 2>&1
註:sh -x :顯示腳本執行過程 (裏面的+號表示層次)
4.查看日誌或看看是否執行成功
[root@georgekai /]# tail -f /var/log/cron
Jan 4 09:49:02 georgekai CROND[5590]: (root) CMD (/bin/sh /server/scripts/date.sh >> /tmp/time.log 2>&1)
5. 根據實際要求在定時任務中修改時間
#tar et
00 01 * * * /bin/sh /server/scripts/etc.sh > /dev/null 2>&1
1.1.4 定時任務運行腳本的時候(PATH只認識2個路徑:/usr/bin /bin)
如:ifconfig ip 會找不到路徑
註:1. 定時任務運行命令時不影響
2. 只有在定時任務運行腳本時,PATH才只認識2個路徑。
解決方法:
方法一:使用命令的絕對路徑
方法二:PATH在腳本的開頭重新定義一下
將這條命令寫入腳本的開頭:
export PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin
什麽時候用方法2:tomcat
註:請參考http://oldboy.blog.51cto.com/2561410/1541515
方法三:腳本中寫入“ source /etc/profile”
1.1.5 圖形定時任務總結
系統定時任務配置文件:/etc/crontab
用戶定時任務配置文件:/var/spool/cron/root
1.2 第四關練習題
1.2.1 每2個小時打包/etc/services備份到/tmp下
1. 測試命令
[root@georgekai ~]# cd / && tar zcf /tmp/svr.tar.gz etc/services
2. 寫入腳本
[root@georgekai ~]# echo "cd / && tar zcf /tmp/svr.tar.gz etc/services" > /server/scripts/svr.sh
3. 測試腳本
[root@georgekai ~]# sh /server/scripts/svr.sh
[root@georgekai ~]# ll /tmp/
4. 寫入定時任務
[root@georgekai ~]# crontab -e
#backup /etc/services
00 */2 * * * /bin/sh /server/scripts/svr.sh >/dev/null 2>&1
5. 查看日誌和命令執行效果
[root@georgekai ~]# tail -f /var/log/cron
[root@georgekai ~]#ll /tmp/
1.2.2 每天晚上 12 點,打包站點目錄/var/www/html 備份到/data 目錄下(最好每次備份按時間
生成不同的備份包)
1. 測試命令
[root@georgekai /]# cd /var/www/ && tar zcf /data/html-$(date +%F_%H).tar.gz html/
[root@georgekai /]# ls /data/
html-2018-01-04_12.tar.gz
2. 寫入腳本
[root@georgekai /]# echo "cd / && tar zcf /data/html-$(date +%F_%H).tar.gz var/www/html" > /server/scripts/html.sh
3. 測試腳本
[root@georgekai /]# sh /server/scripts/html.sh
[root@georgekai /]# ls /data/
html-2018-01-04_12.tar.gz
4.寫入定時任務測試每分鐘的效果
#backup /var/www/html
* * * * * /bin/sh /server/scripts/html.sh >/dev/null 2>&1
5.查看日誌和測試命令執行的效果
[root@georgekai /]# tail -f /var/log/cron
Jan 4 12:12:01 georgekai CROND[1438]: (root) CMD (/bin/sh /server/scripts/html.sh >/dev/null 2>&1)
[root@georgekai /]# ll /data/
total 4
-rw-r--r--. 1 root root 117 Jan 4 12:13 html-2018-01-04_12.tar.gz
6. 根據實際情況修改時間
#backup /var/www/html
00 00 * * * /bin/sh /server/scripts/html.sh >/dev/null 2>&1
1.2.3 每周 六、日 上午 9:00 和下午 14:00 來老男孩這裏學習(執行程序/server/script/oldboy.sh
代替學習)。
00 09,14 * * * /bin/sh /server/scripts/oldboy.sh > /dev/null 2>&1
1.2.4 .請描述下列路徑的內容是做什麽的?
/etc/sysctl.conf linux內核配置文件
/etc/rc.local 開機自啟的軟件
/etc/hosts 解析主機名與ip的對應關系
/etc/fstab 開機自動掛載
/var/log/secure 用戶登錄信息
1.2.5 請說出下列 grep 正則表達式的含義
^ 以什麽什麽開頭
$ 以什麽什麽結尾
.(點號) 任意一個字符,包括空格
\ 轉義符號
* 前一個字符連續出現0次或0次以上
{n,m} 前一個字符連續最少出現n次,最多出現m次
[^t] 排除帶有t這字符的行
^[^t] 排除以t開頭的行
1.2.6 vi 命令考察,根據中文給出命令
退出保存
wq
退出並強制保存,!為強制的意思
wq!
強制退出,不保存
q!
光標移動到文件的最後一行
G 或:$
光標移動到文件的第一行
gg
從光標所在位置將光標移動到當前行的開頭 ^
從光標所在位置將光標移動到當前行的結尾 $
取消上一次的動作 u
刪除一行 dd
刪除當前行到文件的最後一行 dG
向上搜索 /
向上搜索 ?
vim如何查詢 :help G
:help :wq
:h G
:h :wq
總結:
1. 定時任務與故障案例,沒有定向到空或追加到文件
2. 環境變量故障
如:linux定時任務生產java服務無法定向到空或追加到文件
請參考http://oldboy.blog.51cto.com/2561410/1541515
3. 定時任務練習題
4. vi/vim快捷鍵
剩余定時任務、第四關練習題、vim快捷鍵補充