Linux命令大全前言在日常的开发中,我们都会做一些服务器部署的工作。对于开发,运维部署不是我们的专长;有些命令不常用,很快就会忘记;这里总结一下日常部署中常用的一些运维命令。文件操作tailtail命令可以用来查看一个文件的内容。有一个常用的参数-f,常用于查看被更改的日志文件。命令格式:tail[参数][文件]参数:-f循环读取-q不显示处理信息-v显示详细处理信息-c显示字节数-n显示文件结尾n行内容--pid=PID和-f一起使用,表示进程ID和PID死后结束-q,--quiet,--silent从不输出给定文件名的头-s,--sleep-interval=S与-f一起使用,表示每重复间隔休眠S秒。示例一般我们使用-f参数来实时监控服务器日志。ll命令ll并不是linux下的基本命令,它实际上是ls-l的别名。Ubuntu默认不支持命令ll,必须使用ls-l,使用起来不是很方便。1、文件类型“-”表示普通文件;“d”表示目录;“l”表示链接文件;“p”表示管理文件;“b”表示块设备文件;“c”表示字符设备文件;“s”表示套接字文件;2、文件属性r(Read,读取权限):对于一个文件,它有读取该文件内容的权限;对于一个目录,它有浏览该目录的权限。w(Write,写权限):对于文件,有添加和修改文件内容的权限;对于目录,它有权限删除和移动目录中的文件。x(eXecute,执行权限):对于文件,用户有执行该文件的权限;对于目录,用户有进入目录的权限。另外,这里还有两个很特殊的属性,通常不是s或者S(SUID,SetUID):拥有这个权限的可执行文件可以获得特权,可以任意访问文件所有者可以使用的所有文件。系统资源。请注意具有SUID权限的文件。黑客经常利用此权限将根帐户所有者与SUID相匹配,以悄悄地在系统中打开一个后门以供日后访问。t或T(Sticky):/tmp和/var/tmp目录供所有用户临时访问文件,即每个用户都有完全的权限进入该目录浏览、删除和移动文件。3、目录/文件个数对于一个目录文件,表示其一级子目录的个数。注意这里看到的值必须减2才等于目录下的实际子目录数。44.owner/group表示文件的所有者/创建者(owner)及其所属的组(group)。5.文件大小如果是文件,表示文件的大小,单位为字节。如果是目录,表示目录符号占用的大小,而不是目录下所有文件的大小。6.修改日期最后一次修改文件的日期和时间。7、修改文件名权限,修改用户组权限,修改chgrpworkdocServer/owner权限,更改chownworkdocServer/ln命令,centos下ln命令相当于window下创建快捷方式。链接文件甚至可以链接不存在的文件。出现一种通常称为“断开链接”的现象,被链接的文件甚至可以循环链接自己。类似于编程语言中的递归。软链接文件只是其源文件的一个标记。当删除源文件时,链接文件不能独立存在。虽然还是保留了文件名,但是软链接文件的内容是看不到的。ln-ssourcefiletargetfileln-s/opt/soft/node-v8.9.0-linux-x64/bin/vuepress/usr/bin-s是代号(符号)意思是ln命令会保持每个链接文件同步,也就是说,无论你更改哪一部分,其他文件都会有相同的更改。ln链接有软链接和硬链接。软链接是ln-sxxxx,只会在你选择的位置生成一个文件的镜像,不会占用磁盘空间,硬链接ln,不带参数-s,会生成一个文件与您选择的位置的源文件大小相同,无论是软链接还是硬链接,文件都保持同步变化。参数-b删除,覆盖之前建立的链接-d允许超级用户对目录进行硬链接-f强制执行-i交互模式,如果文件存在则提示用户是否覆盖-n将符号链接视为普通目录-s软链接(symboliclink)-v显示详细处理cp命令cp[option]源文件(source)目标文件或目录(destination)-a:表示归档,也表示复制所有目录-d:如果源文件是链接文件,复制链接文件的属性,而不是文件本身-f:Force(强制),如果有重复或其他疑虑,不会询问用户,而是强制复制-i:如果目标文件(destination)已经存在,覆盖时会询问是否真的操作-l:建立硬链接(hardlink)连接文件而不是复制文件本身-p:连同文件的属性一起复制,而不是使用默认属性-r:递归复制,用于目录复制操作-s:复制到符号链接文件(symboliclink),即“快捷方式”文件-u:如果目标文件比源文件旧,则更新目标文件cp-fpackage.JSON。/backupmvcommandmv[option]sourcedestination-f:force,强制直接移动,不询问-i:如果目标文件(destination)已经存在,会询问是否覆盖-u:如果目标文件已经存在,以及源文件比较新,会更新系统监控命令memorymonitoringfree命令Linuxfree命令用于显示内存状态。free命令会显示内存使用情况,包括物理内存、虚拟交换文件内存、共享内存段和系统核心使用的缓冲区。Syntaxfree[-bkmotV][-s]参数说明:-b 以Byte为单位显示内存使用情况。-k 以KB为单位显示内存使用情况。-m 以MB为单位显示内存使用情况。-h 以合适的单位显示内存使用情况,最大三位,并自动计算出对应的单位值。单位是:B=bytesK=kilosM=megasG=gigasT=teras-o 缓冲区调整栏不显示。-s<间隔秒数> 持续观察内存使用情况。-t 显示内存总和列。-V 显示版本信息。Men:表示物理内存统计Swap:表示硬盘交换分区的使用情况表示未分配的物理内存总量shared:表示共享内存buffers:系统分配但未使用的缓冲区数。cached:系统分配但未使用的缓存数量。-/+buffers/cache:表示物理内存的缓存统计(-buffers/cache)内存号:(指used-buffers-cached在Mem行的第一部分)(+buffers/cache)内存号:(指的是第一部分Free+buffers+cached)Mem行中的一部分(-buffers/cache)表示实际使用的内存量,(+buffers/cache)表示实际未使用内存的数量。vmstat命令vmstat(VirtualMeomoryStatistics,虚拟内存统计)是收集系统整体情况的统计数据,包括内核进程、虚拟内存、磁盘、陷阱和CPU活动的统计数据。常用命令vmstat22【2秒内采样两次】参数procs(进程):r:运行队列中的进程数b:等待IO的进程数memory(内存):swpd:使用虚拟内存大小free:可用Memorysizebuff:memorysizeusedasbuffercache:用作缓存的内存大小Swap:si:sizewrittenfromswapareatomemorypersecondso:memorysizewrittentoswapareapersecondIO:(currentLinuxversionBlocksizeis1024bytes)bi:每秒读取的块数bo:每秒写入的块数system(系统):in:每秒的中断数,包括时钟中断。[interrupt]cs:每秒上下文切换的次数。[count/second]CPU(以百分比表示):us:用户进程执行时间(usertime)sy:系统进程执行时间(systemtime)id:空闲时间(包括IO等待时间),CPU的空闲时间。以百分比表示。wa:WaitingforIOtimeCPU监控top命令top命令可以实时动态查看系统的整体运行状态。是一款集多方信息监控系统性能和运行信息于一体的实用工具。语法top[-][ddelay][q][c][S][s][i][n][b]参数说明:d:改变显示的更新速度,或者在交互式命令行中(交互式命令)presssq:显示速度,没有任何延迟,如果用户有超级用户权限,则top将以最高优先级执行c:切换显示模式,有两种模式,一种是只显示可执行文件的名称,另一种是显示完整路径和名称S:Accumulationmode,会累计已完成或消失的子进程(deadchildprocess)的CPU时间s:安全模式,取消会话命令,避免潜在危机i:Donotdisplayanyidle(idle)oruseless(zombie)itinerariesn:更新次数,topb完成后会退出:批处理文件模式,与"n"参数一起使用,可以用来输出top的结果去文件mpstat命令mpstat是MultiprocessorStatistics的缩写,是一种实时系统监控工具。它报告有关CPU的一些统计信息,这些信息存储在/proc/stat文件中。在多CP??U系统中,它不仅可以查看所有CPU的平均状态信息,还可以查看特定CPU的信息。常用命令mpstat-PALL2【ALL表示显示所有CPU,也可以指定一个CPU;2表示刷新间隔】参数CPU:处理器ID%usr内部时间段内,用户态CPU时间(%),不包括nice值为负的进程%nice内部时间段内,进程的CPU时间带负nice值(%)%sys内部时间段内,核心时间(%)%iowait内部时间段内,硬盘IO等待时间(%)%irq内部时间段内,硬中断time(%)%soft在内部时间段内,软中断时间(%)%steal表明虚拟机管理器正在为另一个虚拟处理器服务。非自愿等待所花费的时间百分比%guest显示运行虚拟处理器所花费的CPU时间百分比%idle在内部时间段内,除了等待磁盘IO操作外,CPU因任何原因处于空闲状态Idletime(%)process监控ps命令ps命令用于查看进程统计信息。常用参数:a:显示当前终端下的所有进程信息,包括其他用户的进程。u:以用户为中心的格式输出进程信息。x:显示当前用户在所有终端下的进程。-e:显示系统中所有进程信息。-l:使用long(长)格式显示进程信息。-f:使用完整(full)格式显示进程信息。ps-aux最常用的方法是ps-aux,然后用一个管道符引导到grep找到具体的进程,然后对具体的进程进行操作。列说明:USER:用户名PID:进程号(ProcessID)%CPU:进程的CPU使用率%MEM:进程的内存使用率VSZ:进程使用的虚拟内存大小(VirtualSize)RSS:进程使用率常驻集大小或实际内存大小,以千字节为单位。TTY:进程关联的终端(tty)STAT:进程的状态:进程状态用字符表示(STAT状态码)TIME:进程使用的cpu总时间COMMAND:正在执行的命令行命令ps-efUID:用户ID(UserID)PID:进程ID(ProcessID)PPID:父进程的进程ID(ParentProcessid)STIME:开始时间TTY:与进程关联的终端(tty)TIME:总的cpu使用时间通过进程CMD:ExecutingThecommandlinecommandps-ef|查询|symbol是管道符号,表示ps和grep命令同时执行;grep命令是find(GlobalRegularExpressionPrint),可以使用正则表达式搜索文本,然后显示匹配的行;ps-lF:代表本程序的flag,4代表用户是超级用户S:Sleeping睡眠,阻塞,等待某种条件形成或接收信号。UID:用户ID(UserID)PID:进程ID(ProcessID)PPID:父进程(ParentProcessid)的进程ID(ParentProcessid)C:CPU使用资源的百分比PRI:这是缩写优先级(PriorityExecutionOrder),后面详细介绍NI:这是Nice值。下一节我们继续介绍ADDR:这是内核函数,表示程序的哪一部分在内存中。如果是正在运行的程序,一般是“-”SZ:内存使用量WCHAN:是当前正在运行的程序,如果是-表示正在运行TTY:登录的终端位置TIME:使用的CPU时间。为什么CMD发出的命令会查看进程的启动时间:ps-eolstart查看进程的启动时间ps-eoetimehowlongitruns。查看进程的pid、启动时间、运行时间ps-eopid,lstart,etime|grep[pid]pstree命令以树状图显示进程间的派生关系pstree-p显示当前所有进程的进程号和进程idpstree-a显示所有进程的所有详细信息,遇到相同的进程名可以压缩用于显示。pidof命令查找正在运行的进程的PID其他uptime:显示系统总共运行了多长时间以及系统的平均负载pmap:比较专业的查看内存与进程关系的工具磁盘监控df命令df-h查看磁盘使用情况df-i查看inode使用情况du命令Linuxdu命令用于显示目录或文件的大小。du将显示指定目录或文件占用的磁盘空间。参数说明:-a或-all显示目录中单个文件的大小。-b或-bytes显示目录或文件大小时,单位为byte。-c或--total除了显示单个目录或文件的大小外,它还显示所有目录或文件的总和。-D或--dereference-args显示指定符号链接的源文件大小。-h或--human-readable使用K、M、G为单位,提高信息的可读性。-H或--si与-h参数相同,只是K、M、G以1000为单位进行转换。-k或--kilobytes以1024字节为单位进行转换。-l或--count-links过度计算硬件链接的文件。-L或--dereference显示选项中指定的符号链接的源文件大小。-m或--megabytes以1MB为单位。-s或--summarize仅显示总数。-S或--separate-dirs显示单个目录的大小时,不包括其子目录的大小。-x或--one-file-xystem是根据文件系统开始处理的,如果遇到其他不同的文件系统目录则跳过。-X或--exclude-from=在中指定目录或文件。--exclude=<目录或文件>跳过指定的目录或文件。--max-depth=<目录层数>目录超过指定层数后,将被忽略。--help显示帮助。--version显示版本信息。iostat命令ostat是一个用于收集和显示系统存储设备输入输出状态统计信息的简单工具。该工具通常用于跟踪存储设备的性能问题,包括设备、本地磁盘和远程磁盘(例如使用NFS)。常用命令:iostat-x-k2100#2表示刷新间隔,100表示??刷新次数另外,iostat还提供了一些更详细的I/O状态数据参数/s:每秒完成的读I/O设备数.w/s:每秒完成的写入I/O设备的数量。rkB/s:每秒读取的K字节数。是rsect/s的一半,因为每个扇区的大小是512字节。wkB/s:每秒写入的K字节数。它是wsec/s的一半。avgrq-sz:每个设备I/O操作的平均数据大小(以扇区为单位)。avgqu-sz:平均I/O队列长度。await:每个设备I/O操作的平均等待时间(以毫秒为单位)。svctm:每个设备I/O操作的平均服务时间(毫秒)。%util:每秒有多少百分比用于I/O操作,或者每秒有多少次I/O队列不为空。网络监控sar命令SAR是Unix和Linux操作系统中用来收集、报告和保存CPU、内存、输入输出端口使用情况的命令。SAR命令可以动态生成报告,或将报告保存在日志文件中。常用命令sar-nDEV3100参数IFACE:网络设备名称rxpck/s:每秒接收到的数据包数txpck/s:每秒发出的数据包数rxkB/s:每秒接收到的字数secondNumberofsessionstxkB/s:每秒发出的字节数。netstat命令netstat命令一般用于检查本机各端口的网络连接情况,显示IP、TCP、UDP和ICMP协议相关的统计数据。配置参数-a,--all,--listening显示所有连接的Sockets。-n,--numeric以数字形式显示地址和端口号。-t,--tcp显示TCP传输协议的连接状态。-u,--udp显示UDP传输协议的连接状态。-p,--programs显示正在使用socket的程序名/进程ID-l,--listening显示被监控服务器的Socket。-o,--timers显示计时器。-s,--statistics显示各网络协议(如SNMP)的统计信息-i,--interfaces显示网络接口信息表(网卡列表)-r,--route显示路由表常用命令netstat-aup[输出所有UDP连接状态]netstat-aup#输出所有UDP连接状态netstat-atp#输出所有TCP连接状态netstat-s#显示各个协议的网络统计信息netstat-i#显示网卡列表netstat-r#显示路由表格信息查看全部80端口连接数netstat-nat|grep-i"80"|wc-l按连接数排序连接的IPnetstat-anp|grep'tcp\|udp'|awk'{print$5}'|剪切-d:-f1|排序|uniq-c|排序-nnetstat-ntu|awk'{print$5}'|剪切-d:-f1|排序|uniq-c|排序-nnetstat-ntu|awk'{print$5}'|egrep-o"[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}”|sort|uniq-c|sort-nr查看TCP连接状态netstat-nat|awk'{print$6}'|sort|uniq-c|sort-rnnetstat-n|awk'/^tcp/{print$NF}'|sort|uniq-c|sort-rnnetstat-n|awk'/^tcp/{++S[$NF]};END{for(ainS)printa,S[a]}'netstat-n|awk'/^tcp/{++state[$NF]};END{for(keyinstate)printkey,"\t",state[key]}'netstat-n|awk'/^tcp/{++arr[$NF]};END{for(kinarr)printk,"\t",arr[k]}'netstat-ant|awk'{print$NF}'|grep-v'[a-z]'|排序|uniq-c查看80端口连接数最多的20个ipcat/www/web_logs/wzfou.com_access.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-100tail-n10000/www/web_logs/wzfou.com_access.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-100cat/www/web_logs/wzfou.com_access.log|awk'{print$1}'|sort|uniq-c|sort-nr|head-100netstat-anlp|grep80|greptcp|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|head-n20netstat-ant|awk'/:80/{split($5,ip,":");++A[ip[1]]}END{for(iinA)printA,i}'|sort-rn|head-n20使用tcpdump嗅探80端口,看谁访问的最高tcpdump-ieth0-tnndstport80-c1000|awk-F"."'{print$1″."$2″."$3″..$4}'|sort|uniq-c|sort-nr|head-20寻找更多time_wait连接netstat-n|grepTIME_WAIT|awk'{print$5}'|sort|uniq-c|sort-rn|head-n20查找更多SYN连接netstat-an|grepSYN|awk'{print$5}'|awk-F:'{print$1}'|sort|uniq-c|sort-nr|morelinux下使用iptables封IP段的一些常用命令:封单个IP的命令是:iptables-IINPUT-s211.1.0.0-jDROP封IP的命令段是:iptables-IINPUT-s211.1.0.0/16-jDROPiptables-IINPUT-s211.2.0.0/16-jDROPiptables-IINPUT-s211.3.0.0/16-jDROP封整网段的命令是:iptables-IINPUT-s211.0.0.0/8-jDROP封几个段的命令是:iptables-IINPUT-s61.37.80.0/24-jDROPiptables-IINPUT-s61.37.81.0/24-jDROP重启网络服务网络重启