常用命令
bash
查找文件
比如查找当前目录下以.pid
为后缀的文件:find ./ -name *.pid
监听文件
比如监听最新的日志:tail -f xxx.log
移动光标
跳到本行的行首:ctrl+a
跳到行尾:ctrl+e
查进程
a:显示当前终端下的所有进程信息,包括其他用户的进程。
u:使用以用户为主的格式输出进程信息。
x:显示当前用户在所有终端下的进程。
USER:启动该进程的用户账号名称
PID:该进程的ID号,在当前系统中是唯一的
%CPU:CPU占用的百分比
%MEM:内存占用的百分比
VSZ:占用虚拟内存(swap空间)的大小
RSS:占用常驻内存(物理内存)的大小
TTY:该进程在哪个终端上运行。“?”表未知或不需要终端
STAT:显示了进程当前的状态,如S(休眠)、R(运行)、Z(僵死)、<(高优先级)、N(低优先级)、s(父进程)、+(前台进程)。对处于僵死状态的进程应予以手动终止。
START:启动该进程的时间
TIME:该进程占用CPU时间
COMMAND:启动该进程的命令的名称
大部分跟第一种一样,PPID
为父进程的PID。
pstree -aup
以树状图的方式展现进程之间的派生关系,显示效果比较直观。
-a:显示每个程序的完整指令,包含路径,参数或是常驻服务的标示;
-c:不使用精简标示法;
-G:使用VT100终端机的列绘图字符;
-h:列出树状图时,特别标明现在执行的程序;
-H<程序识别码>:此参数的效果和指定”-h”参数类似,但特别标明指定的程序;
-l:采用长列格式显示树状图;
-n:用程序识别码排序。预设是以程序名称来排序;
-p:显示程序识别码;
-u:显示用户名称;
第一行:
12:26:46
系统当前时间
up 1 day, 13:32
系统的运行时间.本机己经运行 1 天 13 小时 32 分钟
2 users
当前登录了两个用户
load average: 0.00,0.00,0.00
系统在之前 1 分钟、5 分钟、15 分钟的平均负载。如果 CPU 是单核的,则这个数值超过 1 就是高负载:如果 CPU 是四核的,则这个数值超过 4 就是高负载 (这个平均负载完全是依据个人经验来进行判断的,一般认为不应该超过服务器 CPU 的核数)
第二行:
Tasks: 95 total
系统中的进程总数
1 running
正在运行的进程数
94 sleeping
睡眠的进程数
0 stopped
正在停止的进程数
0 zombie
僵尸进程数。如果不是 0,则需要手工检查僵尸进程
第三行:
Cpu(s): 0.1 %us
用户模式占用的 CPU 百分比
0.1%sy
系统模式占用的 CPU 百分比
0.0%ni
改变过优先级的用户进程占用的 CPU 百分比
99.7%id
空闲 CPU 占用的 CPU 百分比
0.1%wa
等待输入/输出的进程占用的 CPU 百分比
0.0%hi
硬中断请求服务占用的 CPU 百分比
0.1%si
软中断请求服务占用的 CPU 百分比
0.0%st
st(steal time)意为虚拟时间百分比,就是当有虚拟机时,虚拟 CPU 等待实际 CPU 的时间百分比
第四行:
Mem: 625344k total
物理内存的总量,单位为KB
571504k used
己经使用的物理内存数量
53840k&ee
空闲的物理内存数量。我们使用的是虚拟机,共分配了 628MB内存,所以只有53MB的空闲内存
65800k buffers
作为缓冲的内存数量
第五行:
Swap: 524280k total
交换分区(虚拟内存)的总大小
Ok used
已经使用的交换分区的大小
524280k free
空闲交换分区的大小
409280k cached
作为缓存的交换分区的大小
缓冲(buffer)和缓存(cache)的区别:
缓存(cache)是在读取硬盘中的数据时,把最常用的数据保存在内存的缓存区中,再次读取该数据时,就不去硬盘中读取了,而在缓存中读取。
缓冲(buffer)是在向硬盘写入数据时,先把数据放入缓冲区,然后再一起向硬盘写入,把分散的写操作集中进行,减少磁盘碎片和硬盘的反复寻道,从而提高系统性能。
简单来说,缓存(cache)是用来加速数据从硬盘中"读取"的,而缓冲(buffer)是用来加速数据"写入"硬盘的。
PID:进程的 ID。
USER:该进程所属的用户。
PR:优先级,数值越小优先级越高。
NI:优先级,数值越小、优先级越高。
VIRT:该进程使用的虚拟内存的大小,单位为 KB。
RES:该进程使用的物理内存的大小,单位为 KB。
SHR:共享内存大小,单位为 KB。
S:进程状态。
%CPU:该进程占用 CPU 的百分比。
%MEM:该进程占用内存的百分比。
TIME+:该进程共占用的 CPU 时间。
COMMAND:进程的命令名。
其他
查端口占用:lsof -i:端口号
查指定程序名占用了哪几个端口: netstat -tlnp | grep {process_name}
查 TCP 连接:netstat -an | grep tcp
切换到 root 用户:sudo -u root -H bash
vim操作
搜索
往后搜,比如搜ERROR日志:/ERROR
往前搜,比如搜ERROR日志:?ERROR
再输入n
可以定位到下一个,N
定位到上一个
跳转
跳到文件最后::$
跳到文件开头::0
移动光标
移动到行首:Shift+6
移动到行尾:Shift+4
其他
删除当前行:dd
shell脚本的调用
sh -x file_name.sh
可以展示调用该脚本的详细过程,起到 debug 脚本的作用。
Last updated
Was this helpful?