|
#1
| ||||
| ||||
| [轉貼] 第七章 Scheduling jobs、backup and system log files 一. 排程: 1. crontab:定期性、週期性(periodic)的執行特定工作。 套件→crontabs 文件說明:man 1 crontab man 5 crontab man 8 crond (cron) 常駐程式:/usr/sbin/crond (/usr/sbin/cron) cron程式在執行時會讀取 /etc/crontab、/etc/cron.d 及 /var/spool/cron。 cron程式系統預設每分鐘會執行一次。 指令:crontab 使用參數: -e : edit -l : list -r : remove $ crontab –e ( -l , -r) →編輯使用者自己的排程 ( 列出排程、刪除排程 )。 # crontab –u barry –e →編輯使用者barry的排程,root方有權指定user。 編輯內容格式如下: 30 16-18 20 12 * cat /etc/passwd →此六欄位分別為分、時、日、月、星期、執行的排程工作。 其意義是說在十二月二十日下午4、5、6點三十分執行後面的程式,並將結果儲存至/var/spool/mail/barry 的檔案內。 另可用重導方式寫成 cat /etc/passwd>/home/barry/cronfile ,這樣就可以將排程執行的結果放到cronfile內,若cronfile原已有內容存在,則可將 > 改成 >> ,以避免覆蓋掉原來的內容。 若上式寫成 cat /etc/passwd>cronfile,則cronfile會自動產生於 /home/barry底下。 5 10,18 8 * * 程式 →每個月八號早上十點五分及下午六點五分執行排程。 10-30/2 8 * * 5 程式 →每週五早上8點10分、12分、14分、…、30分執行程式。 第五欄位為星期,0和7代表星期日。 # crontab –u barry –l →列出使用者barry的排程。 # crontab –u barry –r →刪除使用者barry的排程。 # crontab –e →編輯root自己的排程。 排程相關檔案: (1) /var/spool/cron←權限為drwx------ cron目錄下為有編排程的user 的檔案,檔案內容為排程而非排程執行結果。當使用者執行crontab指令設定排程時,就會將排程寫入 /var/spool/cron底下的檔案中。 (2) /etc/crontab 系統排程設定檔 以redhat來說,crontab檔案內有/etc/cron.hourly /etc/cron.daily /etc/cron.weekly /etc/cron.monthly等目錄,每個目錄下都是一些scripts檔。所以系統管理者可將欲執行的工作寫成scripts,然後放到這些目錄下,等時間一到,系統就會自動執行。 至於openlinux每天、每週…的排程則是設定在 /etc/cron.d下,包括 Daily、Weekly、Monthly等,可自行參考。 設定檔內容範例: 0 23 * * 5 root cp –a /var/lib/mysql>/test/mysql →其中root代表此排程的執行者。另外當設定完成存檔離開後,不需 重新啟動crond,因系統預設每分鐘會自動執行。 (3) /etc/cron.allow /etc/cron.deny →兩個檔案預設都不存在,此也表示所有人可執行crontab排程工作。 # touch /etc/cron.allow →若檔案內空白,表所有人(含root)都不能執行crontab。若只希望 管理者能使用crontab,其他人不能使用時,只需將root加入此 檔即可。 # touch /etc/cron.deny →將拒絕使用crontab的使用者加入此檔中。 當兩個檔案同時存在時,會先執行cron.allow再執行cron.deny。 (4) /var/log/cron 已執行的排程都會紀錄到這個檔案內。 Openlinux預設此檔不存在,可於 /etc/syslog.conf內設定,後面章節 會說明。 2. at : 於特定時間 (particular time)執行排程一次 (1) at 的時間格式 ˙at 4:30pm 也等於 at 16:30 ˙at now +3minutes (weeks、days、hours、…) ˙at 18:20 10/20/02 也等於 at 18:20 20.10.02 ˙at 4pm +5days ˙at 15:15 tomorrow (2) $ at 10:30pm at>ls –ld /dev > /home/barry/atfile 設定好後按ctrl + d 離開。設定內容若無重導,則與crontab一樣,會將結果放置個人信箱中。 $ at –l → list 等於 $ atq → queue $ at –d 排程編號 → delete 等於 $ atrm 排程編號 $ at –f /tmp/file 16:30 → file 內容為所設定的排程內容。 note:# atq → 可看所有人排程 $ atq → 只能看user 本身的排程 (3) /etc/at.deny /etc/at.allow /etc/at.deny 預設存在,/etc/at.allow 預設不存在,系統是預設所有人可執行at 排程。 若想拒絕特定使用者使用at指令,可將這些使用者寫入at.deny中。 # rm –f /etc/at.deny →將at.deny刪除後,只有root可執行at排程。 若兩個空白檔案都存在,也只有root可執行at排程,因系統會先執行 allow再執行deny。所以想讓特定使用者執行at指令時,可將其寫入 at.allow中。 3.batch:在系統平均負載較低時執行排程。 $ batch 二. data backup stategy (策略): 1. cpio: copy files to and from archives -o: creat a new archive.經常配合find 指令。 -i: extract from a archive. -t: print contents. -F: archive file. Ex: 假設 /home/barry下有隱藏檔及file1.file2.dir等,現就 對其執行備份工作: # find /home/barry | cpio –oF /tmp/file.cpio 或 # find /home/barry | cpio –o > /tmp/file.cpio # cpio –tF /tmp/file.cpio →檢視file.cpio內的清單 註:若備份容量較大時,可考慮使用磁帶機。 /dev/st0 (scsi tape 磁帶機),/dev/ht0為ide type。 練習時也可拿floppy試試-- /dev/fd0。 備份完後,將barry目錄刪除: home# rm –rf barry 最後在任意一個目錄下實施備份還原: # cpio –iF /tmp/file.cpio 也可如下: # cpio –i < /tmp/file.cpio 檢視看看資料是否有還原: barry# ls –a 註: find後面若以絕對路徑表示,則以cpio執行備份還原時,會還原 至原來路徑,像剛剛您備份了/home/barry在/tmp/file.cpio中,現在把barry刪除,然後用root身分在 /etc目錄下作備份還原時,會自動將barry還原至/home/barry目錄下,而tar就無法辦到。 另外cpio經常配合另一顆硬碟或磁帶機作備份。 2. tar: # tar zcvf /dev/fd0 /etc/fstab /var/named # tar zxvf /dev/fd0 3. dd: # dd if=/dev/fd0 of=files bs=512 →以 /dev/fd0代替std input,以files代替std output,其輸入輸出的 block size 為512 bytes。 # dd if=/etc/passwd of=/tmp/testfile bs=1024 # tar zcvf /dev/fd0 /etc/passwd /var/named 再執行 # dd if=/dev/fd0 of=/tmp/tarball bs=512 此時若要看此tarball file的清單,需執行: # tar ztf /tmp/tarball 4. linux在備份時需注意事項: (1) 了解欲備份哪些檔案,如/home./var/spool/mail./var/www 等等。 (2) 備份媒介為何?例如備份至另一顆硬碟、同硬碟不同分割區、CD-ROM、MO(磁光碟機)、磁帶機(ATAPI.SCSI)。 (3) 備份方式: 完全備份還是部分備份。 (4) 備份工具: tar.cpio.dd.…。 (5) 備份頻率。 一般系統需備份檔案有: /etc /home /var/spool/mail /boot /root /usr/local 而最需經常備份的目錄為 /etc,不需備份者 /dev /proc /mnt /tmp 三. System log files 1. /etc/syslog.conf 是syslogd執行程式所執行的主要設定檔,定義著系統的訊息類別所相對應的紀錄檔位置及名稱。 2. syslog.conf內容分三部份 (1) 訊息類別(message type): authpriv (authentication private): client連server時,需經身分認證的訊息。 mail: 紀錄郵件訊息。 kern: 紀錄核心訊息。 cron: 執行排程的訊息。 local7: 開機訊息。 * : 泛指所有訊息類別。 uucp: unix to unix copy protocol. (2) 訊息優先等級(message level): 由高至低順序為: emerg→alert→crit→err or error→warn or warning→notice→info→debug * : 代表所有訊息等級 。 (3) 紀錄檔位置及名稱 (log file location and name): 以下寫法,訊息類別及訊息優先等級間用”.”隔開,而兩訊息類別間用 “;”區隔。 例. authpriv.* /var/log/secure 將client連線server時,需經身分認證的client端連線訊息,紀錄於 /var/log/secure紀錄檔中。 *.emerg * 將所有緊急訊息類別通知每一個人。 local7.* /var/log/boot.log 將開機過程的所有訊息紀錄在 /var/log/boot.log cron.* /var/log/cron 將排程執行紀錄於 /var/log/cron。 kern.info;kern.!err /var/adm/kernel-info 將核心訊息其優先等級在info(含)以上者,紀錄在kernel-info檔案,但不包括err(含)以上訊息等級,即info~warn。 mail.*;mail.!=info /var/log/maillog 除優先訊息等級為info外,其餘郵件訊息紀錄在/var/log/maillog。 *.info;mail.none;authpriv.none;cron.none /var/log/messages 不包括郵件訊息、連接server訊息、排程訊息,其餘所有訊息其優 先等級在info(含)以上者,都紀錄在/var/log/messages。 syslog.conf修改完後記得執行 /etc/rc.d/init.d/syslog restart,比如您在 openlinux下多增加 /var/log/cron的紀錄檔後就要執行restart,接著要執行 # /etc/rc.d/init.d/cron restart,因cron是新增的檔案,所以要讓cron認識他。 3. 紀錄檔對管理者而言非常的重要,由紀錄檔內,可找到系統發生錯誤的 原因。另外像一些網路服務出問題時,也可由此找到答案。最後我們還可 由此得知登入系統的相關資訊,藉此了解登入者的資訊。 四. logrotate: 主程式 /usr/sbin/logrotate 在我們了解紀錄檔的重要性後,不知大家有沒有想過一個問題,系統的紀錄檔每天記載那麼多資訊,會不會哪天把整顆硬碟給塞爆了呢? 答案是否的,因系統會使用logrotate將紀錄檔進行輪替的工作,我們以 /var/log/cron來說,若系統設定最多只能保留四個輪替的檔案,即cron.1~cron.4,則在執行第五次輪替時,cron.4的內容會被擠掉,而不會讓紀錄內容一直累積下去。 1. /etc/logrotate.conf 內容: weekly → 每星期進行一次rotate。 rotate 4 → 最多保留四個輪替檔。 create → 執行rotate後,建立一個新的空檔案。 compress → 輪替後的檔案是否被壓縮。 include /etc/logrotate.d →包含在logrotate.d目錄下的檔案,會主動被讀入 logrotate.conf中。 /var/log/wtmp { monthly creat 0664 root utmp rotate 1 } → /var/log/wtmp為一經編碼過的檔案,需使用last指令來顯示其內容。 {}內意思是說系統對登入檔wtmp每個月進行輪替一次,輪替完後會製造一新的空檔,其權限為0644,檔案擁有者為root,擁有群組為 utmp,且輪替檔案只保留前一個月的備份。 2. 系統已自動將logrotate加入排程中(redhat): /etc/cron.daily/logrotate 內容如下: /usr/sbin/logrotate /etc/logrotate.conf 所以系統每天都會執行logrotate。 Openlinux:/etc/cron.d/Daily/40logrotate,而40logrotate為一soft link, 連結至 /etc/cron.d/scripts.d/logrotate,這個logrotate的內容如下: exec /usr/sbin/logrotate /etc/config.d/logrotate 3. /etc/logrotate.d其下的檔案內容設定若與logrotate.conf有衝突,需以logrotate.d為主,logrotate.d沒寫到的部分才以logrotate.conf為主。 五. 登入的監控 這裡有三個檔案要介紹,他們都是經過編碼,需使用指令去讀取這些檔案的內容。 1. /var/log/lastlog (指令lastlog): 顯示使用者最後登入的時間,同時也將passwd檔案中的user列出,以了解從未登入的user名單。 2. /var/log/utmp或 /var/run/utmp (指令w,who): 顯示目前已經登入的使用者。 3. /var/log/wtmp(指令last): 顯示使用者登入、登出及登入至登出的存續時間。 ˙當使用者登入時,login程式會去讀取lastlog的資料,將這次登入的時間地點寫進去。接著開啟utmp,把登入資料寫入其中,直到使用者登出後,才將資料從utmp中移除。最後開啟wtmp,把使用者在utmp中的資料寫入,而當使用者登出時會再寫一次,只不過這次會把使用者從登入到登出的存續時間寫入。
__________________ 如果您覺得"文章小說討論區"所發的主題不錯 請不要吝嗇 在主題 " 點閱" 及 並給予 發文者一些鼓勵 --------------------------------------------- 為了防止世界被破壞 為了保護世界的和平 貫徹下載與燒錄的邪惡 可愛又迷人的盜版角色 MP3....Program... 我們是穿梭在網際網路中的盜版大隊~~ 拷貝 拷貝的明天正等著我們~~ 就是這樣....喵~~@@ |