个人认为先掌握一些比较常用的,剩下的需要再学
总结了一些面试比较可能会问道的命令
grep
find —— find [指定查找⽬录] [查找规则] [查找完后执⾏的action]
ls
文件操作略
Linux系统对每个登录的⽤户都限制其最⼤进程数和打开的最⼤⽂件句柄数。为了提⾼性能,可以根据硬件 资源的具体情况设置各个⽤户的最⼤进程数和打开的最⼤⽂件句柄数。可以⽤ulimit -a来显示当前的各种 系统对⽤户使⽤资源的限制。
设置⽤户的最⼤进程数: ulimit -u 1024 设置⽤户可以打开的最⼤⽂件句柄数: ulimit -n 65530
⽤于转换Windows和UNIX的换⾏符,通常在Windows系统h开发的脚本和配置,UNIX系统下都需要转换。
使⽤⽅式:
dos2unix test.txt
unix2dos test.txt
#转换整个⽬录 f
ind . -type f -exec dos2unix {} ;
find ./ -type f此命令是显示当前⽬录下所有的⽂件
ps⽤⼀于显示系统内的所有进程,-l或l 采⽤详细的格式来显示进程状况。
常⽤⽅式:ps -elf 和ps -ef
(1)检测是否有活动进程:
sudo ps -ef |grep “nginx: master process” |grep -v grep
(2)检测有⼏个同样的活动进程
sudo ps -ef |grep “nginx: master process” |grep -v grep |wc -l
top命令⽤于查看活动进程的CPU和内存信息,能够实时显示系统中各个进程的资源占⽤情况,可以按照 CPU、内存的使⽤情况和执⾏时间对进程进⾏排序。
详情请见
第一行:
10:01:23 — 当前系统时间
126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)
2 users — 当前有2个用户登录系统
load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。
load average数据是每隔5秒钟检查一次活跃的进程数,然后按特定算法计算出的数值。如果这个数除以逻辑CPU的数量,结果高于5的时候就表明系统在超负荷运转了。
第二行:
Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。
第三行:cpu状态
6.7% us — 用户空间占用CPU的百分比。
0.4% sy — 内核空间占用CPU的百分比。
0.0% ni — 改变过优先级的进程占用CPU的百分比
92.9% id — 空闲CPU百分比
0.0% wa — IO等待占用CPU的百分比
0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比
0.0% si — 软中断(Software Interrupts)占用CPU的百分比
第四行:内存状态
8306544k total — 物理内存总量(8GB)
7775876k used — 使用中的内存总量(7.7GB)
530668k free — 空闲内存总量(530M)
79236k buffers — 缓存的内存量 (79M)
第五行:swap交换分区
2031608k total — 交换区总量(2GB)
2556k used — 使用的交换区总量(2.5M)
2029052k free — 空闲交换区总量(2GB)
4231276k cached — 缓冲的交换区总量(4GB)
第七行以下:各进程(任务)的状态监控
PID — 进程id
USER — 进程所有者
PR — 进程优先级
NI — nice值。负值表示高优先级,正值表示低优先级
VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR — 共享内存大小,单位kb
S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU — 上次更新到现在的CPU时间占用百分比
%MEM — 进程使用的物理内存百分比
TIME+ — 进程使用的CPU时间总计,单位1/100秒
COMMAND — 进程名称(命令名/命令行)
pidstat⽤于监控全部或指定的进程占⽤系统资源的情况,包括CPU、内存、磁盘I/O、程切换、线程数等 数据。
-u:表示查看cpu相关的性能指标
-w:表示查看上下⽂切换情况
-t:查看线程相关的信息,默认是进程的;常与-w结合使⽤(cpu的上下⽂切换包括进程的切换、线程的 切换、中断的切换)
-d:展示磁盘 I/O 统计数据
-p:指明进程号
使⽤⽅式:pidstat [option] interval [count] 使⽤范例:pidstat -urd -p 进程号
CPU信息
%usr #⽤户层任务正在使⽤的CPU百分⽐(with or without nice priority ,NOT include time spent running a virtual processor)
%system #系统层正在执⾏的任务的CPU使⽤百分⽐
%guest #运⾏虚拟机的CPU占⽤百分⽐
%CPU #所有的使⽤的CPU的时间百分⽐
CPU #处理器数量
Command #命令
内存信息
· PID #进程号
· minflt/s #每秒次缺⻚错误次数(minor page faults),次缺⻚错误次数意即虚拟内 存地址映射成物理内存地址产⽣的page fault次数
· majflt/s #每秒主缺⻚错误次数(major page faults),当虚拟内存地址映射成物理 内存地址时,相应的page在swap中,
§ 这样的page fault为major page fault,⼀般在内存使⽤紧张时产⽣
VSZ #该进程使⽤的虚拟内存(以kB为单位)
RSS #该进程使⽤的物理内存(以kB为单位)
%MEM #当前任务使⽤的有效内存的百分⽐
Command #任务的命令名
磁盘I/O
PID #进程号
kB_rd/s #每秒此进程从磁盘读取的千字节数
kB_wr/s #此进程已经或者将要写⼊磁盘的每秒千字节数
kB_ccwr/s #由任务取消的写⼊磁盘的千字节数
Command #命令的名字
上下⽂切换 PID #PID号
cswch/s #每秒⾃动上下⽂切换
nvcswch/s #每秒⾮⾃愿的上下⽂切换
Command #命令
此命令⽤于显示系统内存的使⽤情况,包括总体内存、⼰经使⽤的内存;还可⽤于显示系统内核使⽤的缓 冲区,包括缓冲(buffer)和缓存(cache)等。
使⽤⽅式:free free -h
Mem ⾏(第⼆⾏)是内存的使⽤情况。
Swap ⾏(第三⾏)是交换空间的使⽤情况。
total 列显示系统总的可⽤物理内存和交换空间⼤⼩。
used 列显示已经被使⽤的物理内存和交换空间。
free 列显示还有多少物理内存和交换空间可⽤使⽤。
shared 列显示被共享使⽤的物理内存⼤⼩。
buff/cache 列显示被 buffer 和 cache 使⽤的物理内存⼤⼩。
free 与 available
在 free 命令的输出中,有⼀个 free 列,同时还有⼀个 available 列。这⼆者到底有何区别? free 是真正尚未被使⽤的物理内存数量。⾄于 available 就⽐较有意思了,它是从应⽤程序的⻆度看到的 可⽤内存数量。Linux 内核为了提升磁盘操作的性能,会消耗⼀部分内存去缓存磁盘数据,就是我们介绍 的 buffer 和 cache。所以对于内核来说,buffer 和 cache 都属于已经被使⽤的内存。当应⽤程序需要 内存时,如果没有⾜够的 free 内存可以⽤,内核就会从 buffer 和 cache 中回收内存来满⾜应⽤程序的 请求。所以从应⽤程序的⻆度来说,available = free + buffer + cache。请注意,这只是⼀个很理想的 计算⽅式,实际中的数据往往有较⼤的误差。
加上 -h 选项按G、M显示,持续观察内存的状况,此时可以使⽤ -s 选项并指定间隔的秒数:
1、Buffer(缓冲区)是系统两端处理速度平衡(从⻓时间尺度上看)时使⽤的。它的引⼊是为了减⼩短期 内突发I/O的影响,起到流量整形的作⽤。⽐如⽣产者——消费者问题,他们产⽣和消耗资源的速度⼤体接 近,加⼀个buffer可以抵消掉资源刚产⽣/消耗时的突然变化。
2、Cache(缓存)则是系统两端处理速度不匹配时的⼀种折衷策略。因为CPU和memory之间的速度差异 越来越⼤,所以⼈们充分利⽤数据的局部性(locality)特征,通过使⽤存储系统分级(memory hierarchy)的策略来减⼩这种差异带来的影响。
3、假定以后存储器访问变得跟CPU做计算⼀样快,cache就可以消失,但是buffer依然存在。⽐如从⽹络 上下载东⻄,瞬时速率可能会有较⼤变化,但从⻓期来看却是稳定的,这样就能通过引⼊⼀个buffer使得 OS接收数据的速率更稳定,进⼀步减少对磁盘的伤害。
pstack命令⽤来显示每个进程的调⽤栈。可以使⽤pstack来查看进程正在挂起的执⾏⽅法,也可以⽤来查 看进程的本地线程堆栈。
用法:pstack 进程ID gdb的 bt命令 类似
系统调⽤⼯具,是Linux系统下的⼀款程序调试⼯具,⽤来监控⼀个应⽤程序所使⽤的 系统调⽤,通过它 可以跟踪系统调⽤,让你熟悉⼀个Linux程序在背后是怎么⼯作的。 适⽤于想研究Linux底层的⼯作机制的 场景。
常用参数
-c 统计每⼀系统调⽤的所执⾏的时间,次数和出错的次数等.
-p pid 跟踪指定的进程pid.
strace -c -p 25901
ifconfig ping
telnet是TCP/IP协议族的⼀员,是⽹络远程登录服务的标准协议,帮助⽤户在本地计算机上连接远程主 机。
使⽤⽅式:telnet IP PORT
和ssh的区别 端⼝区别:telnet是23 ssh是22 本质:telnet是明码传输,ssh是加密传输
traceroute可以提供从⽤户的主机到互联⽹另⼀端的主机的路径,虽然每次数据包由同⼀出发点到达同⼀ ⽬的地的路径可能会不⼀样,但通常来说⼤多数情况下路径是相同的。
使⽤⽅式:traceroute sina.com
此命令显示⽹络连接、端⼝信息等,另外⼀个命令ss与netstat命令类似,不再单独介绍。
(1)根据使⽤端⼝
netstat -nap | grep 8080
(2)根据进程ID查找进程的详细信息
ps -elf | grep 25901
tcpdump是⽹络状况分析和跟踪⼯具,是可以⽤来抓包的实⽤命令,使⽤前需要对TCP/IP有所熟悉,因为 过滤使⽤的信息都是TCP/IP格式。
详细用法
基于IP地址过滤:host
tcpdump host 192.168.10.100
# 根据源ip进行过滤 $ tcpdump -i eth2 src 192.168.10.100
# 根据目标ip进行过滤 $ tcpdump -i eth2 dst 192.168.10.200
基于端口进行过滤:port
tcpdump port 8088
# 根据源端口进行过滤 $ tcpdump src port 8088
# 根据目标端口进行过滤 $ tcpdump dst port 8088