《最强Linux命令总结建议收藏!.docx》由会员分享,可在线阅读,更多相关《最强Linux命令总结建议收藏!.docx(33页珍藏版)》请在课桌文档上搜索。
1、最强Linux命令总结,建议收藏!基本操作1.inux关机,重启# 关机# 重启shutdown-rnow查看系统,CPU信息# 查看系统内核信息# 查看系统内核版本catprocversion# 查看当前用户环境变量# 查看有几个逻辑cpu,包括CPU型号#查看有几颗cpu,每颗分别是几核# 查看当前CPU运行在32bit还是64bit模式下,如果是运行在32bit下也不代表CPU不支持64bit# 结果大于0,说明支持64bit计算.Im指Iongmode,支持Im则是64bitcatproccpuinfogrepflagsgrep,Im,wc-1建立软连接In-Susrlocaljdkl
2、.8jdkrpm相关# 查看是否通过rpm安装了该软件rpm-qagr叩软件名sshkey# 创建sshkey#id_rsa.pub的内容拷贝到要控制的服务器的homeusername.ssh/authorized_keys中,如果没有则新建(.ssh权限为700jauthorized_keys权限为600)命令重命名# 在各个用户的.bash_profile中添加重命名配置aliasll=ls-alF同步服务器时间sudontpdate-untp.api.bz后台运行命令# 后台运行,并且有nohup.out输出# 后台运行,不输出任何日志# 后台运行,并将错误信息做标准输出到日志中nohu
3、pXXXout.log2&1&强制活动用户退出# 命令来完成强制活动用户退出.其中TTY表示终端名称pkill-kill-tTTY查看命令路径which命令查看进程所有打开最大fd数ulimit-n配置dnsvimetcresolv.confnslookup,查看域名路由表Iastf最近登录信息列表# 最近登录的5个账号last-n5设置固定ipifconfigeml192.168.5.177netmask255.255.255.0另外,如果你近期准备面试跳槽,建议在Java面试库小程序在线刷题,涵盖2000道Java面试题,几乎覆盖了所有主流技术面试题。查看进程内加载的环境变量# 也可以去c
4、d/proc目录下,查看进程内存中加载的东西PSeww-PXXXXX(进程号)查看进程树找到服务器进程psauwxf查看进程启动路径cd#cwd对应的是启动路径添加用户,配置SUdo权限#新增用户#增加sudo权限#修改文件里面的#rootALL=(ALL)ALL#用户名ALL=(ALL)ALL强制关闭进程名包含XXX的所有进程psauxIgrepxxxgrep-vgrepIawk,print$2xargskill-9磁盘,文件,目录相关操作vim操作#nOrmal模式下g表示全局,X表示查找的内容,y表示替换后的内容#normal模式下#光标移到行首(数字0)#光标移至行尾shift#跳到文
5、件最后#跳到文件头# 显示行号:setnu# 去除行号:setnonu# 检索#从头检索,按n查找下一个?xxx(检索内容)#从尾部检索打开只读文件,修改后需要保存时(不用切换用户即可保存的方式)#在normal模式下:W!sudotee%查看磁盘,文件目录基本信息#查看磁盘挂载情况# 查看磁盘分区信息# 查看目录及子目录大小# 查看当前目录下各个文件,文件夹占了多少空间,不会递归du-sh*WC命令# 查看文件里有多少行# 看文件里有多少个WOrd#文件里最长的那一行是多少个字#统计字节数WC-C常用压缩,解压缩命令压缩命令zip-rxxx.zip压缩目录解压缩命令#解压到指定文件夹tarz
6、xvfXXX.tarunzipxxx.zip变更文件所属用户,用户组chowneagleye.eagleyexxx.logcp,scp,mkdir#复制#复制并强制覆盖同名文件#复制文件夹#远程复制#级联创建目录#批量创建文件夹,会在test,main下都创建java,resources文件夹mkdir-psrctest,main)java,resources)比较两个文件diff-ul.txt2.txt日志输出的字节数,可以用作性能测试#如果做性能测试,可以每执行一次,往日志里面输出,这样日志中的字节数就是实际的性能测试运行的次数,还可以看见实时速率.tail-fxx.logIpv-bt查看
7、,去除特殊字符#查看特殊字符#去除特殊字符sed-i,sMg,env.sh去除文件的特殊字符,比如八M:需要这样输入:ctrl+v+enter处理因系统原因引起的文件中特殊字符的问题#可以转换为该系统下的文件格式#先将file.Sh中文件内容复制下来然后运行,然后粘贴内容,最后Ctrl+d保存退出#在vim中通过如下设置文件编码和文件格式:setfileencodines=utf-8,然后W(存:setfileformat=uni# 在mac下使用dos2unix进行文件格式化find,-name*.shargsdos2unix推荐学习:SpringBoot最新学习路线图来了,16个模块,小白
8、都能学会!teef重定向的同时输出到屏幕awkfprint$0,x.logteetest.log检索相关grep# 反向匹配,查找不包含XXX的内容# 排除所有空行grep-Vpre# 返回结果2,则说明第二行是空行grepn八$lll.txt# 查询以abc开头的行grep-nffabcwlll.txt# 同时列出该词语出现在文章的第几行grep,xxx,-nx.log# 计算一下该字串出现的次数grep,xx,-cx.log# 比对的时候,不计较大小写的不同grepxxx-ixxx.logawk#以:为分隔符,如果第五域有USer则输出该行awk-F,:,if($5/user/)print
9、$0/etc/# 统计单个文件中某个字符(串)(中文无效)出现的次数awk-VRS=character,ENDprint-NRxxx.txtfind检索命令# 在目录下找后缀是mysql的文件findhomeeagleye-name,*.mysql,-print# 会从usr目录开始往下找,找最近3天之内存取过的文件。findusr-atime3-print# 会从/usr目录开始往下找,找最近5天之内修改过的文件。print# 会从doc目录开始往下找,找jacky的、文件名开头是j的文件。finddoc-userjacky-name,j*,-print# 会从doc目录开始往下找,找寻文件
10、名是ja开头或者ma开头的文件。finddoc(-nameja*-o-name,ma*)-print# 会从doc目录开始往下找,找到凡是文件名结尾为bak的文件,把它删除掉。-exec选项是执行的意思,rm是删除命令,)表示文件名,“;”是规定的命令结尾。finddoc-name,*bak-execrm;网络相关查看什么进程使用了该端口Isof-i:port获取本机ip地址sbinifconfig-agrepinetgrep-v127.0.0.1grep-vinet6awk,print$2*tr-d,addr:iptables#查看iptables状态#要封停一个ip#要解封一个IP,使用下
11、面这条命令:#开启9090端口的访问#防火墙开启、关闭、重启etcinit.diptablesrestartnc命令,tcp调试利器#给某一个endpoint发送TCP请求,就将data的内容发送到对端#nc可以当做服务器,监听某个端口号,把某一次请求的内容存储到received_data里# 上边只监听一次,如果多次可以加上-k参数nc-Ik8000tcpdump# dump出本机12301端口的tcp包tcpdump-iemltcpport12301-s1500-vabc.pcap跟踪网络路由路径# traceroute默认使用UdP方式,如果是-工则改成icmp方式# 从ttl第3跳跟踪
12、#加上端口跟踪traceroute-p8080192.168.10.11# 显示本地打开的所有端口# 显示每个进程具体打开的socket# 显示所有tcpsocket# 显示所有的UDPSocekt# 显示所有已建立的SMTP连接0stateestablished(dport=:smtporsport=:smtp)# 显示所有已建立的HTTP连接ablished,(dport=:httporsport=:http)X川又一恭tJ世不王tmp.Xll-unix*解释:netstat是遍历/proc下面每个PID目录,ss直接读procnet下面的统计信息。所以ss执行的时候消耗资源以及消耗的时间
13、都比netstat少很多netstat# 输出每个ip的连接数,以及总的各个状态的连接数-nIawk,tcpn=split($(NF-l)jarray/:1);if(n=2)+Sarray(l)jelse+Sarray(4);+s$NF;+NENDfor(ainS)printf(,%-20s%snja,Sa)j+Iprintf(%-20s%sn,TOTAL_IP,I);for(ains)printf(,%-20s%sn”,a,sa)jprintf(,%-20s%sn,TOTAL-LINK,N)j),#统计所有连接状态,# #CLOSED:无连接是活动的或正在进行# 1.ISTEN:服务器在等待
14、进入呼叫# SYN_RECV:一个连接请求已经到达,等待确认# SYN_SENT:应用已经开始,打开一个连接# ESTABLISHED:正常数据传输状态# FIN_WAIT1:应用说它已经完成# FIN_WAIT2:另一边已同意释放# ITMED_WAIT:等待所有分组死掉# CLOSING:两边同时尝试关闭# TIME.WAIT:主动关闭连接一端还没有等到另一端反馈期间的状态# 1.AST_ACK:等待所有分组死掉awk,tcp+state$NFENDfor(keyinstate)printkey,t,statekey,# 查找较多time_wait连接netstat-nIgrepTIMEJ
15、aIA工TlaWkprint$5,sortuniq-cIsort-rnhead-n20监控IinUX性能命令top按大写的F或。键,然后按a-z可以将进程按照相应的列进行排序,然后回车。而大写的R键可以将当前的排序倒转列名含义PID进程idPPID父进程idRUSERRealusernameUID进程所有者的用户idUSER进程所有者的用户名GROUP进程所有者的组名TTY启动进程的终端名。不是从终端启动的进程则显示为?PR优先级列名含义NInice值。负值表示高优先级,正值表不低优先级P最后使用的CPU,仅在多CPU环境下有意义%CPU上次更新到现在的CPU时间占用百分比TIME进程使用的C
16、PU时间总计,单位秒TIME+进程使用的CPU时间总计,单位1/100秒%MEM进程使用的物理内存百分比VIRT进程使用的虚拟内存总量,单位kboVIRT=SWAp+RESSWAP进程使用的虚拟内存中,被换出的大小,单位kb。RES进程使用的、未被换出的物理内存大列名含义小,单位kboRES=CODE+DATACODE可执行代码占用的物理内存大小,单位kbDATA可执行代码以外的部分(数据段+栈)占用的物理内存大小,单位kbSHR共享内存大小,单位kbnFLT负面错误次数nDRT最后一次写入到现在,被修改过的页面数。S进程状态。D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵
17、尸进程COMMAND命令名/命令行WCHAN若该进程在睡眠,则显示睡眠中的系统函数名列名含义Flags任务标志,参考sched.hdmesg,查看系统日志dmesgiostat,磁盘IO情况监控# rsjws,rkBs,wkB/s:分别表示每秒读写次数和每秒读写数据量(千字节)。读写量过大,可能会引起性能问题。# await:工0操作的平均等待时间,单位是毫秒。这是应用程序在和磁盘交互时,需要消耗的时间,包括IO等待和实际操作的耗时。如果这个数值过大,可能是硬件设备遇到了瓶颈或者出现故障。# avgqu-sz:向设备发出的请求平均数量。如果这个数值大于1,可能是硬件设备已经饱和(部分前端硬件设
18、备支持并行写入)。# %util:设备利用率。这个数值表示设备的繁忙程度,经验值是如果超过60,可能会影响IO性能(可以参照IO操作平均等待时间).如果到达100%,说明硬件设备已经饱和。#如果显示的是逻辑设备的数据,那么设备利用率不代表后端实际的硬件设备已经饱和。值得注意的是,即使工O性能不理想,也不一定意味这应用程序性能会不好,可以利用诸如预读取、写缓存等策略提升应用性能。free,内存使用情况;攵:769M第三部分是指交换分区sar,查看网络吞吐状态#Sar命令在这里可以查看网络设备的吞吐率。在排查性能问题时,可以通过网络设备的吞吐量,判断网络设备是否已经饱和#sar命令在这里用于查看T
19、CP连接状态,其中包括:# active/s:每秒本地发起的TCP连接数,既通过connect调用创建的TCP连接;# passive/s:每秒远程发起的TCP连接数,即通过accept调用创建的TCP连接;# retrans/s:每秒TCP重传数量;# TCP连接数可以用来判断性能问题是否由于建立了过多的连接,进一步可以判断是主动发起的连接,还是被动接受的连接。TCP重传可能是因为网络环境恶劣,或者服务器压力过大导致丢包sar-nTCPjETCP1vmstati给定时间监控CPU使用率,内存使用,虚拟内存交互,IO读写# 2表示每2秒采集一次状态信息,1表示只采集一次(忽略既是一直采集)in
20、10034997323158363819660000283154001000 表示运行队列(就是说多少个进程真的分配到CPU),我测试的服务器目前CPU比较空闲,没什么程序在跑,当这个值超过了CPU数目,就会出现CPU瓶颈了。这个也和top的负载有关系,一般负载超过了3就比较高,超过了5就高,超过了10就不正常了,服务器的状态很危险。top的负载类似每秒的运行队列。如果运行队列过大,表示你的CPU很繁忙,一般会造成CPU使用率很高。 b表示阻塞的进程,这个不多说,进程阻塞,大家懂的。 swpd虚拟内存已使用的大小,如果大于0,表示你的机器物理内存不足了,如果不是程序内存泄露的原因,那么你该升级
21、内存了或者把耗内存的任务迁移到其他机器。 free空闲的物理内存的大小,我的机器内存总共8G,剩余3415Mo buffLinUX/Unix系统是用来存储,目录里面有什么内容,权限等的缓存,我本机大概占用300多M cacheCaChe直接用来记忆我们打开的文件,给文件做缓冲,我本机大概占用300多M(这里是Linuxnix的聪明之处,把空闲的物理内存的一部分拿来做文件和目录的缓存,是为了提高程序执行的性能,当程序使用内存时,buffer/cached会很快地被使用。) si每秒从磁盘读入虚拟内存的大小,如果这个值大于0,表示物理内存不够用或者内存泄露了,要查找耗内存进程解决掉。我的机器内存充
22、裕,一切正常。 so每秒虚拟内存写入磁盘的大小,如果这个值大于0,同上。 bi块设备每秒接收的块数量,这里的块设备是指系统上所有的磁盘和其他块设备,默认块大小是1024byte,我本机上没什么IO操作,所以一直是0,但是我曾在处理拷贝大量数据(2-3T)的机器上看过可以达到140000/s,磁盘写入速度差不多140M每秒 bo块设备每秒发送的块数量,例如我们读取文件,bo就要大于Oobi和bo一般都要接近0,不然就是IO过于频繁,需要调整。 in每秒CPU的中断次数,包括时间中断 cs每秒上下文切换次数,例如我们调用系统函数,就要进行上下文切换,线程的切换,也要进程上下文切换,这个值要越小越好
23、,太大了,要考虑调低线程或者进程的数目,例如在叩ache和nginx这种web服务器中,我们一般做性能测试时会进行几千并发甚至几万并发的测试,选择web服务器的进程可以由进程或者线程的峰值一直下调,压测,直到CS到一个比较小的值,这个进程和线程数就是比较合适的值了。系统调用也是,每次调用系统函数,我们的代码就会进入内核空间,导致上下文切换,这个是很耗资源,也要尽量避免频繁调用系统函数。上下文切换次数过多表示你的CPU大部分浪费在上下文切换,导致CPU干正经事的时间少了,CPU没有充分利用,是不可取的。 US用户CPU时间,我曾经在一个做加密解密很频繁的服务器上,可以看到US接近100j运行队列达到80(机器在做压力测试,性能表现不佳)。 sy系统CPU时间,如果太高,表示系统调用时间长,例如是IO操作频繁。 id空闲CPU时间,一般来说,id+us+sy=100,一般我认为id是空闲CPU使用率,us是用户CPU使用率,Sy是系统CPU使用率。 Wt等待IOCPU时间。