Linux入门必备
- 了解bash:没有必要钻研长篇累牍的bash使用手册,通过man bash学习即可。
- 了解vi:你在工作中也许会使用Emacs或Eclipse,但vi不可替代。
- 了解ssh:学习无密码验证的基础知识。
- bash作业管理基础知识:如使用&、Ctrl-C、fg、bg、Ctrl-Z、jobs和kill等。
- 文件管理命令:如硬链接和软链接,权限等。
- 网络管理命令:如ifconfig等。
- 如何使用正则表达式,如何使用grep、sed等。
- 学习使用apt-get和yum管理软件包。
提升日常工作效率
- 在bash中,可以使用Ctrl+R命令搜索命令行历史记录。
- 在bash中,可以使用Ctrl+W删除最后一个单词,使用Ctrl+U删除整行。
- 使用cd -命令返回之前的工作目录,使用cd ..命令返回上层目录。
- 学习如何使用xargs:
- $ find . -name *.py | xargs grep some_function
- $ cat hosts | xargs -I{} ssh root@{} hostnameX
- 使用pstree -p命令查看进程树。
- 了解不同的信号。例如,使用kill -STOP [PID]终止进程。详细的信号列表可以在man 7 signal中查看。
- 如果你想让进程永远在后台运行,可以使用nohup和disown命令。
- 使用netstat -lntp命令查看侦听进程,并参考lsof命令。
- 在bash脚本中使用subshells对命令进行分组:
- #do something in current dir
- (cd /some/other/dir; other-command)
- #continue in original dir
- 字符串修剪(Trimming Strings):${var%suffix}和${var#prefix}。例如if var=foo.pdf then echo ${var%.pdf}.txt prints "foo.txt"。
- 命令的输出可以当做文件使用。例如,比较本地和远程的/etc/hosts文件:
- diff /etc/hosts <(ssh somehost cat /etc/hosts)
- 了解bash中的“here documents”。
- 了解标准输出和标准错误重定向。
- 了解ASCII代码表。可以在终端中运行man ascii命令作为参考。
- 当通过ssh远程工作时,可以使用screen 或 dtach保存回话。
- 对Web开发者而言,curl、wget等命令非常实用。
- 将HTML页面转化文本文件:
- lynx -dump -stdin
- 如果要掌握XML,xmlstarlet命令是非常好的工具。
- 了解ssh端口映射。
- 使用Alt+shift+3快捷键可以在行前添加注释“#”。
数据处理
- 了解sort和uniq命令。
- 了解cut、paste和join命令。
- 了解如何对文本文件做交集、并集和差集:
- cat a b | sort | uniq > c # c is a union b
- cat a b | sort | uniq -d > c # c is a intersect b
- cat a b b | sort | uniq -u > c # c is set difference a – b
- 对文本文件的第二列做摘要,下面的代码要比同样的Python代码更精炼、快速(3倍):
- awk '{ x += $2 } END { print x }'
- 了解字符串和grep命令。
- 文件分割:了解split(按大小分割)和csplit(按匹配分割)命令。
系统诊断
- 使用iostat、netstat、top和dstat命令查看磁盘、处理器和网络的状态。
- 使用free、vmstat等命令了解系统内存状态。
- 使用mtr网络诊断工具。
- 使用iftop、nethogs等工具查看占用带宽的进程和带宽。
- 使用ab工具快速洞悉Web服务器的性能。
- 以wireshark和tshark命令应对复杂网络诊断。
- 学习如何使用strace,并用于诊断运行的进程。这对分析程序运行错误的原因,非常有帮助。
- 使用ldd命令查看共享库文件。
- 了解如何使用gdb连接到运行中的进程,并进行堆栈跟踪。
- 有关/proc的知识非常重要。
- 如何诊断已发生的错误?Sar命令是一种很好的选择,它可以收集、保存并报告系统信息。
将man内容重定向到一个文件中,方便查找。
man ls |col -b >man.txt
Col命令
功能说明:过滤控制字符。
语 法:col [-bfx][-l<缓冲区列数>]
补充说明:在许多UNIX说明文件里,都有RLF控制字符。当我们运用shell特殊字符">"和">>",把说明文件的内容输出成纯文本文件时,控制字符会变成乱码,col指令则能有效滤除这些控制字符。
参 数:
-b 过滤掉所有的控制字符,包括RLF和HRLF。
-f 滤除RLF字符,但允许将HRLF字符呈现出来。
-x 以多个空格字符来表示跳格字符。
-l<缓冲区列数> 预设的内存缓冲区有128列,您可以自行指定缓冲区的大小。
Linux提供了丰富的帮助手册,当你需要查看某个命令的参数时不必到处上网查找,只要man一下即可。 Linux的man手册共有以下几个章节: 1、Standard commands (标准命令) 2、System calls (系统调用) 3、Library functions (库函数) 4、Special devices (设备说明) 5、File formats (文件格式) 6、Games and toys (游戏和娱乐) 7、Miscellaneous (杂项) 8、Administrative Commands (管理员命令) 例如:我们输入 man ls,它会在最左上角显示“LS(1)”,在这里,“LS”表示手册名称,而“(1)”表示该手册位于第一节章,同样,我们输入“man ifconfig”它会在最左上角显示“IFCONFIG(”。也可以这样输入命令:“man [章节号] 手册名称”。 |
显示所有man文档的编号
man -f man 显示man程序的所有文档
在man中查询
apropos keywords
man -k keywords
重建man库
makewhatis
查询man文档位置
whereis man 查询man的文档位置
查看当前man的文档目录
manpath
打印man文档
man -t finger | lpr 打印
lpstat -p -d 查看打印机状态
用浏览器打开
man -Hfirefox bash
将man的结果保存在文件内
man bash | col -b > bash.txt
col是用来对文本进行转换的命令,这里是去掉所有的退格符号
名称
man-显示线上求助手册(manualpage)manpath-决定线上手册的搜寻路径
摘要
man[-acdfhkKtwW][-msystem][-pstring][-Cconfig_file][-Mpath][-Ppager][-Ssection_list][section]name...
man -f man 显示man程序的所有文档
在man中查询
apropos keywords
man -k keywords
重建man库
makewhatis
查询man文档位置
whereis man 查询man的文档位置
查看当前man的文档目录
manpath
打印man文档
man -t finger | lpr 打印
lpstat -p -d 查看打印机状态
用浏览器打开
man -Hfirefox bash
将man的结果保存在文件内
man bash | col -b > bash.txt
col是用来对文本进行转换的命令,这里是去掉所有的退格符号
名称
man-显示线上求助手册(manualpage)manpath-决定线上手册的搜寻路径
摘要
man[-acdfhkKtwW][-msystem][-pstring][-Cconfig_file][-Mpath][-Ppager][-Ssection_list][section]name...
测试机器的硬件信息:
查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
再完整看cpu详细信息, 不过大部分我们都不关心而已.
# dmidecode | grep 'Processor Information'
查看内 存信息
# cat /proc/meminfo
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)
# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)
查看机器型号
# dmidecode | grep "Product Name"
查看网卡信息
# dmesg | grep -i eth
查看CPU信息(型号)
# cat /proc/cpuinfo | grep name | cut -f2 -d: | uniq -c
8 Intel(R) Xeon(R) CPU E5410 @ 2.33GHz
(看到有8个逻辑CPU, 也知道了CPU型号)
# cat /proc/cpuinfo | grep physical | uniq -c
4 physical id : 0
4 physical id : 1
(说明实际上是两颗4核的CPU)
# getconf LONG_BIT
32
(说明当前CPU运行在32bit模式下, 但不代表CPU不支持64bit)
# cat /proc/cpuinfo | grep flags | grep ' lm ' | wc -l
8
(结果大于0, 说明支持64bit计算. lm指long mode, 支持lm则是64bit)
再完整看cpu详细信息, 不过大部分我们都不关心而已.
# dmidecode | grep 'Processor Information'
查看内 存信息
# cat /proc/meminfo
# uname -a
Linux euis1 2.6.9-55.ELsmp #1 SMP Fri Apr 20 17:03:35 EDT 2007 i686 i686 i386 GNU/Linux
(查看当前操作系统内核信息)
# cat /etc/issue | grep Linux
Red Hat Enterprise Linux AS release 4 (Nahant Update 5)
(查看当前操作系统发行版信息)
查看机器型号
# dmidecode | grep "Product Name"
查看网卡信息
# dmesg | grep -i eth