Linux性能分析工具与Linux调优相关命令汇总.docx
Linux性能分析工具与Linux调优相关命令汇总出于对LinUX操作系统的兴趣,以及对底层知识的强烈欲望,因此整理了这篇文章。本文也可以作为检验基础知识的指标,另外文章涵盖了一个系统的方方面面。如果没有完善的计算机系统知识,网络知识和操作系统知识,文档中的工具,是不可能完全掌握的,另外对系统性能分析和优化是一个长期的系列。本文档主要是结合Linux大牛,Netflix高级性能架构师BrendanGregg更新Linux性能调优工具的博文,搜集Linux系统性能优化相关文章整理后的一篇综合性文章,主要是结合博文对涉及到的原理和性能测试的工具展开说明。背景知识:具备背景知识是分析性能问题时需要了解的。比如硬件CaChe;再比如操作系统内核。应用程序的行为细节往往是和这些东西互相牵扯的,这些底层的东西会以意想不到的方式影响应用程序的性能,比如某些程序无法充分利用CaChe,从而导致性能下降。比如不必要地调用过多的系统调用,造成频繁的内核/用户切换等。性能分析工具首先来看一张图:AnalysisandToolsOperating System nets tatHardwareVFS×t3.ZFSTCP/UDPSchedulerSocketsApplicationsDBs, all server types.erf top pidstat mpstat dstatSystem LibrarieSystem Call InterfaceLVMIPCPUDRAM IBlock Device InterfaceEthernetiostatDevic© Driversslabtop dstatVirtual MMemory *I/O Bridge tcpdump ip nicstat dtraceperfI/O ControllerNetwork Controllerblktrace dtraceI Port I I Port PingJVarious:sar/proc上图是BrendanGregg的一次性能分析的分享,这里面的所有工具都可以通过man来获得它的帮助文档,下面简单介绍介绍一下常规的用法:VmStat-虚拟内存统计vmstat(VirtualMeomoryStatistics,虚拟内存统计)是LinUX中监控内存的常用工具,可对操作系统的虚拟内存、进餐CPU等内整体情况进勺监视。vmstat的常规用法:Vmstatintervaltimes即每隔interval秒采样一次,共采样times次,如果省略times,则一直采集数据,直到用户手动停止为止。简单举个例子:$vmstat5procsmemory-swap-io-system-cpu-rbswpdfreebuffcachesisobiboincsussyidWa002632257282317674024400527521113101863002632278823i873824800243O2226620970可以使用ctrl+c停止vmstat采集数据。第一行显示了系统自启动以来的平均值,第二行开始显示现在正在发生的情况,接下来的行会显示每5秒间隔发生了什么,每一列的含义在头部,如下所示:procs:!这一列显示了多少进程在等待cpu,b列显示多少进程正在不可中断的休眠(等待10)。memory:SWaPd列显示了多少块被换出了磁盘(页面交换),剩下的列显示了多少块是空闲的(未被使用),多少块正在被用作缓冲区,以及多少正在被用作操作系统的缓存。swap:显示交换活动:每秒有多少块正在被换入(从磁盘)和换出(到磁盘)。SyStem:显示每秒中断(in)和上下文切换(CS)的数量。cpu:显示所有的CPU时间花费在各类操作的百分比,包括执行用户代码(非内核),执行系统代码(内核),空闲以及等待10。内存不足的表现:freememory急剧减少,回收buffer和CaChe也无济于事,大量使用交换分区(SWPd),页面交换(SWaP)频繁,读写磁盘数量(io)增多,缺页中断(in)增多,上下文切换(cs)次数增多,等待IO的进程数(b)增多,大量CPU时间用于等待IO(wa)iostat-用于报告中央处理器统计信息iostat用于报告中央处理器(CPU)统计信息和整个系统、适配器、tty设备、磁盘和CD-ROM的输入/输出统计信息,默认显示了与vmstat相同的cpu使用信息,使用以下命令显示扩展的设备统计:$Iostat-dx5Device:rrqm/swrqm/sr/sw/srsec/swsec/savgrq-szavgqu-szawaitsvctm%utilsda1.62.82.51.8138.836.940.70.123.26.02.6第一行显示的是自系统启动以来的平均值,然后显示增量的平均值,每个设备一行。常见IinUX的磁盘IO指标的缩写习惯:rq是request,r是read,W是write,qu是queue,SZ是size,a½verage,tm是time,svcserviceoITqrnyS和Wrqm/s:每秒合并的读和写请求,“合并的”意味着操作系统从队列中拿出多个逻辑请求合并为一个请求到实际磁盘。r/s和w/s:每秒发送到设备的读和写请求数。rsec/s和wsec/s:每秒读和写的扇区数。avgrq-sz:请求的扇区数。avgqu-sz:在设备队列中等待的请求数。await:每个IO请求花费的时间。svctm:实际请求(服务)时间。%util:至少有一个活跃请求所占时间的百分比。dstat-系统监控工具dstat显示了CPU使用情况,磁盘io情况,网络发包情况和换页情况,输出是彩色的,可读性较强,相对于VmStat和iostat的输入更加详细且较为直观。在使用时,直接输入命令即可,当然也可以使用特定参数。如下:dstat-cdlmnpsyiotop-LINUX进程实时监控工具iot。P命令是专门显示硬盘IO的命令,界面风格类似t。P命令,可以显示IO负载具体是由哪个进程产生的。是一个用来监视磁盘I/O使用状况的top类工具,具有与top相似的UI,其中包括PID、用户、I/O、进程等相关信息。可以以非交互的方式使用:iotop-bodinterval查看每个进程的I/O,可以使用pidstat,pidstat-dinstatPidStat-监控系统资源情况Pidstat主要用于监控全部或指定进程占用系统资源的情况,如CPU,内存、设备I。、任务切换、线程等。使用方法:pidstat-dintervalpidstat还可以用以统计CPU使用信息:pidstat-uinterval统计内存信息:pidstat-rintervaltoptop命令的汇总区域显示了五个方面的系统性能信息:负载:时间,登陆用户数,系统平均负载;进程:运行,睡眠,停止,僵尸;印u:用户态,核心态,NICE,空闲,等待IO,中断等;内存:总量,已用,空闲(系统角度),缓冲,缓存;交换分区:总量,已用,空闲任务区域默认显示:进程ID,有效用户,进程优先级,NICE值,进程使用的虚拟内存,物理内存和共享内存,进程状态,CPU占用率,内存占用率,累计CPU时间,进程命令行信息。htophtop是Linux系统中的一个互动的进程查看器,一个文本模式的应用程序(在控制台晟者X终端中),需要ncursesoIPioUSERPRINICPU*MEwCameM103100.00.0/SbtVlouncndS90.0.1*-/SystemZLtbrory/Frmework9.0.1*-usrsbin/ocspd520.09.0'-login-fpktovacs529.90.0I.一-zshe9.90.0'-/SysteBZLibroryZPrivoteFre9e.e.1*-SysteLtbrory/PrtvoteFr0*0.00.0,-ZApplIcatlonsZTrueCrypt.a09.00.0'-/Appltcottofts/TrueCrypt.o,e.e9.9,-/ApplicotIonsZTrueCrypt.o52.e9.6,-/SystemZLtbrory/Fromework090.0.e'-usrsMnrocoonMexIIIIIIIHI279V34eMBS*pMBicm2UTasks:89total,runningLoadoverage:.15,250.32Uptime:5days,13:44:19Mefn:WMUSed:279IMbuffers:FiS3EHF23BEBF3OQS!f4113SS9fsflESF6SSE39ft7SQ3Bf3!EHtop可让用户交互式操作,支持颜色主题,可横向或纵向滚动浏览进程列表,并支持鼠标操作。与top相比,htop有以下优点:可以横向或者纵向滚动浏览进程列表,以便看到所有的进程和完整的命令行。在启动上,比top更快。杀进程时不需要输入进程号。htop支持鼠标操作。Mpstatmpstat是MultiprocessorStatistics的缩写,是实时系统监控工具。其报告CPU的一些统计信息,这些信息存放在procstat文件中。在多CPUS系统里,其不但能查看所有CPU的平均状况信息,而且能够查看特定CPU的信息。常见用法:mpstat-PALLintervaltimesnetstatnetstat用于显示与IP、TCP、UDP和ICMP协议相关的统计数据,一般用于检验本机各端口的网络连接情况。常见用法:netstat-npl#可以查看你要打开的端口是否已经打开。netstatTn#打印路由表信息。netstat-in#提供系统上的接口信息,打印每个接口的MTU,输入分组数,输入错误,输出分组数,输出错误,冲突以及当前的输出队列的长度。ps-显示当前进程的状态PS参数太多,具体使用方法可以参考manps常用的方法:psaux#hsserverps-efgrep#hundsun杀掉某一程序的方法:psauxgrepmysqldgrep-vgrepawktprintS2),xargskill-9杀掉僵尸进程:PSYalIaWkYiH$2=Z)print$4,xargskill-9strace跟踪程序执行过程中产生的系统调用及接收到的信号,帮助分析程序或命令执行中遇到的异常情况。举例:查看mysqld在Iinux上加载哪种配置文件,可以通过运行下面的命令:strace-estat64mysqld-print-defaults>devnulluptime能够打印系统总共运行了多长时间和系统的平均负载,uptime命令最后输出的三个数字的含义分别是1分钟,5分钟,15分钟内系统的平均负荷。1.sofIsof(Iistopenfiles)是一个列出当前系统打开文件的工具。通过ISOf工具能够查看这个列表对系统检测及排错,常见的用法:查看文件系统阻塞IsofTboot查看端口号被哪个进程占用ISOf-i:3306查看用户打开哪些文件Isof-Uusername查看进程打开哪些文件lsof-p4838查看远程已打开的网络链接lsof-i192.168.34.128perfperf是Linuxkernel自带的系统性能优化工具。优势在于与LinuxKemel的紧密结合,它可以最先应用到加入KerneI的newfeature,用于查看热点函数,查看Cashemiss的比率,从而帮助开发者来优化程序性能。性能调优工具如perf,OProfiIe等的基本原理都是对被监测对象进行采样,最简单的情形是根据tick中断进行采样,即在tick中断内触发采样点,在采样点里判断程序当时的上下文。假如一个程序90%的时间都花费在函数foo()±,那么90%的采样点都应该落在函数foo()的上下文中。运气不可捉摸,但我想只要采样频率足够高,采样时间足够长,那么以上推论就比较可靠。因此,通过tick触发采样,我们便可以了解程序中哪些地方最耗时间,从而重点分析。汇总结合以上常用的性能测试命令并联系文初的性能分析工具的图,就可以初步了解到性能分析过程中哪个方面的性能使用哪方面的工具(命令)。常用的性能测试工具熟练并精通了第二部分的性能分析命令工具,引入几个性能测试的工具,介绍之前先简单了解几个性能测试工具:perf_events:一款随LinUX内核代码一同发布和维护的性能诊断工具,由内核社区维护和发展。Perf不仅可以用于应用程序的性能统计分析,也可以应用于内核代码的性能统计和分析。eBPFtools:一款使用bcc进行的性能追踪的工具,eBPFm即可以使用定制的eBPF程序被广泛应用于内核调优方面,也可以读取用户级的异步代码。重要的是这个外部的数据可以在用户空间管理。这个k-v格式的1w数据体是通过在用户空间调用bpf系统调用创建、添加、删除等操作管理的。perf-tools:一款基于Perf.events(Perf)和ftrace的LinUX性能分析调优工具集。Perf-ToOIS依赖库少,使用简单。支持LinUX3.2及以上内核版本。bcc(BPFCompilerCollection)::一款使用eBPF的Perf性能分析工具。一个用于创建高效的内核跟踪和操作程序的工具包,包括几个有用的工具和示例。利用扩展的BPF(伯克利数据包过滤器),正式称为eBPF,一个新的功能,首先被添加到LinUX3.15。多用途需要LinUX4.1以上BCC。kt叩:一种新型的Iinux脚本动态性能跟踪工具。允许用户跟踪Linux内核动态。ktap是设计给具有互操作性,允许用户调整操作的见解,排除故障和延长内核和应用程序。它类似于Linux和SolarisDTraceSystemTapoFlameGraphs:是一款使用perf,systemt叩,ktap可视化的图形软件允许最频繁的代码路径快速准确地识别可以是使用1.inuxobservabilitytoolsILinux性能观测工具Unux Performance Observability ToolsOperating SystemHardwarestrace !trace ssntstat sysdigVarious:首先学习的BasicTool有如下:uptimetop(htop)>mpstat>isstatvmstat>free>ping>nicstat>dstato高级的命令如下:sarnetstat、pidstat>strace>tcpdump>blktraceiotop>Slabtop、sysctl>proco1.inuxbenchmarkingtoolsILinux性能测评工具1.inuxPerformanceBenchmarkToolsOperating SystemHardwarewrk jmeteropenssl I I/O ContrOlter、 I I Interlace Transports Disk' j I OSk I I Swap PingI NOtWOrfc Controltof ,I , POrt I Port II traceroute mtr pchar是一款性能测评工具,对于不同模块的性能测试可以使用相应的工具,想要深入了解,可以参考最下文的附件文档。1.inuxtuningtoolsILinux性能调优工具1.inuxPerformanceTuningToolsApp ConfigOperatng SystemApplicationstune2fsstapkpatchMgaCliSystem LibrariesSystem Call IntodacoVFSFile SystemsVolume ManagerSOCkMSTCPzUDP.evice>zDevice Driversionic ip routeExpander InterconnectI/O ControBer Ihdpam blockdvHardwareVanous:sysctlsysScheduler .CPUInterconnect/ Ethemet I I/O BusP I/O Bndge Iulimitchcpu、dvcpustJ DRAM I NetWOrtC ContrOlter th toolInterface Transports IIPort I i Port -tc ipDisk - Disk I SWaPswapon是一款性能调优工具,主要是从IinUX内核源码层进行的调优,想要深入了解,可以参考下文附件文档。1.inUXobSeNabilitySarllinUX性能观测工具1.inuxPerformanceObservability:sar-n SOCK-n TCPOperating System"n S0CK6 -n ETCP-V-n NFS -n NFSD-P ALL/ CPl ' InterconnectEX×nuExpander InterconnectI/O ControllerI/O BUS -n ICMP6 I l/OB'dy -n EICMP6I D I Disk I I SWaP Network ControllerInterface TransportsDRAM-n IP Hardware-n UDP -n EIP-m CPUsar(SystemActivityReporter系统活动情况报告)是目前LINUX上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等方面。Sar的常规使用方式:sarfoptions-A-ofiletn其中:t为采样间隔,n为采样次数,默认值是1;ofile表示将命令结果以二进制格式存放在文件中,file是文件名。OPtionS为命令行选项1.inux调优相关命令汇总本文基于CentOS7编写,理论支持所有所有版本Linux发行版,部分命令的个别参数在不同版本中可能存在细微的差异。入门级# 切换目录cd#示例#切换到上一层目录cd.#切换到optsoftwarecdoptsoftware# 显示工作目录pwd# 显示指定工作目录下之内容1s#示例#列出当前目录中文件及目录的详情ls-1#列出当前目录及其子目录中文件及目录的详情Is-IR# 创建目录mkdir#示例#创建目录aaamkdiraaa#在bbb目录下创建目录aaa>如果bbb目录不存在,就创建一个mkdir-pbbb/aaa# 删除目录nndir#示例#删除目录aaarmdiraaa#删除bbb目录下的aaa目录,如果aaa删除后,bbb目录为成为空目录,则将bbb也删除rmdir-pbbb/aaa# 将指定文件的访问时间及修改时间设为当前时间,若文件不存在,则会自动创建该文件t。UCh#示例#将aaa文件的访问时间及修改时间设为当前时间,如果aaa不存在,则会自动创建该文件touchaaa# 删除文件或目录(一旦通过rm命令删除,将无法恢复,务必小心使用)rm#示例#删除test.txt(此格式只能rm文件;如果使用了rm目录,则会提示是目录,无法删除)rmtest.txt#递归删除test_dir目录及其内容rm-rtest-dir# 为文件或目录改名、或将文件或目录移入其它位置mv#示例#将test.txt改名为damu.txtmvtest.txtdamu.txt#Waaa目录放入bbb目录中;如果bbb目录不存在,则将aaa改名为bbbmvaaabbb# 以树状图列出目录的内容tree# 杀死进程kill#示例#杀死9999这个进程kiH9999#查看信号kill-1#发送SIGHUP信号杀死9999这个进程kill-HUP9999#使用SIGKILL信号杀死9999这个进程kill-99999# 将所有彳要以树状图显PStree#示例#展示该进程的完整指令及参数pstree-a# 关机#示例:shutdown#立即关机shutdown-hnow#10分钟后关机ShUtdoWn-hl0#立即重启shutdown-mow# 重启reboot#设置或显示环境变量export#示例#列出当前的环境变量export-p#设置环境变量JAVA_H0ME=XXXeXPOrtJAVA_HOME=/Library/Java/JaVaVirtUaIMaChineSqdk1.8.0-201.jdkContentsHome#设定权限#u表示该文件的拥有者,g表示与该文件的拥有者属于同一个群体(group)者,o表示其他以外的人,a表示这三者皆是。#+表示增加权限、-表示取消权限、=表示唯一设定权限。析表示可读取,W表示可写入,X表示可执行,X表示只有当该文件是个子目录或者该文件已经被设定过为可执行。ChmOd#示例#将test.txt设为所有人皆可读取ChmOda+rtest.txt#将文件testl.txt与test2.txt设为该文件拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入ChmOdUg+w,o-wtest1.txttest2.txt#使用数字形式设置权限,语法是Chmodabcfileo其中a,b,c各为一个数字,分别表示User、Group>及Other的权限。#r=4,w=2,x=l#若要rwx属性则4+2+1=7;#若要rw-属性则4+2=6;#若要r-x属性则4+l=5chmod777file#将指定文件或目录的拥有者改为指定的用户或组ChOWn#示例#将的拥有者设为nginx,群体的使用者nginxchownnginx:nginxnginx.conf#递归将当前目录下的所有文件与子目录的拥有者皆设为nginx,群体的使用者为nginxchown-Rnginx:nginx*#查找文件里符合条件的字符串grep#示例#在当前目录中,查找后缀为txt的文件中,包含test字符串的文件,并打印字符串所属的行greptest*txt#递归查找/opt目录中,包含test字符串的文件,并打印字符串所属的行grep-rtest/OPt#查找Ltxt中不包含test的行grep-vtestl.txt#打开文件并输出#示例#打开Ltxtcatl.txt#为Ltxt添加行号,并输出到2.txt中cat-nl.txt>2.txt#查找指定目录下的文件find#查找当前目录下的所有txt文件find.-name*.txt#查找机器中所有大于50M的文件find/-typef-size+50M#查找机器中所有小于50M的文件,并用du-h展示出来find-typef-size+50M-execdu-h);系统查看操作系统发行版本不同的Linux发行版(例如CentOS与Debain)>以及不同版本(例如CentOS6.x与CentoS7.x)查看版本的方式不同,下面罗列了笔者知道的所有方式,总有一款能适用于你的环境。方法1:通过/etc目录下的文件查看etcos-releaseetcsystem-releaseetcredhat-releaseetccentos-releaseetcissue方法2:执行lsb_release-aUname作用:显示系统信息语法:Usage:unameOPTION|.Printcertainsysteminformation.WithnoOPTlON,sameas-s.-a,all打印所有信-s,-kernel-name打印内核名称-n,-nodename打印网络节点主机名-r,-kernel-release打印内核版本-v,-kernel-version打印内核版本-m,machine打印硬件名称-p,-processor打印处理器类型-i,-hardware-platform打印硬件平台-0,-OPerating-SyStem打印操作系统-help帮助-version显示版本使用:rootlocalhost-#uname-aLinuxlocalhost.localdomain3.10.0-327.el7.x86_64#lSMPThuNov1922:10:57UTC2015x86_64x86_64x86_64GNU/Linux结果解读:1.inux:内核名称loCalhoSt.localdomain:主机名3.10.0-327.el7.x86_64:内核版本#1SMPThUNoVl922:10:57UTC2015:内核版本x86_64:硬件名垢x86_64:处理器类型x86_64:硬件平台GNULinUx:操作系统常见用法:uname-auptime作用:展示系统启动运行了多久语法:USage:UPtimeoptionsOptions:-p,-pretty对输出结果格式化-h,-help展示帮助-s,-since展示操作系统的启动时间-V,-version展示版本使用:rootlocalhost-#uptime18:52:01up48days,18:24,4users,loadaverage:0.00,0.01,0.05结果解读:18:52:01:当前时间48days,18:24:启动了48days,18:24这么久4users:当前登录了2个用户-IoadaverageOOO,0.01,0.05:平局负载,后面的数字分别是最近1分钟、5分钟、15分钟的平均负载用户相关Id作用:展示用户的ID、以及所属群组的ID语法:Usage:idOPTIONUSERiprintuserandgroupinformationforthespecifiedUSER,or(whenUSERomitted)forthecurrentuser.-a忽略,只是为了和其他版本兼容-Z,-context只打印当前用户的安全上下文-g,-group只打印有效的groupID-G,-groups打印所有groupID-n,-name打印名称而不是号码,和-u-g-G配合使用-,-real打印真实ID而非有效1D,和-u-g-G配合使用-u,-user只打印有效的用户ID-z,-zero以NULL而非空格分隔结果-help帮助-version展示版本WithoutanyOPTlON,Pnntsomeusefulsetofidentifiedinformation.GNUCOreUtilSOnlinehelp:<网站>Forcompletedocumentation,runinfbcoreutils'idinvocation'使用:#查看当前用户相关信息Irootlocalhost-#iduid=0(root)gid=0(root)groups=0(root)结果解读:uid:用户id及名称gid:用户当前所使用的组的id及名称groups:用户拥有的所有组的id及名称常见用法:Usage:woptionsOptions>h,-no-headerdonotprintheader-u,-no-currentignorecurrentprocessusemame-s,-shortshortfbrmat-f,-fromshowremotehostnamefield-o,-Old-Styleoldstyleoutput-i,-ip-addrdisplayIPaddressinsteadofhostname(ifpossible)helpdisplaythishelpandexit-V,-Versionoutputversioninfdrmationandexit使用:lrootlocalhost|#wl8:55:14up48days,l8:28,4users,loadaverage:0.05,0.03,0.05USERTTYFROMLOGlN1DLEJCPUPCPUWHATrOOtPtS/0222.94.228.5618:0742:340.04s0.04s-bashrootpts/1222.94.228.5618:1824:500.25s0.06s-bashrootpts/2222.94.228.5618:4113:480.02s0.02s-bashrootpts/3222.94.228.5618:492.00s0.05s0.02sw结果解读:第一行:类似uptimeUSER:当前登录的用户有哪些TTY:虚拟终端的别名,可以认为是一个会话的名称FROM:你从那台机器登录进来的1.OGIN:什么时候登录的IDLE:空闲时间JCPU:是指连接上这个TTY的所有进程所占用的时间,不包括过去的后台作业时间;PCPU:当前进程所占用的时间WHAT:这个用户当前运行的进程是什么who作用:展示当前登录用户的信息语法:UsageiwholOPTlONl.FILEARG1ARG2PrintinformationaboutuserswhoarecUrrentlyloggedin.-a,all等价于-b-d-login-p-r-t-T-u-b,boot系统启动时间-d,dead打印死亡的进g-H,-heading打印标题-1,-login打印系统登录过程-lookup尝试通过DNS规范化主机名-m相当于whoami-p,-process打印由init产生的活动进程-q,-count显示登入系统的用户名和总人数-r,-runlevel打印当前运行级别-s,-short仅打印name,line,time(默认)-t,-time打印最近的系统时钟修改-T,-w,-mesg将用户的消息状态添加为或?-u,-users列出登录的用户-message和-T相同-writable和-T相同-help帮助-version版本IfFILEisnotspecified,usevarrunutmp.varlogwtmpasFILEiscommon.IfARGlARG2given,-mpresumed'ami,or,momlikes'areusual.GNUCOreUtilSOnlinehelp:<网站>Forcompletedocumentation,runinfbcoreutils'whoinvocation,使用:IrOOtloCaIhOSt#WhOrOOtPtS/02020-06-2723:51(222.94.228.56)rootpts/12020-06-2721:54(222.94.228.56)结果解root:登录的用户是谁ptsO:虚拟终端别名2020-06-2723:51(222.94.228.56):登录时间与远程IP常见用法:#显亨当前登录系统的用户who#展示详情,相当于who-b-dlogin-p-r-t-T-uwho-a#显示自己的信息whoami#打印标题who-H#显示登入系统的用户名和总人数who-qwhoami作用:显示自身用户名称语法:UsageiwhoamiOPTION.PrinttheusernameassociatedwiththecurrenteffectiveuserID.Sameasid-un.help帮助-version版本GNUCOreUtiISOnlinehelp:网站>Forcompletedocumentation,runinfocoreutils,whoamiinvocation'使用:whoamilast作用:显示用户最近登录信息语法:Usage:last|-num|-nnuml-ffilell-tYYYYMMDDHHMMSS-R-adioxFwusername.tty.I常用参数:-R:结果省略从哪里登录的一栏-num-nnum:展示前num条username:展示指定用户的登录信息tty:只显示指定虚拟终端的登录信息更多参数详见manlast使用:lrootlocalhost-#lastrootpts/l222.94.228.56MonJun2922:53stillloggedinrootpts/0222.94.228.56MonJun2922:47StilnoggedinrOOtPtS/5222.94.228.56SatJUn2723:58-03:07(03:08)rootpts/0222.94.228.56SatJun2723:51-00:56(01:04)rootpts/4222.94.228.56SatJun2723:39-00:56(01:17)结果解读:root:谁登陆的ptsl:虚拟终端的别名,可以认为是一个会话的名称222.94.228.56:展示登录机器的主机名,表示从哪里登陆的MonJun2922:53still:登录的起止时间“oggedin:持续了多久常见用法:# 只显示2条IaSt-2# 展示root用户的登录信息IaStUSemameroOt# 显示虚拟终端别名为pts/1的登录信息IaStttyPtS/1CPU相关cpuinfb作用:查看CPU信息使用:cat/proc