日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

Unix文件備份利用While解決文件等待問題

前幾天有個(gè)朋友向筆者求助,他說(shuō)他在Unix系統(tǒng)管理的時(shí)候遇到了一個(gè)問題 。他在Unix系統(tǒng)中部署了一個(gè)數(shù)據(jù)庫(kù)系統(tǒng) 。現(xiàn)在他希望能夠?qū)@個(gè)數(shù)據(jù)庫(kù)實(shí)現(xiàn)異地備份 。他的解決思路是,先利用數(shù)據(jù)庫(kù)自身的功能進(jìn)行本地備份(數(shù)據(jù)庫(kù)沒有自動(dòng)進(jìn)行異地備份的功能),然后再將這個(gè)備份文件復(fù)制到異地去 。如果備份是確定的,即按照計(jì)劃來(lái)進(jìn)行備份,如每天晚上12點(diǎn)備份,這是好解決的 。只需要利用Unix系統(tǒng)自帶的CRON任務(wù)計(jì)劃功能即可以解決 。但是現(xiàn)在的問題是,有時(shí)候這個(gè)備份具有不確定性 。如數(shù)據(jù)庫(kù)管理員有時(shí)候也需要進(jìn)行臨時(shí)的備份,為此他希望對(duì)于這些臨時(shí)備份也能夠自動(dòng)實(shí)現(xiàn)異地備份 。所以,此時(shí)利用cron任務(wù)計(jì)劃功能就無(wú)能為力了 。
一、解決思路 。
針對(duì)這些臨時(shí)性的備份任務(wù),如果少的話,那么可以對(duì)其進(jìn)行手工異地備份 。然后利用cron任務(wù)計(jì)劃執(zhí)行有計(jì)劃的異地備份工作 。如果臨時(shí)性備份比較頻繁,而用戶又確實(shí)對(duì)異地備份的功能比較急切的話,那么就只能夠采用其他折中的處理方式 。筆者下面的這個(gè)解決思路,希望能夠幫助解決這個(gè)問題 。這個(gè)思路比較簡(jiǎn)單,即讓操作系統(tǒng)隔一段固定的時(shí)間(如10分鐘)就去檢查一下是否有生成了備份文件 。如果生成了的話,則系統(tǒng)就將這個(gè)備份文件移動(dòng)(不是復(fù)制)到異地進(jìn)行備份 。
不過筆者這里要介紹的是另外一種解決方式,即利用while循環(huán)來(lái)解決這個(gè)文件等待的問題 。其實(shí),這個(gè)文件等待也不是這個(gè)系統(tǒng)工程師遇到的問題,而是具有一定的普遍性 。如一個(gè)應(yīng)用程序需要從一個(gè)文件中讀取數(shù)據(jù),而這個(gè)文件又是另一個(gè)應(yīng)用程序或者同一個(gè)應(yīng)用程序的不同進(jìn)程所產(chǎn)生的 。為此,必須在另外一個(gè)程序或者進(jìn)程創(chuàng)建完這個(gè)文件之后,原先的應(yīng)用程序才能夠得到順利的運(yùn)行 。所以,如果從程序設(shè)計(jì)的角度,就是需要使用某個(gè)腳本,去偵測(cè)這個(gè)特定的文件是否已經(jīng)成功創(chuàng)建 。如果創(chuàng)建的話,執(zhí)行某個(gè)命令,讓其自動(dòng)調(diào)用某個(gè)程序 。如在實(shí)現(xiàn)無(wú)人值守安裝時(shí),需要一個(gè)參數(shù)文件 。此時(shí)系統(tǒng)工程師可以編寫一個(gè)腳本,先判斷這個(gè)參數(shù)文件是否存在 。如果存在的話,則馬上進(jìn)行安裝 。如果不存在的話,則進(jìn)行等待 。直到這個(gè)配置文件正常建立,然后啟動(dòng)安裝進(jìn)程(此時(shí)系統(tǒng)工程師不需要重新啟動(dòng)腳本程序) 。
二、具體實(shí)現(xiàn) 。
以上介紹的這個(gè)思路,主要是利用while循環(huán)來(lái)實(shí)現(xiàn)的 。利用while循環(huán),操作系統(tǒng)會(huì)重復(fù)的執(zhí)行一組命令,直到控制命令返回一個(gè)假false的狀態(tài)值 。如果要實(shí)現(xiàn)上面這個(gè)無(wú)人值守的安裝進(jìn)程,可以通過如下的腳本來(lái)實(shí)現(xiàn) 。
While [! –r profile.txt] #循環(huán)條件語(yǔ)句
do #循環(huán)操作語(yǔ)句
sleep 30
done
./setup.sh
在編寫這個(gè)腳本的時(shí)候,各個(gè)部分的含義是什么,又有哪些注意事項(xiàng)呢?具體來(lái)說(shuō),系統(tǒng)工程師需要掌握下面的內(nèi)容 。這些是寫好一個(gè)while循環(huán)結(jié)構(gòu)最基本的東西 。
首先,需要直到常見循環(huán)條件語(yǔ)句的書寫 。一般來(lái)說(shuō),任何Unix命令或者test內(nèi)容都可以作為循環(huán)條件 。也就是說(shuō),只要掌握了Unix常用的命令,既可以寫好循環(huán)語(yǔ)句 。話雖然這么說(shuō),但是有時(shí)候?qū)戇@個(gè)循環(huán)語(yǔ)句的時(shí)候,系統(tǒng)工程師往往需要有一定的創(chuàng)意,或者說(shuō)需要有經(jīng)驗(yàn)的積累 。確實(shí),最終的循環(huán)語(yǔ)句都是基本的操作系統(tǒng)命令所組成的 。但是有時(shí)候往往需要對(duì)他們進(jìn)行靈活的組合 。如筆者上面用的這個(gè)循環(huán)條件語(yǔ)句,相對(duì)來(lái)說(shuō)比較簡(jiǎn)單,但是并不一定每個(gè)系統(tǒng)工程師都可以像得到 。筆者這個(gè)! –r profile.txt循環(huán)條件語(yǔ)句的含義,就是不能夠讀某個(gè)文件 。一般情況下建立的文件當(dāng)前用戶都是可讀的 。如果系統(tǒng)判斷不可讀的話,那么百分之百可以確定是這個(gè)文件不存在(只要權(quán)限沒有調(diào)整過) 。換句話說(shuō),有時(shí)候系統(tǒng)工程師往往需要換一種角度去考慮問題 。如按照這個(gè)案例,需要將“文件不存在轉(zhuǎn)換為“文件不可讀 。此時(shí)這個(gè)循環(huán)條件語(yǔ)句就容易寫了 ??上У氖牵簧傧到y(tǒng)工程師缺少的就是這種轉(zhuǎn)換的能力 。這部進(jìn)行需要踏實(shí)的基礎(chǔ),而且還需要一定的創(chuàng)新能力以及相當(dāng)?shù)墓ぷ鹘?jīng)驗(yàn)的積累 。為此筆者建議,要用好Unix操作系統(tǒng)或者Linux操作系統(tǒng),那么在平時(shí)的工作中就要有意識(shí)的鍛煉自己這種能力 。

推薦閱讀