记各种Linux命令和参数很痛苦,用到时,记错又很麻烦,最好的方法就是一边记录一边学啦啦。
一天学一个命令
Linux的命令很多,不积跬步,无以至千里,所以就一天学一个2333。 (其实也不是一天一个,就是想起一个是一个)
top
top
命令是Linux下常用的性能分析工具,能够实时显示系统中各个进程的资源占用状况。像windows下的任务管理器。top
的作用是显示当前系统正在执行的进程的相关信息,包括进程ID、内存占用率、CPU占用率等。top
是一个动态显示过程,即可以通过用户按键来不断刷新当前状态。如果再前台执行该命令,它将独占前台,直到用户终止该程序为止。
输入top
进入程序,按下q
或^C
退出
可以通过man top
显示top
的具体用法
常用参数:
-b
: 分批处理,各个进程的资源占用情况时动态变化的,所以top
显示的也是实时变化的,加上-b
可以保留上一个时间间隔的情况-d
: 指定每两次屏幕信息刷新之间的时间间隔,秒为单位-p <pid>
: 查看指定进程的资源管理情况,可多个进程pid使用逗号隔开-u <user>
: 指定用户的进程-i
: 不显示僵死进程和闲置进程-c
: 显示整个命令行,而不是只是命令名-n
: 设置更新次数,比如 -n 2
就是在数据更新2次之后就退出
交互命令:
使用top命令进入交互后,就可以使用某些按键实行某些指令:1
: 查看每个逻辑CPU的基本状况,再按1
返回P
: 以CPU使用资源进行排序(默认就是以CPU占有率排序)M
: 以内存占有率进行排序(从大到小,下同)N
: 以pid的大小进行排序T
: 以该进程使用CPU的时间进行排序<
和>
: 向左或向右移动列,按照所在的列排序h
或?
: 获取帮助,显示top所有参数和命令列表<space>
: 强制刷新显示
各列含义
PID
: 进程idPPID
: 父进程idUID
: 进程所有者的用户idUSER
: 进程所有者的用户名GROUP
: 进程所有者的组名TTY
: 启动进程的终端名。不是从终端启动的进程则显示为?PR
: 优先级NInice
: NI值,负值表示高优先级,正值表示低优先级P
: 最后使用的CPU,仅在多CPU环境下有意义%CPU
: 上次更新到现在的CPU时间占用百分比TIME
: 进程使用的CPU时间总计,单位秒TIME+
: 进程使用的CPU时间总计,单位1/100秒%MEM
: 进程使用的物理内存百分比VIRT
: 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RESSWAP
: 进程使用的虚拟内存中,被换出的大小,单位kb。RES
: 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATACODE
: 可执行代码占用的物理内存大小,单位kbDATA
: 可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbSHR
: 共享内存大小,单位kbnFLT
: 页面错误次数nDRT
: 最后一次写入到现在,被修改过的页面数。COMMAND
: 命令名/命令行WCHAN
: 若该进程在睡眠,则显示睡眠中的系统函数名S
: 进程状态:
—–D
: 不可中断的睡眠状态
—–R
: 运行
—–S
: 睡眠
—–T
: 跟踪/停止
—–Z
: 僵尸进程
区分PR
和NI
:NI
是优先值,是用户层面的概念, PR
是进程的实际优先级, 是给内核(kernel)看的。一般情况下,PR
=NI
+20。
信息统计区:
第1行任务队列信息
从左到右信息分别是:
当前时间
系统启动持续时间
当前登陆用户数
系统负载,即任务队列的平均长度
第2行进程信息(Tasks)
信息分别是:total
:进程总数running
: 运行的进程数sleeping
: 睡眠的进程数stop
: 停止的进程数zombie
: 僵死进程数
第3行CPU信息
us
: 用户空间占用CPU百分比sy
: 内核空间占用CPU百分比;ni
: 用户进程空间内改变过优先级的进程占用CPU百分比id
: 空闲CPU百分比hi
: 硬中断(Hardware Interrupts)占用CPU的百分比 (硬中断是指: 由硬件设备引起的终端)si
: 软中断(Software Interrupts)占用CPU的百分比,(软中断是指:指令或由进程中断,由software引起,是一种系统层级的调用,是一种与内核交互的手段,尤其是错误或异常处理时)
第4行内存信息(Mem)–真实内存
total
: 物理内存总量used
: 已使用的物理内存总量free
: 空闲内存总量buffers
: 用作内核缓存的内存量
第5行交换区信息(Swap)–虚拟内存
total
: 交换区总量used
: 已使用的交换去总量free
: 空闲交换区总量cached
: 缓冲的交换区总量
nslookup
nslookup是一个命令行工具,查询DNS的命令,解析域名是否正常,在网络故障的时候,也可以用于诊断网络是否连接。
如果没指定dns-server,用系统默认的dns服务器。
telnet
|
|
用于登录远程主机,对远程主机进行管理。传输的内容是明文的,不安全。所以Linux不再开放telnet
服务,由ssh
代替。(比如,用telnet连接我自己的学生机,就直接被拒绝了233)
之前做,proxy_web_server,用的是telnet
连接代理服务器然后发送请求,需要手动构造请求,比如:
有点麻烦。
find
find用于文件查找。
列出当前目录,及子目录下的所有文件
-name 参数表示查找文件的名字,可以使用正则匹配,比如"*.cpp"
找出当前目录下不是以png
结尾的文件
(其实我不太会用正则)
当前目录下,路径中包括某文件的文件
|
|
一般默认是普通文件
|
|
关于查找深度的限制
|
|
最大深度
|
|
最小查找深度
find 可加的参数有很多:
常用的有-name, -regex, -path, -type, -root, -size, -maxpath, -minpath等。
whereis
whereis命令用于搜索程序名.
只搜索二进制文件(参数-b)、man说明文件(参数-m)和源代码文件(参数-s)。如果省略参数,则返回所有信息。
|
|
type
type用来区分某个命令是由shell自带的,还是由shell外部的独立二进制文件提供的。如果是外部命令,那么使用-p参数,会显示该命令的路径,相当于which命令。
如:
cd 是shell内部命令
vim 是由外部的独立的二进制文件提供的:
which
which 用于查询命令是否存在以及命令存放的位置
命令不存在
命令存在