电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Unix文件備份利用While解決文件等待問(wèn)題

瀏覽:168日期:2024-06-07 13:35:08

前幾天有個(gè)朋友向筆者求助,他說(shuō)他在Unix系統(tǒng)管理的時(shí)候遇到了一個(gè)問(wèn)題。他在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ù)沒(méi)有自動(dòng)進(jìn)行異地備份的功能),然后再將這個(gè)備份文件復(fù)制到異地去。如果備份是確定的,即按照計(jì)劃來(lái)進(jìn)行備份,如每天晚上12點(diǎn)備份,這是好解決的。只需要利用Unix系統(tǒng)自帶的CRON任務(wù)計(jì)劃功能即可以解決。但是現(xiàn)在的問(wè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è)問(wèn)題。這個(gè)思路比較簡(jiǎn)單,即讓操作系統(tǒng)隔一段固定的時(shí)間(如10分鐘)就去檢查一下是否有生成了備份文件。如果生成了的話,則系統(tǒng)就將這個(gè)備份文件移動(dòng)(不是復(fù)制)到異地進(jìn)行備份。

不過(guò)筆者這里要介紹的是另外一種解決方式,即利用while循環(huán)來(lái)解決這個(gè)文件等待的問(wèn)題。其實(shí),這個(gè)文件等待也不是這個(gè)系統(tǒng)工程師遇到的問(wèn)題,而是具有一定的普遍性。如一個(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)程,可以通過(guò)如下的腳本來(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)最基本的東西。

首先,需要直到常見(jiàn)循環(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)限沒(méi)有調(diào)整過(guò))。換句話說(shuō),有時(shí)候系統(tǒng)工程師往往需要換一種角度去考慮問(wèn)題。如按照這個(gè)案例,需要將“文件不存在轉(zhuǎn)換為“文件不可讀。此時(shí)這個(gè)循環(huán)條件語(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í)的鍛煉自己這種能力。

其次需要了解操作語(yǔ)句的編寫技巧。有時(shí)候?yàn)榱藢?shí)現(xiàn)某些特定的需求,往往在while循環(huán)結(jié)構(gòu)內(nèi)部的操作語(yǔ)句部分,不會(huì)寫一些實(shí)際的操作語(yǔ)句。而是將操作語(yǔ)句寫在循環(huán)的外部。如上面這個(gè)案例中,筆者在內(nèi)部的操作語(yǔ)句部分,使用了語(yǔ)句sleep 30。這是什么意思呢?如果結(jié)合整個(gè)While循環(huán)結(jié)構(gòu),他的意思就是,如果條件滿足的話(profile配置文件不可讀,即不存在),則每個(gè)30秒執(zhí)行以下這個(gè)循環(huán)。如果條件不滿足的話(profile配置文件可讀,即存在),則跳出這個(gè)循環(huán),然后執(zhí)行后續(xù)的語(yǔ)句。也就是說(shuō),此時(shí)筆者將真正要執(zhí)行的操作(啟動(dòng)某個(gè)安裝進(jìn)程),放在了循環(huán)的外部。而在循環(huán)內(nèi)部使用sleep 30,用來(lái)控制循環(huán)執(zhí)行的時(shí)間。當(dāng)然,在這個(gè)循環(huán)內(nèi)部也可以寫一些實(shí)際性的操作。如在屏幕上或者安裝日志中顯示一些“找不到配制文件等類似的錯(cuò)誤信息。往往這些類似友好的提示信息,可以提高程序的友好性。類似的處理機(jī)制還有很多。系統(tǒng)工程師需要在日常的工作中注意總結(jié)。另外,如果多看看其他工程師編寫的腳本程序,往往能夠從中獲取不少有價(jià)值性的內(nèi)容。模仿往往是在最短時(shí)間內(nèi)增強(qiáng)自己業(yè)務(wù)能力的捷徑。

最后就是需要注意書寫格式與規(guī)范方面的內(nèi)容。在編寫循環(huán)結(jié)構(gòu)時(shí),無(wú)論是while循環(huán)還是for循環(huán),如果能夠有意識(shí)的采用TAB鍵或者空格鍵,可以明顯的提高代碼的可讀性。如循環(huán)內(nèi)部結(jié)構(gòu)的執(zhí)行語(yǔ)句最好能夠跟do或者done等關(guān)鍵字分行寫,并且采用縮進(jìn)的格式。雖然即時(shí)不遵守這些規(guī)則,腳本程序也沒(méi)有實(shí)質(zhì)性的影響。但是,對(duì)后續(xù)維護(hù)閱讀的時(shí)候,會(huì)增加不少的困難。特別是當(dāng)循環(huán)內(nèi)部語(yǔ)句比較多的時(shí)候。所以對(duì)于這些代碼編寫規(guī)范,系統(tǒng)工程師最好還是需要遵守。畢竟對(duì)于一些復(fù)雜的功能,需要團(tuán)隊(duì)合作才能夠?qū)崿F(xiàn)。如果大家都能夠遵守同一的書寫規(guī)范,那么無(wú)疑可以提高團(tuán)隊(duì)的協(xié)作型。還有就是需要注意語(yǔ)法方面的內(nèi)容,不do后面沒(méi)有分號(hào)結(jié)尾符等等。這些語(yǔ)法性的錯(cuò)誤系統(tǒng)在執(zhí)行時(shí)會(huì)告知,所以問(wèn)題不大。只是會(huì)增加返工的幾率與工作量而已。

三、利用while實(shí)現(xiàn)無(wú)限循環(huán)。

如上面那個(gè)數(shù)據(jù)庫(kù)異地備份的案例,其實(shí)若能夠通過(guò)無(wú)限循環(huán)來(lái)實(shí)現(xiàn)可能會(huì)更加的合適。如讓操作系統(tǒng)每隔30分鐘來(lái)執(zhí)行一次循環(huán)。循環(huán)內(nèi)不能的操作就是先利用if語(yǔ)句來(lái)判斷備份文件是否在30分鐘內(nèi)更新過(guò)。如果有更新的話,就將其復(fù)制或者移動(dòng)到遠(yuǎn)程的服務(wù)器上。不管有沒(méi)有更新,這個(gè)循環(huán)的話,每30分鐘就需要執(zhí)行一次。此時(shí)就需要用到無(wú)限循環(huán)。利用while循環(huán)條件的含義,這個(gè)無(wú)限循環(huán)很容易實(shí)現(xiàn),只需要循環(huán)條件語(yǔ)句設(shè)置為true即可。即while true ; do 操作語(yǔ)句 ;done &。

在這個(gè)循環(huán)結(jié)構(gòu)中,筆者采用true作為循環(huán)條件,其循環(huán)條件永遠(yuǎn)為真,那么操作系統(tǒng)就會(huì)一直循環(huán)下去,直到用戶手工終止。另外需要注意的是,如果循環(huán)語(yǔ)句比較簡(jiǎn)單,可以在同一行中書寫。只是在中間合適的位置(如關(guān)鍵字之前)需要加以分號(hào)來(lái)進(jìn)行識(shí)別。另外,為了避免對(duì)其他進(jìn)程進(jìn)行干擾,最好將這些無(wú)限循環(huán)的操作放置到后臺(tái)運(yùn)行,這可以保障各個(gè)進(jìn)程之間相對(duì)的獨(dú)立性。此時(shí)只需要在done關(guān)鍵字后面加入&符號(hào)即可,就可以告訴操作系統(tǒng)將這個(gè)無(wú)限循環(huán)放入到后臺(tái)運(yùn)行。

不過(guò)在編寫無(wú)限循環(huán)的時(shí)候,需要注意死循環(huán)的發(fā)生。如循環(huán)內(nèi)部的某個(gè)操作比較耗時(shí)。在這個(gè)操作還沒(méi)有完成之前,新的循環(huán)又開(kāi)始了。這久而久之,必將耗盡系統(tǒng)資源。為此,在程序內(nèi)部最好還是需要設(shè)置一些條件,如CPU等資源的使用程度,來(lái)強(qiáng)制結(jié)束無(wú)限循環(huán)。筆者認(rèn)為這是比較安全的處理方式,可以有效的避免無(wú)限循環(huán)影響操作系統(tǒng)性能。;

標(biāo)簽: Unix系統(tǒng)
相關(guān)文章:
主站蜘蛛池模板: 威海防火彩钢板,威海岩棉复合板,威海彩钢瓦-文登区九龙岩棉复合板厂 | 防爆鼓风机-全风-宏丰鼓风机-上海梁瑾机电设备有限公司 | KBX-220倾斜开关|KBW-220P/L跑偏开关|拉绳开关|DHJY-I隔爆打滑开关|溜槽堵塞开关|欠速开关|声光报警器-山东卓信有限公司 | 悬浮拼装地板_篮球场木地板翻新_运动木地板价格-上海越禾运动地板厂家 | 对照品_中药对照品_标准品_对照药材_「格利普」高纯中药标准品厂家-成都格利普生物科技有限公司 澳门精准正版免费大全,2025新澳门全年免费,新澳天天开奖免费资料大全最新,新澳2025今晚开奖资料,新澳马今天最快最新图库 | YAGEO国巨电容|贴片电阻|电容价格|三星代理商-深圳市巨优电子有限公司 | POS机办理_个人POS机免费领取 - 银联POS机申请首页 | 意大利Frascold/富士豪压缩机_富士豪半封闭压缩机_富士豪活塞压缩机_富士豪螺杆压缩机 | 涡轮流量计_LWGY智能气体液体电池供电计量表-金湖凯铭仪表有限公司 | 活动策划,舞台搭建,活动策划公司-首选美湖上海活动策划公司 | 暴风影音| LINK FASHION 童装·青少年装展| 探鸣起名网-品牌起名-英文商标起名-公司命名-企业取名包满意 | POS机官网 - 拉卡拉POS机免费办理|官网在线申请入口 | 气弹簧定制-气动杆-可控气弹簧-不锈钢阻尼器-工业气弹簧-可调节气弹簧厂家-常州巨腾气弹簧供应商 | 免费分销系统 — 分销商城系统_分销小程序开发 -【微商来】 | 滚筒烘干机_转筒烘干机_滚筒干燥机_转筒干燥机_回转烘干机_回转干燥机-设备生产厂家 | 上海租奔驰_上海租商务车_上海租车网-矢昂汽车服务公司 | 升降机-高空作业车租赁-蜘蛛车-曲臂式伸缩臂剪叉式液压升降平台-脚手架-【普雷斯特公司厂家】 | 机制砂选粉机_砂石选粉机厂家-盐城市助成粉磨科技有限公司 | 泰国试管婴儿_泰国第三代试管婴儿_泰国试管婴儿费用/多少钱_孕泰来 | 企小优-企业数字化转型服务商_网络推广_网络推广公司 | 集装袋吨袋生产厂家-噸袋廠傢-塑料编织袋-纸塑复合袋-二手吨袋-太空袋-曹县建烨包装 | 雾度仪_雾度计_透光率雾度仪价格-三恩时(3nh)光电雾度仪厂家 | 耐高温电缆厂家-远洋高温电缆| 成都装修公司-成都装修设计公司推荐-成都朗煜装饰公司 | 庭院灯_太阳能景观灯_草坪灯厂家_仿古壁灯-重庆恒投科技 | 西门子代理商_西门子变频器总代理-翰粤百科 | GEDORE扭力螺丝刀-GORDON防静电刷-CHEMTRONICS吸锡线-上海卓君电子有限公司 | 智能案卷柜_卷宗柜_钥匙柜_文件流转柜_装备柜_浙江福源智能科技有限公司 | 哈希余氯测定仪,分光光度计,ph在线监测仪,浊度测定仪,试剂-上海京灿精密机械有限公司 | 越南专线物流_东莞国际物流_东南亚专线物流_行通物流 | 政府园区专业委托招商平台_助力企业选址项目快速落地_东方龙商务集团 | 磁力去毛刺机_去毛刺磁力抛光机_磁力光饰机_磁力滚抛机_精密金属零件去毛刺机厂家-冠古科技 | 深圳标识制作公司-标识标牌厂家-深圳广告标识制作-玟璟广告-深圳市玟璟广告有限公司 | 非小号行情 - 专业的区块链、数字藏品行情APP、金色财经官网 | 北京开业庆典策划-年会活动策划公司-舞龙舞狮团大鼓表演-北京盛乾龙狮鼓乐礼仪庆典策划公司 | 气动绞车,山东气动绞车,气动绞车厂家-烟台博海石油机械有限公司 气动隔膜泵厂家-温州永嘉定远泵阀有限公司 | 高效节能电机_伺服主轴电机_铜转子电机_交流感应伺服电机_图片_型号_江苏智马科技有限公司 | 整合营销推广|营销网络推广公司|石家庄网站优化推广公司|智营销 好物生环保网、环保论坛 - 环保人的学习交流平台 | 淄博不锈钢,淄博不锈钢管,淄博不锈钢板-山东振远合金科技有限公司 |