1. ncdu
一个可以替代du命令的工具,ncdu命令是对传统du命令功能上的增强,不需要像du那样输入大量的命令,就可以计算文件及目录大小并可以按照大小或文件名进行排序。它是基于ncurses库开发的,因此还支持很多丰富的交互式命令。
1.1. 安装
1 | # CentOS |
1.2. 使用方法
执行ncdu命令,回车,即可列出当前目录下的文件及目录的大小,默认按照大小进行排序,并且使用斜杠和回车键进行目录切换十分方便。
1 | [root@Linux /]# ncdu |
1.3. 常用快捷键
- up,k - 用于向上移动光标
- down,j - 用于向下移动光标
- 右键,输入,l> - 打开所选目录
- left,<,h - 这将打开父目录
- n - 按名称排序(再次按降序排列)
- s - 按文件大小排序(再次按降序排列)
- d - 删除所选文件或目录
- g - 显示百分比和/或图表
- t - 排序时在文件之前切换dirs
- c - 切换子项目计数的显示
- b - 当前目录中的Spawn shell
- i - 显示有关所选项目的信息
- r - 刷新/重新计算当前目录
- q - 退出ncdu
2. nmap
Nmap用于在远程机器上探测网络,执行安全扫描,网络审计和搜寻开放端口。它会扫描远程在线主机,该主机的操作系统,包过滤器和开放的端口。
2.1. 安装
1 | # CentOS |
2.2. 扫描类型
1 | -sT TCP connect() 扫描,这是最基本的 TCP 扫描方式。这种扫描很容易被检测到,在目标主机的日志中会记录大批的连接请求以及错误信息。 |
2.3. 扫描参数
1 | -P0 在扫描之前,不 ping 主机。 |
2.4. example
- 获取远程主机系统类型和开放端口
1 | nmap -A IP |
- 探测内网在线主机(使用IP地址)
1 | nmap -sP 192.168.0.0/24 |
- 扫描多台主机
1 | nmap 192.168.0.101 192.168.0.102 192.168.0.103 |
- 使用IP地址的最后一个字节扫描多台服务器
1 | nmap 192.168.0.101,102,103 |
- 扫描一个IP地址范围
1 | nmap 192.168.0.101-110 |
排除一些主机后再扫描
在执行全网扫描或用通配符扫描时你可以使用“-exclude”选项来排除某些你不想要扫描的主机。
1 | nmap 192.168.0.* --exclude 192.168.0.100 |
扫描操作系统信息和路由跟踪
使用Nmap,你可以检测远程主机上运行的操作系统和版本。为了启用操作系统和版本检测,脚本扫描和路由跟踪功能,我们可以使用NMAP的“**-A**“选项。
1 | nmap -A 192.168.0.101 |
启用Nmap的操作系统探测功能
使用选项“**-O”和“-osscan-guess**”也帮助探测操作系统信息。
1 | nmap -O www.example.com |
扫描主机侦测防火墙
下面的命令将扫描远程主机以探测该主机是否使用了包过滤器或防火墙。
1 | nmap -sA 192.168.0.101 |
扫描主机检测是否有防火墙保护
扫描主机检测其是否受到数据包过滤软件或防火墙的保护。
1 | nmap -PN 192.168.0.101 |
执行快速扫描
你可以使用“**-F**”选项执行一次快速扫描,仅扫描列在nmap-services文件中的端口而避开所有其它的端口。
1 | nmap -F 192.168.0.101 |
顺序扫描端口
使用“-r”选项表示不会随机的选择端口扫描。
1 | nmap -r 192.168.0.101 |
打印主机接口和路由
你可以使用nmap的“–iflist”选项检测主机接口和路由信息。
1 | nmap --iflist |
扫描特定的端口
使用Nmap扫描远程机器的端口有各种选项,你可以使用“-P”选项指定你想要扫描的端口,默认情况下nmap只扫描TCP端口。
1 | nmap -p 80 www.example.com |
扫描多个端口
你还可以使用选项“-P”来扫描多个端口。
1 | nmap -p 80,443 192.168.0.101 |
扫描指定范围内的端口
您可以使用表达式来扫描某个范围内的端口。
1 | nmap -p 80-160 192.168.0.101 |
3. axel
axel是linux下一个多线程下载工具
安装
1 | # centos7 |
参数
1 | --max-speed=x , -s x 最高速度x |
用法
1 | axel [options] url1 [url2] [url...] |
用例
1 | 使用10线程下载http服务器上的test.jpg: |
4. Linux命令使用技巧
4.1. 在一个命令中运行多个命令
假设您必须一个接一个地运行几个命令。您是否在等待第一个命令完成运行,然后执行下一个命令?
那么,您可以使用“;”分隔符。这样,您可以在一行中运行许多命令。无需等待先前的命令完成后再执行其他任务。
1 | command_1; command_2; command_3 |
4.2. 仅在上一个命令成功的情况下,才能在一个命令中运行多个命令
在上一个命令中,您了解了如何在一个命令中运行多个命令以节省时间。但很多时候你必须确保命令不会失败才能执行下一条命令,那怎么半?
比如您要构建代码,然后在构建成功的情况下才接着运行make。
在这种情况下,可以使用&&分隔符。&&确保下一条命令仅在上一条命令成功执行时运行。
1 | command_1 && command_2 |
此命令的一个很好的例子是当您使用 sudo apt update && sudo apt upgrade 升级系统时。
4.3. 轻松搜索您使用过的命令
想象一下一种情况,您在几分钟/几小时前使用了很长的命令,而您不得不再次使用它。问题是您不再记得确切的命令了。
反向搜索是您的救星。您可以使用搜索词在历史记录中搜索命令。
只需使用ctrl + r键即可启动反向搜索并键入命令的某些部分。它将查询历史记录,并向您显示与搜索词匹配的命令。
1 | ctrl + r 搜索词 |
默认情况下,它将仅显示一个结果。要查看更多与您的搜索字词匹配的结果,您将不得不反复使用ctrl + r。要退出反向搜索,只需使用Ctrl + C。
在命令历史记录中进行反向搜索
请注意,在某些Bash Shell中,还可以在搜索词中使用Page Up和Down键,它将自动完成命令。
4.4. 解除Linux终端意外冻结的 Ctrl + S
在很多类Unix 的系统上,Ctrl-S 都有特殊的含义:它会“冻结”终端(它曾经被用来暂停快速滚动)。因为“保存”一般也是用这个快捷键,所以经常会有人不假思索地按下这个快捷键,结果大多数人都会被搞糊涂(我也经常犯这个错误)。解冻终端是用Ctrl-Q,所以如果你忽然发觉终端看起来被冻结了,试一下Ctrl-Q,看能不能释放它。
4.5. 移至行首或行尾
假设您正在键入一个长命令,并且在途中您意识到必须在开始时进行一些更改。您将使用几次向左键击移动到行的开头。并且类似地进行到该行的末尾。
当然,您可以在此处使用Home和End键,但是也可以使用Ctrl + A转到行的开头,并使用Ctrl + E转到结尾。
移至该行的开头或结尾
我发现它比使用Home和End键更方便,尤其是在笔记本电脑上。
4.6. 读取压缩日志而不解压缩
服务器日志通常被gzip压缩以节省磁盘空间。这给分析日志的开发人员或系统管理员带来了一个问题。您可能必须将其scp到本地,然后提取它来访问文件,因为有时您没有提取日志的写权限。
值得庆幸的是,在这种情况下,z命令可以帮助您。z命令提供了用于处理日志文件(例如less,cat,grep等)的常规命令的替代方法。
这样您就可以使用zless,zcat,zgrep等命令查看压缩包的内容,甚至不必显式提取压缩文件。
1 | [linuxidc@localhost ~/www.linuxidc.com]$zcat linuxidc_log.zip | more |
不解压缩读取压缩文件
4.7. 使用 less读取文件
要查看文件的内容,cat不是最佳选择,特别是如果文件很大。cat命令将在屏幕上显示整个文件。
您可以使用Vi,Vim或其他基于终端的文本编辑器,但是如果您只想读取文件,则 less 命令是更好的选择。
1 | less -N linuxidc.txt//按下v键来编辑文件//退出编辑器后,你可以继续用less浏览了 |
您可以在更少的范围内搜索字词,按页移动,高亮与行号等。
4.8. 使用 !$ 重新使用上一个命令中的最后一项
在许多情况下,使用上一个命令的参数很方便。
假设您必须创建一个目录,然后进入新创建的目录。那么,您可以使用!$
选项。
使用 !$
更好的方法您可以使用使用alt + . 。在最后一个命令的选项之间来回移动的次数。
4.9. 用!!重用当前命令中的上一个命令。
您可以使用!!调用前面的整个命令。当您必须运行一个命令并意识到它需要root特权时,这一点特别有用。
一个快速 sudo !! 省去了很多击键。
用!!重用当前命令中的上一个命令。
4.10. 使用别名来修正错别字
您可能已经知道Linux中的别名命令是什么。你能做的是,用它们来修正打字错误。
例如,您可能经常将grep输入为gerp。如果您以这种方式在您的bashrc中放置一个别名:
1 | alias gerp=grep |
这样,您无需再次输入命令。