(1)sudo 根权限
(2)ls 当前目录文件及子目录 e.g.:ls test/
ls +目录路径 该目录路径的文件及子目录
ls -al 目录路径 该目录路径的文件及子目录+文件Unix权限、用户组、用户信息
(3)cd +目录路径
..
- 返回上一次的目录
(4)mkdir 创建子文件夹
+路径和名称
-p 路径和名称 路径可以不存在
+名称 当前目录创建目录
(5)cp 拷贝
源文件 目的文件
源目录 目的目录 -rf
(6)rm 文件名
-f 需要根权限
目录名称 -rf 删除目录
(7)grep "关键词" 文件名 -r 在指定文件中检索包含关键词的行
目录 -r 目录。。。 -r 递归查询
| grep "关键词2" 在关键词1的结果中检索包含关键词2的行
| grep -v "关键词2"
(8)cat 文件名 输出文件内容
(9)poweroff 关机
reboot 重启
-f 强制重启,无需shutdown
(10)yum centos
apt -get
(11)性能分析
top:
top [-] [d] [q] [c] [S] [s] [i] [n] [b]
其中
d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s
q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行
c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称
S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来
s : 安全模式,将交谈式指令取消, 避免潜在的危机
i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程
n : 更新的次数,完成后将会退出 top
b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内
top运行参数解析:
us 用户模式下CPU占比 sy系统模式下CPU占比
ni
id 空闲状态CPU占比
wa 因为I/O等待造成的CPU占用比
hi 硬中断占比
si 软中断占比
st CPU等待虚拟机调度的时间占比
VIRT 进程使用虚拟内存
RES 常驻内存
SHR 进程使用共享内存
S:进程运行状态
%CPU:运行时CPU占比
%MEM:内存占比
TIME+:进程占用CPU总时长
COMMAND:进程名
1. 查看CPU方法
总核数=物理CPU个数✖每颗物理CPU核数
总逻辑CPU数=物理CPU个数 X 每颗物理CPU的核数 X 超线程数
2. 查看物理CPU个数
cat /proc/cpuinfo| grep “physical id”| sort| uniq| wc -l
3. 查看每个物理CPU中core的个数(即核数)
cat /proc/cpuinfo| grep “cpu cores”| uniq
4. 查看逻辑CPU的个数
cat /proc/cpuinfo| grep “processor”| wc –l
top -p +PID 查看进程信息
top -H -p: 该进程所有线程的top信息
top视图下 按P CPU占用百分比排序 M 占用内存百分比排序 T 累计占据CPU时间排序
(12)进程
ps:
-A 显示所有的进程,跟-e的效果相同
-a 显示现行终端机下的所有进程,包括其他用户的进程
-u 显示当前用户的进程状态
-x 通常与 a 这个参数一起使用,可列出较完整信息
-l 较长、较详细的将该PID的信息列出
-j 工作的格式(jobs format)
-f 把进程的所有信息都显示出来
-e 表示显示所有继承
[root]# ps -aux
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.0 193952 7068 ? Ss 01:43 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root 2 0.0 0.0 0 0 ? S 01:43 0:00 [kthreadd]
root 4 0.0 0.0 0 0 ? S< 01:43 0:00 [kworker/0:0H]
root 6 0.0 0.0 0 0 ? S 01:43 0:00 [ksoftirqd/0]
root 7 0.0 0.0 0 0 ? S 01:43 0:00 [migration/0]
root 8 0.0 0.0 0 0 ? S 01:43 0:00 [rcu_bh]
root 9 0.0 0.0 0 0 ? S 01:43 0:01 [rcu_sched]
root 10 0.0 0.0 0 0 ? S< 01:43 0:00 [lru-add-drain]
root 11 0.0 0.0 0 0 ? S 01:43 0:00 [watchdog/0]
root 12 0.0 0.0 0 0 ? S 01:43 0:00 [watchdog/1]
root 13 0.0 0.0 0 0 ? S 01:43 0:00 [migration/1]
root 14 0.0 0.0 0 0 ? S 01:43 0:00 [ksoftirqd/1]
root 16 0.0 0.0 0 0 ? S< 01:43 0:00 [kworker/1:0H]
VSZ:该进程使用掉的虚拟内存量 (Kbytes)
RSS:该进程占用的固定的内存量 (Kbytes)
TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
STAT:代表该进程目前的状态,主要的状态有:
R:该进程正在运行
S:该进程正在休眠,但可被某些信号(signal)唤醒
D:无法中断的休眠状态(通常为IO进程)
T:该进程已经停止
Z:僵死状态,该进程应该已经终止,但是其父进程却无法正常的终止它,造成zombie(疆尸)程序的状态
W:等待状态,等待内存的分配
<:高优先级的进程
N:低优先级的进程
START:该进程被触发启动的时间
COMMAND:该进程的实际指令
ps -aux --sort -pcpu|less -N #按照cpu占用来排序
或
ps -aux --sort -pmem|less -N #按照内存占用来排序
watch -n 1 'ps -aux --sort -pcpu,+pmem | head -6' 显示前5个进程情况,每秒更新
[root]# ps -l
F S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD
4 S 0 3026 3022 0 80 0 - 28886 do_wai pts/0 00:00:00 bash
0 R 0 3239 3026 0 80 0 - 38331 - pts/0 00:00:00 ps
F:代表这个进程的flag,如果是4,则代表使用者为 super user
S:代表这个进程的状态stat
C:占用CPU资源的百分比
PRI:指进程的执行优先级(Priority的简写),其值越小越早被执行
NI:代表进程的nice值,其表示进程可被执行的优先级的修正数值
ADDR:代表进程的地址,它指出该进程在内存的哪个部分,如果是个正在运行的程序,一般都是"-"
SZ:占用的内存大小
WCHAN:判断当前进程是否正在运行,若为"-",则代表正在运行;若该进程处于休眠状态,该值就是它在内核中的地址
TTY:该进程是在那个终端机上面运行,若与终端机无关,则显示?,另外,tty1-tty6 是本机上面的登入者程序,若为 pts/0 等等的,则表示为由网络连接进主机的程序。
TIME:占用CPU的时间
CMD:所下达的指令名称
kill/kill -9 杀死进程 -9发送exit信号,不会阻塞
(13)检测虚拟内存
vmstat 一个服务器监控命令
-a
显示活跃和非活跃内存
-f
显示从系统启动至今的fork数量
-m
显示slabinfo
-s
显示内存相关统计信息及多种系统活动数量
-d
显示磁盘相关的统计信息
-S
使用指定单位显示。参数有 k 、K 、m 、M ,分别代表1000、1024、1000000、1048576字节(Byte),默认单位为K(1024 Bytes)
delay
刷新时间间隔,如果不指定,只显示一条结果
count
刷新次数,如果不指定刷新次数,但指定了刷新时间间隔,这时刷新次数为无穷
vmstat 2 3 采样3次 间隔2秒
r 运行队列中进程数量 b 被阻塞的进程数
swpd 虚拟内存大小 free 可用物理内存大小 buff 物理内存缓存读写操作的buffer大小 cache 物理内存缓存进程地址空间的buffer大小
si 每秒从SWAP读入RAM的大小 so 每秒葱SWAP读入RAM的大小 内存够用是为0,否则长期大于0影响系统性能
bi 文件系统或SWAP读入RAM的块数 bo 文件系统或SWAP读入RAM的块数
in 每秒中断数 cs 每秒上下文切换次数
当我们调用系统函数,就要进行上下文切换;当进行线程的切换,也要进行上下文切换,这个值越小越好。例如在apache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到cs到一个比较小的值,这个进程或线程数就是比较合适的值了。系统调用也是如此,每次调用系统函数,我们的代码就会进入到内核空间(内核态),导致上下文切换,这个过程很耗资源,所以要尽量避免频繁的系统调用。上下文切换次数过多表示你的CPU大部分时间浪费在上下文切换中,导致CPU干正经事的时间少了。
vmstat是一个服务器监控命令,通过vmstat可以看到CPU和内存的使用情况。目前说来,对于服务器监控有用处的度量主要有:
r(运行队列)
pi(页导入)
us(用户CPU)
sy(系统CPU)
id(空闲CPU)
r(运行队列)展示了正在执行和等待CPU资源的任务个数,当这个值超过了CPU数目,就会出现CPU瓶颈。
Linux下查看CPU核心数的命令:
cat /proc/cpuinfo|grep processor|wc -l
解决CPU瓶颈的办法如下:
1.增加CPU个数或核数(推荐)
2.调整任务的执行时间,如把大任务放到系统不繁忙的时候进行,进而平衡系统的任务。
3.调整已有任务的优先级
vmstat跟踪CPU满负荷
首先需要声明一点的是,vmstat中CPU的度量是百分比的。当us+sy的值接近100的时候,表示CPU正在接近满负荷工作。但要注意的是,CPU满负荷工作并不能说明什么,Linux总是试图要CPU尽可能的繁忙,使得任务的吞吐量最大化。唯一能够确定CPU瓶颈的还是r(运行队列)的值。
vmstat跟踪内存瓶颈
通过vmstat识别内存瓶颈:
当内存的需求大于实际的物理内存时,服务器就会启动虚拟内存机制,通过虚拟内存,可以将内存段移到SWAP DISK的特殊磁盘段上,这样就会出现虚拟内存的页导入和页导出现象。页导出并不能说明出现了内存瓶颈,虚拟内存系统经常会对内存段进行页导出,但是页导入操作就表明服务器需要更多的内存了, 页导入需要从SWAP DISK上将内存段复制回内存,导致服务器速度变慢。
解决内存瓶颈的办法如下:
1. 最简单的,增加内存(推荐)
2. 改小SGA,使得对内存的需求减少
3. 改小PGA,使得对内存的需求减少