返回   ShareGet 社群討論 > ≡ 電腦網路 ≡ > □ -- Unix & Linux

發表新主題 回覆
 
主題工具 顯示模式
  #1  
舊 2005-12-04, 01:27 PM
kazaya 的頭像
原來傷害最深的
 
註冊日期: 2004-05-31
來自: 是那些不肯同你說真話的人
文章: 8,847
給予: 45 | 感謝 222 | 共 123 篇
積分: 25189 | 給分能力: 98
[轉貼] 第七章 Scheduling jobs、backup and system log files

第七章  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...  我們是穿梭在網際網路中的盜版大隊~~
拷貝 拷貝的明天正等著我們~~
就是這樣....喵~~@@
回覆時引用此文章
發表新主題 回覆

書簽

主題工具
顯示模式

發文規則
不可以發表新主題
不可以發表回覆
不可以上傳附件
不可以編輯自己的文章

啟用 BB 代碼
論壇啟用 表情符號
論壇啟用 [IMG] 代碼
論壇禁用 HTML 代碼
Trackbacks are 禁用
Pingbacks are 禁用
Refbacks are 禁用
論壇跳轉


所有時間均為GMT -5。現在的時間是 08:36 PM


Powered by vBulletin® Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
SEO by vBSEO 3.2.0 ©2008, Crawlability, Inc.