Linux哲學

[美] 戴維·博特(David Both)著

買這商品的人也買了...

商品描述

本書揭示並說明瞭Linux命令行的強大功能和靈活性,以及支持這些特性的設計和理念。瞭解如何從Linux命令行中提取盡可能多的信息可以幫助你成為更好的系統管理員,也可以幫助你理解為什麽Linux和Unix世界中的許多操作是這樣的,以及如何將Linux哲學應用於系統管理員。
最初的Unix/Linux哲學提出了基礎和功能原則——規則、指導方針和程序性方法,這些是為操作系統的開發人員設計的。雖然系統管理員也可以將這些哲學應用於日常工作,但許多重要的原則都缺失了。
本書作者David Both多年來一直在使用Linux和Unix,他已經制定了自己的哲學——可將其更直接地應用於系統管理員的日常工作中。本書定義了一種哲學,然後通過可以實際執行的實驗闡明瞭該哲學的實踐。
本書介紹了Linux命令行,但目的並不是介紹命令本身。命令是可以揭示其底層結構之美的工具。本書靈感來自David真正的導師,向他們致敬!本書是系統管理員無處不在的導師。記住——如果你失敗了,你就會從中學到東西。

作者簡介

[美]戴維·博特(David Both)著:David Both是一位開源軟件和GNU/Linux的倡導者、培訓師、作家和發言人。他從事Linux和開源軟件工作已有20餘年,從事計算機工作已超過45年。他在IBM工作了21年,並於1981年在佛羅里達州博卡拉頓擔任課程開發員,為第一台IBM PC編寫了培訓課程。他曾為Red Hat教過RHCE課程,並在MCI Worldcom、思科和北卡羅來納州工作過。在離開IBM後,他在工作的大多數地方都教過Linux課程,包括午餐講座和完整的五天課程。
他還為包括《Linux Magazine》和《Linux Journal》在內的雜誌撰寫文章。他目前正在撰寫大量文章並且是OpenSource.com的志願者社區版主。他特別喜歡在研究他的文章時學習新事物。

目錄大綱

譯者序
作者簡介
技術審閱者簡介
致謝
第一部分導論
第1章Linux哲學簡介3
1.1我是系統管理員嗎4
1.2哲學的結構6
1.3誰應該讀這本書7
1.3.1但我不滿足這些要求8
1.3.2誰不適合讀這本書8
1.4 Linux的真相9
1.5限制性操作系統9
1.6 Linux是開放和免費的9
1.7真正的知識10
1.8啟示10
第2章準備11
2.1實驗11
2.2系統要求12
2.2.1如何訪問命令行13
2.2.2創建student用戶13
2.2.3準備U盤14
2.3實驗不起作用怎麼辦15
第二部分基礎
第3章數據流20
3.1文本流——通用接口20
3.2 STDIO文件句柄21
3.3生成數據流21
3.4使用“yes”來檢驗一個理論23
3.5探索U盤25
3.6隨機流29
3.7小結30
第4章轉換數據流31
4.1數據流作為原材料31
4.2管道夢32
4.3建立管線33
4.4重定向34
4.5管線的挑戰37
4.5.1問題37
4.5.2解決方案38
4.5.3關於解決方案的思考41
4.6小結41
第5章一切都是文件42
5.1什麼是文件42
5.2設備文件43
5.3 udev簡化43
5.4設備數據流45
5.5設備文件分類46
5.6有趣的設備文件47
5.7隨機數、零等設備50
5.8備份主引導記錄53
5.9一切都是文件的應用56
5.10小結56
第6章使用Linux FHS57
6.1定義57
6.2標準58
6.3使用定義明確的文件系統結構59
6.4 Linux統一目錄結構60
6.5特殊文件系統61
6.5.1 /proc文件系統61
6.5.2 /sys文件系統66
6.5.3 SELinux69
6.6解決問題71
6.6.1不正確地使用文件系統72
6.6.2電子郵件收件箱72
6.6.3堅持標準72
6.6.4這個文件在哪裡73
6.7小結74
第三部分功能
第7章擁抱CLI77
7.1定義命令行77
7.2 CLI術語78
7.2.1命令提示符78
7.2.2命令行78
7.2.3命令行界面78
7.2.4終端78
7.2.5控制台79
7.2.6虛擬控制台80
7.2.7終端仿真器81
7.2.8偽終端83
7.2.9會話83
7.2.10 shell83
7.2.11 SSH85
7.2.12 screen85
7.3 GUI和CLI87
7.3.1非限制性接口88
7.3.2郵件列表88
7.4解決方案原則90
7.5用大數據阻止他們90
7.6 CLI的威力92
第8章當一名懶惰的系統管理員93
8.1準備工作93
8.2真正的生產力93
8.3預防性維護94
8.4最小化打字量95
8.4.1別名95
8.4.2其他打字捷徑96
8.5文件命名96
8.6 Bash效率97
8.6.1自動補全功能97
8.6.2命令行調用和編輯98
8.6.3歷史記錄99
8.6.4使用歷史記錄100
8.7日誌是你的朋友103
8.7.1 SAR104
8.7.2郵件日誌106
8.7.3消息106
8.7.4 dmesg 107
8.7.5安全108
8.7.6跟踪日誌文件110
8.7.7 systemd日誌111
8.7.8 logwatch115
8.8成功地當一名懶惰的系統管理員117
第9章自動化一切118
9.1為什麼我使用腳本118
9.2我是如何達到的119
9.3編寫重複性任務腳本119
9.3.1讓它更容易120
9.3.2從理想到必要120
9.4更新121
9.5其他自動化水平131
9.6使用cron進行定時自動化操作133
9.6.1 crontab133
9.6.2 cron.d135
9.6.3 anacron136
9.6.4關於作業安排的提示138
9.6.5關於cron的想法138
9.6.6 cron資源138
9.7其他可能自動化的任務139
9.8深化哲學140
第10章始終使用shell腳本141
10.1定義141
10.2系統管理員語境142
10.2.1需求143
10.2.2開發速度143
10.2.3性能速度144
10.2.4變量145
10.2.5測試145
10.2.6開放和開源145
10.3把shell腳本作為原型146
10.4處理146
10.4.1快捷而不完善146
10.4.2規劃和遠見147
10.5小結156
第11章儘早測試,經常測試157
11.1流程158
11.1.1創建測試計劃158
11.1.2在一開始就開始測試159
11.1.3最終測試160
11.1.4生產測試160
11.2模糊測試161
11.3自動化測試161
11.4嘗試一下162
11.4.1 MOTD腳本的需求163
11.4.2 MOTD腳本測試計劃163
11.4.3開發腳本164
11.4.4添加健全性檢查167
11.4.5版本號168
11.5修復腳本177
11.6小結178
第12章使用常識命名179
12.1腳本和程序名稱179
12.2變量181
12.2.1命名變量181
12.2.2把一切變成變量182
12.3子程序184
12.4主機185
12.5機構命名185
12.6小結186
第13章以公開格式存儲數據187
13.1封閉是不可理解的187
13.2開放是可知的188
13.3純ASCII文本188
13.3.1系統配置文件189
13.3.2全局Bash配置193
13.3.3用戶配置文件195
13.3. 4 ASCII的可貴之處197
13.4小結198
第14章對數據使用分離的文件系統199
14.1為什麼我們需要分離的文件系統199
14.1.1硬盤崩潰200
14.1.2文件系統填滿200
14.2挽救便攜式計算機200
14.3數據安全202
14.4建議203
14.4.1 /boot204
14.4.2 /home204
14.4.3 /usr205
14.4.4 /opt206
14.4.5 /var206
14.4.6 /tmp206
14.4.7其他分支207
14.5一開始就分離文件系統207
14.6稍後添加分離的文件系統207
14.7小結212
第15章使程序可移植213
15.1從英特爾PC到大型機213
15.2體系結構214
15.3可移植性限制215
15.3.1許可215
15.3.2技術215
15.3.3 LibreOffice216
15.4 shell腳本216
15.5互聯網和可移植性218
15.6創建網頁218
15.6.1靜態內容219
15.6.2作為新工作的動態網頁220
15.6.3 CGI——開放並可移植223
15.6.4 WordPress224
15.7小結225
第16章使用開源軟件226
16.1開源的定義226
16.2開源定義(註釋)227
16.3為什麼這很重要229
16.4創造術語229
16.5許可我們自己的代碼229
16.6機構代碼共享230
16.6.1孤島很差勁231
16.6.2開放式機構和代碼共享231
16.6.3要避免的事情232
16.7代碼可用性232
16.7.1我如何分享代碼232
16.7.2代碼共享注意事項233
16.8小結235
第四部分成為禪師
第17章追求優雅239
17.1硬件優雅239
17.1.1 PCB240
17.1.2主板240
17.1.3計算機240
17.1.4數據中心241
17.1.5電源和接地241
17.2軟件優雅242
17.3修復我的網站245
17.4刪除廢物246
17.4.1舊的或未使用的程序246
17.4.2腳本中的舊代碼249
17.4.3舊文件250
17.5小結255
第18章追求簡單257
18.1數字中的複雜性257
18.2簡單性的基礎知識258
18.3永無止境的簡化過程259
18.4簡單的程序做一件事259
18.5簡單程序很小261
18.6簡單與哲學262
18.6.1簡化我自己的程序263
18.6.2簡化他人的程序263
18.6.3未註釋的代碼263
18.7硬件267
18.8 Linux和硬件268
18.9窘境268
18.10小結269
第19章使用你喜愛的編輯器270
19.1不僅僅是編輯器271
19.2 Linux啟動271
19.2.1為什麼我更喜歡SystemV271
19.2.2為什麼我更喜歡systemd272
19.2.3真正的問題272
19.3桌面環境272
19.4用sudo還是不用sudo273
19.4.1繞過sudo274
19.4.2 sudo的有效用途275
19.5小結276
第20章記錄一切277
20.1紅男爵278
20.2我的文檔理念278
20.2.1幫助選項279
20.2.2自由地註釋代碼280
20.2.3我編寫代碼文檔的流程282
20.3手冊頁282
20.4系統文檔282
20.5為現有代碼編寫文檔285
20.6保持文檔更新285
20.7小結286
第21章備份一切,經常備份287
21.1數據丟失287
21.2依靠備份救援289
21.2.1問題289
21.2. 2恢復294
21.3按我的方式做294
21.3.1備份選項295
21.3.2異地備份300
21.4災難恢復服務301
21.5其他選擇301
21.6如何“經常”備份301
21.7小結302
第22章追隨你的好奇心303
22.1查理303
22.2好奇心把我引入了Linux304
22.3好奇心解決問題307
22.4追隨自己的好奇心320
22.4.1成為作者320
22.4.2失敗是一種機會321
22.4.3去做就對了321
22.5小結322
第23章沒什麼應當323
23.1始終存在各種可能性323
23.2釋放力量324
23.3解決問題325
23.3.1批判性思維326
23.3.2解決問題的推理327
23.4自知之明330
23.5多樣性的含義331
23.6量化考核狂熱331
23.7優秀的管理人員332
23.8協作333
23.8.1孤島城市334
23.8.2簡單的方法334
23.9小結335
第24章指導年輕的系統管理員336
24.1僱用合適的人337
24.2指導337
24.3解決問題的藝術339
24.4示例343
24.5迭代344
24.6小結345
第25章支持你最喜歡的開源項目346
25.1項目選擇346
25.2編寫代碼347
25.3測試347
25.4提交錯誤報告348
25.5文檔348
25.6協助349
25.7教學349
25.8寫作350
25.9捐贈351
25.10小結351
第26章現實部分352
26.1人352
26.2指手畫腳的管理者353
26.3過猶不及354
26.4技術支持煩惱354
26.5你應當按我的方式做355
26.6可以拒絕356
26.7科學方法356
26.8了解過去357
26.9結語357
參考文獻358