# 练习 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 手动安装