国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Linux > 正文

shell腳本學習指南[五](Arnold Robbins & Nelson H.F. Beebe著)

2019-10-26 18:39:26
字體:
來源:轉載
供稿:網友

作者告訴我們:到目前為止基礎已經搞定,可以將前邊所學結合shell變成進軍中等難度的任務了。激動的要哭了,終于看到本書結束的曙光了 T T 。碼字比碼代碼還辛苦。不過令人興奮的是立刻就學以致用了,花了一天半的時間處理了一個3.8G的服務器日志文件,你妹啊,破電腦內存才2G。不過切割化小然后寫了幾個awk文件和sh文件按規則處理合并,算是搞定了!


第十一章擴展實例:合并用戶數據庫


問題描述就是有兩臺UNIX的計算機系統,這兩個系統現在要合并,用戶群同樣需要合并。有許多用戶兩臺系統上都有帳號?,F在合并需要的功能是:
將兩個系統里的/etc/passwd文件合并,并確保來自這兩臺系統的所有用戶有唯一UID。
針對已存在的UID、但被用在不同用戶身上的情況,則將其所有文件的所有權變更為正確用戶。

解決這個問題,我們程序必須處理的情況可能有這些:
1、用戶在兩個系統都有用戶名和UID。
2、用戶的用戶名和UID只有一臺系統里有,另一臺沒有,這合并時不會有問題。
3、用戶在兩臺系統都有相同的用戶名但UID不同。
4、用戶在兩臺系統擁有相同UID但用戶名不同。

合并密碼文件幾個步驟:
1、直接物理合并文件,重復的username聚在一起,產生結果為下步輸入。
2、將合并文件分三分:具有相同username和UID的用戶放入unique,未重復的用戶username也放入。具有相同username但不同UID的放入dupusers,具有相同UID但不同username的放入dupids。
3、建立已使用中具有唯一性的UID編號列表??捎脕韺ふ倚碌奈词褂肬ID。
4、編寫另一個程序,搭配使用UID編號了解,尋找新的UID編號。
5、建立用以產生最后/etc/passwd記錄的三項組合(username、old UID、new UID)列表。還有最重要的:產生命令,以變更文件系統中文件的所有權。與此同時,針對原來就擁有數個UID的用戶以及同一UID擁有多個用戶,建立最后的密碼文件項目。
6、建立最終密碼文件。
7、建立變更文件所有權的命令列表,并執行,這部分要謹慎處理,小心規劃。

這里書中針對上述步驟書寫了程序,很大一部分代碼是處理UID的,個人感覺全部使用新的UID來重新映射username,不是很簡單就搞定一切了。只用把所有出現的username記錄出來,重復的干掉,再順序給出對應UID,很簡單幾步搞定了。至于之后根據old UID更改文件權限,完全可以做新舊UID的映射,直接改到新的里邊就OK了。這樣想來如果更改文件權限是程序主要耗時部分的話,書中原方法還是可取的,只是編碼復雜度較高。如果更改權限耗時能夠承受,還是選擇編碼復雜度低的來搞速度還快點,也方便。

這里更改文件權限使用chown命令,可以更改文件擁有用戶或用戶組。-R選項遞歸處理。但出現的問題是用戶擁有的文件未必只放在用戶根目錄里。所以更改用戶在每一個地方的文件需要使用find命令,從根目錄開始做。類似這樣:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 辽源市| 九台市| 和硕县| 岐山县| 绥阳县| 永昌县| 射阳县| 麻阳| 广灵县| 湘潭市| 南木林县| 道孚县| 策勒县| 通化县| 漠河县| 农安县| 五家渠市| 淮南市| 英超| 亚东县| 聊城市| 霍林郭勒市| 三亚市| 海原县| 安溪县| 保康县| 镇远县| 康马县| 兰坪| 普兰店市| 牙克石市| 陆河县| 兴仁县| 黄冈市| 衡阳县| 瑞金市| 华亭县| 吉首市| 阿拉尔市| 阳泉市| 芮城县|