# 練習 30:打磨、洗練、重復:總復習
> 原文:[Exercise 30. Lather, Rinse, Repeat: The Grand Rote Learning](https://archive.fo/RCaku)
> 譯者:[飛龍](https://github.com/wizardforcel)
> 協議:[CC BY-NC-SA 4.0](http://creativecommons.org/licenses/by-nc-sa/4.0/)
> 自豪地采用[谷歌翻譯](https://translate.google.cn/)
本指南中的信息量相當大。沒有足夠長的練習和一些深入研究,你不能記住它。所以剩下的唯一的工作就是填寫這張表,每天都把這張表打印在你的記憶中,直到你知道了它。
你可能想問,為什么需要記住所有這些東西,如果你可以隨時查看的話。那么簡短的答案是因為你不能。這意味著為了高效地查找事物,你需要知道要尋找什么,并且為了知道要尋找什么,你需要一個堅實的基礎。一旦你有了這個基礎,一旦你明白什么是重要的,什么不是,以及系統的組織方式,你將能夠高效尋找東西。
你可能會想知道,為什么在我的指南中有很多詳細的表格,其中包含許多字段的列表,其中包含幾乎不需要的信息。你必須明白的是,你應該以這種方式訓練自己,來查看任何控制臺程序。你應該熟悉這個信息,而不像是一本科幻小說那樣,其中你可能不會注意細節,但仍然很了解它。你應該將所有這些數據看做數學公式,其中每個符號都有其意義,甚至更多,如果你不明白特定的符號意味著什么,你將無法走地更遠。
有時完全可以留下一些未解釋的東西,但讓自己變得更深入,即使經常是這樣。通過研究這個特定的工具,了解它告訴你什么以及為什么,給自己一個禮物。如果你這樣做,如果你會深入內部,你對操作系統的理解(在我們這種情況下是 Linux)將會極大增加。
## 文檔
### `man`, `info`
| 命令或概念 | 含義 |
| --- | --- |
| `man` | |
| `info` | |
| `man 1` | |
| `man 2` | |
| `man 3` | |
| `man 4` | |
| `man 5` | |
| `man 6` | |
| `man 7` | |
| `man 8` | |
| `man 9` | |
| `man -k` | |
| `man -wK` | |
| **粗體** | | |
| *斜體* | | |
| `[]` | |
| `-a|-b` | |
| `argument ...` | |
| `[expression] ...` | |
### Google 和實用資源
| 搜索術語/資源 | 含義 |
| --- | --- |
| `(a|b) c` | |
| `site:foo.bar` | |
| `"a long query"` | |
| <http://en.wikipedia.org> | |
| <http://stackexchange.com/> | |
| <http://www.cyberciti.biz/> | |
| <http://tldp.org/> | |
| `programname.site` | |
### 包管理:Debian 包管理工具`aptitude`
| 命令或概念 | 含義 |
| --- | --- |
| `aptitude` | |
| `aptitude search` | |
| `aptitude install` | |
| `dpkg -l` | |
| `dpkg -L` | |
| 預期操作 | |
| 包狀態 | |
| <http://www.debian.org/distrib/packages> | |
### 系統啟動:運行級別, `/etc/init.d`, `rcconf`, `update-rc.d`
| 命令或概念 | 含義 |
| --- | --- |
| `rcconf` | |
| `update-rc.d` | |
| `sysv-rc-conf` | |
| 運行級別 | |
| 運行級別 1 | |
| 運行級別 2 | |
| 運行級別 6 | |
### 進程:處理進程,`ps`,`kill`
| 命令或概念 | 含義 |
| --- | --- |
| `ps` | |
| `kill` | |
| `ps ax` | |
| `ps axue` | |
| `ps axue --forest` | |
| 信號 | |
| `HUP` | |
| `TERM` | |
| `KILL` | |
| 為什么 `KILL -9` 是不好的? | |
### 任務調度:`cron`,`at`
| 命令或概念 | 含義 |
| --- | --- |
| `crontab -l` | |
| `crontab -e` | |
| `crontab -r` | |
| `crontab /foo` | |
| `crontab > foo` | |
| `* * * * *` | |
| `at` | |
| `atq` | |
| `atq` | |
| `atrm` | |
| `batch` | |
### 日志, `/var/log`, `rsyslog`, `logger`
| 命令或概念 | 含義 |
| --- | --- |
| `logger` |
| `grep -irl` |
| `find . -mmin -5` |
| `tail -f` |
| `logrotate` |
| 日志守護程序 | |
| 日志級別 | |
| 日志輪替 | |
### 文件系統
| 命令或概念 | 含義 |
| --- | --- |
| 文件系統 | |
| 文件 | |
| 目錄 | |
| 索引節點 | |
| 塊 | |
| 掛載 | |
| UUID | |
| 日志 | |
| MBR | |
| 分區 | |
| 分區表 | |
### 掛載, `mount`, `/etc/fstab`
| 命令或概念 | 含義 |
| --- | --- |
| `parted` | |
| `cfdisk` | |
| `fdisk` | |
| `mount` | |
| `umount` | |
| `mount -a` | |
| `/etc/fstab` | |
| `fsck` | |
| `blkid` | |
### 創建和修改文件系統,`mkfs`,`tune2fs`
| 命令或概念 | 含義 |
| --- | --- |
| `tune2fs` | |
| `mkfs` | |
| 塊大小 | |
| 保留塊數量 | |
| 最大掛載數量 | |
| 檢查間隔 | |
### 更改根目錄,`chroot`
| 命令或概念 | 含義 |
| --- | --- |
| `chroot` | |
| `ldd` | |
| 根目錄 | |
| 更改根目錄 | |
| 動態庫依賴 | |
### 移動數據:`tar`,`dd`
| 命令或概念 | 含義 |
| --- | --- |
| `tar` | |
| `dd` | |
| `losetup` | |
### 安全權限:`chown`,`chmod`
| 命令或概念 | 含義 |
| --- | --- |
| `chmod` | |
| `chown` | |
| `umask` | |
| 權限 | |
| 權限模式 | |
| 權限類 | |
| Umask 機制 | |
### 網絡
| 網絡概念 | 含義 |
| --- | --- |
| OSI 模型 | |
| DOD 模型 | |
| 通信協議 | |
| 以太網 | |
| MAC 地址 | |
| 以太網廣播地址 | |
| TCP/IP | |
| IP | |
| IP 封包 | |
| IP 地址 | |
| IP 子網 | |
| 端口 | |
| 網絡套接字 | |
| 本地套接字地址 | |
| 遠程套接字地址 | |
| 套接字對 | |
| 路由 | |
| 默認網關 | |
| IP 廣播地址 | |
| ICMP | |
| TCP | |
| TCP 封包 | |
| UDP | |
| UDP 封包 | |
| 主機名稱 | |
### 網絡配置, `ifconfig`, `netstat`, `iproute2`, `ss`
| 命令或概念 | 含義 |
| --- | --- |
| `/etc/network/interfaces` | |
| `auto` | |
| `allow-hotplug` | |
| `/etc/hosts` | |
| `/etc/hostname` | |
| `localhost` | |
| 回送接口 | |
| 偽接口 | |
### 封包過濾配置,`iptables`
| 命令或概念 | 含義 |
| --- | --- |
| `iptables-save` | |
| `iptables` | |
| `modprobe` | |
| `nc` | |
| `tcpdump` | |
| `LINKTYPE_LINUX_SLL` | |
| 以太網幀頭部 | |
| IPv4 頭部 | |
| TCP 段 | |
| `netfilter` | |
| iptables 表 | |
| iptables 鏈 | |
| iptables 目標 | |
### 安全 Shell, `ssh`, `sshd`, `scp`
| 命令或概念 | 含義 |
| --- | --- |
| `ssh` | |
| `sshd` | |
| `scp` | |
| `ssh-keygen` | |
| 主機密鑰 | |
| 證密鑰 | |
| 數據加密密碼 | |
| 數據完整性算法 | |
| SSH 會話密鑰 | |
### 性能:獲取性能狀態, `uptime`, `free`, `top`
| 命令或概念 | 含義 |
| --- | --- |
| `uptime` | |
| `free` | |
| `vmstat` | |
| `top` | |
| CPU 占用 (`us`,`sy`,`id`,`wa`) | |
| 內存 (`swpd`, `free`, `buff`, `cache`, `inact`, `active`) |
| Slab 分配 | |
| 磁盤 (`IOPS`, `read`, `write`) | |
| 進程 (`PR`, `NI`, `VIRT`, `RES`, `SHR`, `Status`) | |
### 內核:內核消息,`dmesg`
| 命令或概念 | 含義 |
| --- | --- |
| `dmseg` | |
| `/var/log/dmesg` | |
| `/var/log/messages` | |
| `/var/log/syslog` | |
| `/var/log/kern.log` | |
| 內核消息緩沖區 | |
- 笨辦法學 Linux 中文版
- 練習 0:起步
- 練習 1:文本編輯器,vim
- 練習 2:文本瀏覽器,少即是多
- 練習 3:Bash:Shell、.profile、.bashrc、.bash_history
- 練習 4:Bash:處理文件,pwd,ls,cp,mv,rm,touch
- 練習 5:Bash:環境變量,env,set,export
- 練習 6:Bash:語言設置,LANG,locale,dpkg-reconfigure locales
- 練習 7:Bash:重定向,stdin,stdout,stderr,<,>,>>,|,tee,pv
- 練習 8:更多的重定向和過濾:head,tail,awk,grep,sed
- 練習 9:Bash:任務控制,jobs,fg
- 練習 10:Bash:程序退出代碼(返回狀態)
- 練習 11:總結
- 練習 12:文檔:man,info
- 練習 13:文檔:Google
- 練習 14:包管理:Debian 包管理工具aptitude
- 練習 15:系統啟動:運行級別,/etc/init.d,rcconf,update-rc.d
- 練習 16:處理進程,ps,kill
- 練習 17:任務調度:cron,at
- 練習 18:日志:/var/log,rsyslog,logger
- 練習 19:文件系統:掛載,mount,/etc/fstab
- 練習 20:文件系統:修改和創建文件系統,tune2fs,mkfs
- 練習 21:文件系統:修改根目錄,chroot
- 練習 22:文件系統:移動數據,tar,dd
- 練習 23:文件系統:權限,chown,chmod,umask
- 練習 24:接口配置,ifconfig,netstat,iproute2,ss,route
- 練習 25:網絡:配置文件,/etc/network/interfaces
- 練習 26:網絡:封包過濾配置,iptables
- 練習 27:安全 Shell,ssh,sshd,scp
- 練習 28:性能:獲取性能情況,uptime,free,top
- 練習 29:內核:內核消息,dmesg
- 練習 30:打磨、洗練、重復:總復習
- 下一步做什么
- Debian 手動安裝