曾海蘋
關(guān)鍵詞:Shell Script編程;計(jì)算機(jī)運(yùn)維;國(guó)產(chǎn)操作系統(tǒng)
1 背景與概述
隨著國(guó)家對(duì)加快發(fā)展自主可控戰(zhàn)略高新技術(shù)和重要領(lǐng)域關(guān)鍵核心技術(shù)決策的提出,中國(guó)涌現(xiàn)出了像深度系統(tǒng)、中標(biāo)麒麟、紅旗、UOS 操作系統(tǒng)等一大批優(yōu)秀的國(guó)產(chǎn)操作系統(tǒng)[1]?;谥腥A民族偉大復(fù)興的戰(zhàn)略全局和世界百年未有之大變局“兩個(gè)大局”,立足“兩個(gè)一百年”奮斗目標(biāo)的歷史交匯期,國(guó)際形勢(shì)日益復(fù)雜,為了規(guī)避在科學(xué)技術(shù)上被“卡脖子”,甚至“捅刀子”的安全風(fēng)險(xiǎn),我國(guó)教育、金融等關(guān)系到國(guó)計(jì)民生的行業(yè)正在逐步推進(jìn)使用自主可控的國(guó)芯電腦取代以往使用的“Windows + Intel”架構(gòu)電腦。電腦運(yùn)維部門看重國(guó)芯電腦的穩(wěn)定性、安全性,以及維護(hù)上的靈活性,讓轄內(nèi)用戶多年來在“Windows + Intel”架構(gòu)電腦上形成的使用習(xí)慣可以平穩(wěn)過渡到國(guó)芯電腦上。
2 統(tǒng)信UOS 系統(tǒng)與Shell Script
Linux 作為高效、安全的操作系統(tǒng),主要以服務(wù)器為服務(wù)平臺(tái),屬于現(xiàn)階段服務(wù)器應(yīng)用的主流[2]。近年來,聯(lián)想、華為、方正等國(guó)內(nèi)廠商陸續(xù)推出使用Linux 內(nèi)核操作系統(tǒng)的電腦,例如,國(guó)芯電腦中頗受用戶歡迎的聯(lián)想昭陽N4620Z系列筆記本電腦,采用國(guó)產(chǎn)的兆芯開先KX-6000CPU 芯片[3],其操作系統(tǒng)為統(tǒng)信UOS 系統(tǒng)。統(tǒng)信操作系統(tǒng)UOS(Unity Operating Sys?tem,簡(jiǎn)稱統(tǒng)信UOS /UOS 操作系統(tǒng))是一款流暢方便、安全可靠、軟件生態(tài)相對(duì)完善的中文國(guó)產(chǎn)操作系統(tǒng)[4]。它是統(tǒng)信軟件技術(shù)有限公司、深之度科技等聯(lián)合開發(fā)的一款基于Linux內(nèi)核的國(guó)產(chǎn)操作系統(tǒng)。Shell是該操作系統(tǒng)的用戶界面,作為用戶和內(nèi)核間接口的程序,它允許用戶向操作系統(tǒng)輸入需要執(zhí)行的命令,并把命令送入內(nèi)核去執(zhí)行。
Shell 有自己的編程語言——Shell Script[5](Script 是“腳本”的意思),它有點(diǎn)像早期MS-DOS年代的批處理文件(.bat) ,把一系列命令以一定的語法表達(dá)出來,成為運(yùn)維工程師自動(dòng)化管理的好幫手。ShellScript大多是簡(jiǎn)明的文本,語法也相當(dāng)親和,不但簡(jiǎn)單易學(xué),而且支持跨平臺(tái)使用,通用于各種基于Linux內(nèi)核的操作系統(tǒng),如同為國(guó)產(chǎn)操作系統(tǒng)的銀河麒麟(KylinOS) 。
3 運(yùn)維工作中遇到的問題與解決方法
統(tǒng)信操作系統(tǒng)提供了美觀簡(jiǎn)潔的人機(jī)交互圖像界面,相對(duì)于已有數(shù)十年歷史的Windows系統(tǒng)來說,用戶遇到的問題是使用上的不習(xí)慣,運(yùn)維部門則缺少唾手可得的解決用戶問題的工具。在實(shí)際工作中遇到的問題,通過運(yùn)維工程師的思考與探索,均可通過Shell Script編程,為用戶提供高效便捷的解決方案。
3.1 如何快速獲取本機(jī)網(wǎng)絡(luò)信息
當(dāng)運(yùn)維工程師接到用戶報(bào)障電話的時(shí)候,一般都要詢問用戶電腦的本機(jī)網(wǎng)絡(luò)信息(如主機(jī)名和IP地址),通過這些信息去查閱用戶電腦軟硬件配置和安全控制軟件相關(guān)狀態(tài)等,然后根據(jù)這些信息去定位故障原因,給出解決方案,或者通過遠(yuǎn)程工具軟件登錄到使用該IP地址的電腦上,查看故障現(xiàn)象,解決用戶問題。如果用戶本身是IT相關(guān)的技術(shù)人員,可以進(jìn)入操作系統(tǒng)的終端模式,通過輸入ifconfig命令獲取網(wǎng)絡(luò)信息,但對(duì)大多數(shù)普通用戶而言,這個(gè)方法過于復(fù)雜。工程師可在ifconfig命令的基礎(chǔ)上,用Shell Script編程來獲取所需要的信息,形成一個(gè)專門顯示主機(jī)名和IP 地址的腳本給用戶運(yùn)行,如:圖1的腳本,用grep令去查找過濾ifconfig 命令輸出的文本,得到ip 地址,用hostname命令得到主機(jī)名,然后用notify命令在屏幕上彈出窗口顯示二者的信息。
3.2 清理瀏覽器緩存
辦公自動(dòng)化(Office Automation,簡(jiǎn)稱OA) 等各類管理系統(tǒng),多采用B/S架構(gòu)(Browser/Server,瀏覽器/服務(wù)器模式),其Browser就是指用戶電腦中的瀏覽器。瀏覽器作為用戶日常工作中使用頻率最高的電腦軟件,其數(shù)據(jù)緩存模式大大加快了系統(tǒng)的瀏覽速度,優(yōu)化了使用者的感受。但是,在出現(xiàn)網(wǎng)絡(luò)堵塞、通信開銷無法滿足等輕微故障,且應(yīng)用程序的防呆性設(shè)計(jì)有所欠缺的時(shí)候,在緩存中的不完整或出錯(cuò)的文件會(huì)導(dǎo)致瀏覽器端出現(xiàn)系統(tǒng)顯示錯(cuò)亂、點(diǎn)擊按鈕無反應(yīng)等故障,讓用戶無法繼續(xù)工作。
此時(shí),一般通過手工清理瀏覽器緩存后重啟瀏覽器即可解決問題。但是,正如上述第一點(diǎn)那樣,讓非IT用戶去操作清理緩存步驟較為復(fù)雜。而通過編寫一個(gè)Shell Script,能讓用戶一鍵運(yùn)行,快速解決問題。如圖2所示,先用grep命令對(duì)報(bào)告當(dāng)前所有進(jìn)程狀態(tài)的ps -ef命令輸出的文本做查找過濾,得到瀏覽器的進(jìn)程號(hào)后,關(guān)閉瀏覽器;然后以刪除目錄文件的方式清理瀏覽器緩存;最后彈出窗口告知用戶“清理完畢”并重新打開瀏覽器,讓用戶繼續(xù)工作。
3.3 筆記本電腦的無線Wi-Fi 無法啟動(dòng)
相對(duì)于臺(tái)式機(jī),筆記本電腦具有功耗低、內(nèi)置電池、輕巧便攜等優(yōu)點(diǎn),在移動(dòng)辦公方面有需求的用戶通常會(huì)選擇筆記本電腦。無論是Windows系統(tǒng)的筆記本電腦還是統(tǒng)信UOS系統(tǒng)的筆記本電腦,在有線網(wǎng)絡(luò)切換到無線網(wǎng)絡(luò)的時(shí)候,會(huì)偶發(fā)無線網(wǎng)絡(luò)無法啟動(dòng)的情況,具體表現(xiàn)為屏幕右下角的Wi-Fi圖標(biāo)不出現(xiàn)。
同理,此時(shí)運(yùn)維工程師指導(dǎo)用戶進(jìn)入網(wǎng)絡(luò)管理畫面,用鼠標(biāo)點(diǎn)擊重啟無線網(wǎng)卡,就可以解決問題,但這樣會(huì)耗費(fèi)用戶和運(yùn)維工程師的時(shí)間。通過編寫一個(gè)能讓用戶一鍵運(yùn)行的Shell Script,可使無線網(wǎng)絡(luò)快速恢復(fù)正常工作。如圖3,腳本調(diào)用網(wǎng)絡(luò)管理命令nmcli 修復(fù)無線網(wǎng)絡(luò),之后判斷該命令是否運(yùn)行成功,并彈出窗口告知用戶。
3.4 桌面圖標(biāo)失效
統(tǒng)信UOS系統(tǒng)的應(yīng)用程序在安裝成功后,一般會(huì)在硬盤的用戶主目錄下建立存放本地應(yīng)用配置數(shù)據(jù)和緩存的子目錄,并在用戶打開使用應(yīng)用程序的時(shí)候,實(shí)時(shí)修改這些子目錄里面的文件。如“.cache”和“.local/share”。當(dāng)數(shù)據(jù)傳輸堵塞等原因造成這些文件出錯(cuò)的時(shí)候,應(yīng)用程序就可能運(yùn)行不起來,通常故障表現(xiàn)為“用戶雙擊桌面圖標(biāo)失效”。解決這個(gè)故障的辦法就是手動(dòng)清空這兩個(gè)子目錄,讓應(yīng)用程序在下次打開的時(shí)候再次建立正確的文件。如圖4的腳本,以郵箱應(yīng)用軟件為例,通過“rm -rf”命令,清空“.cache”和“.local/share”里面郵箱子目錄的內(nèi)容,修復(fù)桌面郵箱圖標(biāo)無法正常打開的故障。
4 進(jìn)階探討
4.1 Shell Script 的整合
在用戶遇到問題的時(shí)候,通過各種途徑聯(lián)系上運(yùn)維工程師,工程師診斷問題后為用戶提供解決方案,最后問題得到解決,用戶恢復(fù)正常工作。這個(gè)過程是被動(dòng)且耗時(shí)的。
為了進(jìn)一步提高工作效率,可以把若干常見問題的解決腳本整合在一起,命名為“IT工具集”。在初始安裝系統(tǒng)的時(shí)候推送到用戶桌面,并向用戶宣導(dǎo):“遇到電腦問題先嘗試使用桌面的‘IT工具集”。當(dāng)用戶遇到問題時(shí),打開它查看有無解決方法,如果有,則用戶可自行修復(fù),無須聯(lián)系運(yùn)維工程師,可節(jié)省溝通和診斷時(shí)間。
將上述3.1至3.4四個(gè)例子的Shell Script整合在一起,建立目錄和交互方式。供用戶查看、選擇、運(yùn)行。圖5是集成后的腳本頭部,完成用戶交互界面及目錄列表功能,下面的四個(gè)子功能腳本與上文腳本基本相同,不再一一羅列。
4.2 運(yùn)行權(quán)限的提升
上面討論了使用Shell Script快速解決運(yùn)維工作中常見問題的四個(gè)例子,它們均可在普通用戶的權(quán)限下正常運(yùn)行、解決問題。在統(tǒng)信UOS系統(tǒng)中,有些命令需要超級(jí)用戶權(quán)限才可以執(zhí)行,如:安裝、升級(jí)、卸裝軟件的命令apt。如果用戶直接運(yùn)行此命令,則會(huì)報(bào)錯(cuò)“權(quán)限不足”。此處,就需要為Shell Script 提升權(quán)限。
以上述整合后的Shell Script(文件名為it_tools) 為例說明,步驟如下:
1) 運(yùn)維工程師用su命令切換為超級(jí)用戶root;
2) 將此Shell Script文件放在常用的用戶可執(zhí)行文件存放目錄usr/local/bin下;
3) 來到可讓普通用戶以超級(jí)用戶權(quán)限運(yùn)行可執(zhí)行文件的etc/sudoers.d目錄下,在此新建一個(gè)文本文件it_tools,里面只有一句“%domain\ users ALL=(ALL)NOPASSWD: /usr/local/bin/it_tools”;
4) 在桌面創(chuàng)建“.desktop”快捷方式,如圖6所示,指定快捷方式的名稱為“it工具集”,指定快捷方式的顯示圖標(biāo)為usr/share/icons/first-aid.png,指定快捷方式指向的可執(zhí)行文件的完整路徑為/usr/local/bin/it_tools等。
這樣,普通用戶就可以通過雙擊桌面的“it工具集”圖標(biāo),用超級(jí)用戶權(quán)限來運(yùn)行這個(gè)腳本。
5 結(jié)束語
在日常運(yùn)維工作中,運(yùn)維人員不但要熟悉各種常見問題的解決方法,還要不斷積累、溫故知新,力求用創(chuàng)新的手段去提高工作效率、提升用戶體驗(yàn)。
Shell Script編程提供了快速便捷解決問題的途徑,而且由于其易學(xué)、易用、有趣,能起到拋磚引玉的作用,激發(fā)一線運(yùn)維人員甚至是普通用戶的創(chuàng)作興趣,在各自的權(quán)限范圍內(nèi)編寫腳本來解決問題和完成工作,共同助力國(guó)產(chǎn)操作系統(tǒng)和國(guó)芯電腦的推廣。在市場(chǎng)占有率日益提升后,使相關(guān)企業(yè)在市場(chǎng)利潤(rùn)“反哺”下不斷壯大并加大科研經(jīng)費(fèi)再投入,早日擺脫電腦操作系統(tǒng)等信息化關(guān)鍵核心技術(shù)受制于人的不利局面。