前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Linux系统之常用命令

Linux系统之常用命令

作者头像
尜尜人物
发布2020-01-15 17:14:30
1.4K0
发布2020-01-15 17:14:30
举报
文章被收录于专栏:尜尜人物的专栏

〇、最重要的事儿

  1. 命令 --help
  2. man 命令

环境:CentOS7X64(CentOS Linux release 7.5.1804)

一、CPU相关命令

1、top命令

描述:display Linux processes.

操作:控制键

  • P:以CPU使用百分比排序
  • M:以内存使用百分比排序
  • T:以累积占用CUP时间排序
  • q:退出top

字段:常关注行和列的含义

  1. 第1部分(同uptime命令内容)
    • 22:59:39:机器时间
    • up 12 days, 23:39:机器持续运行时间
    • 1 user:在线用户数量
    • load average: 0.00, 0.01, 0.05:系统负载,三个数值依次为1min、5min、15min前到现在的平均负载 更详细,使用cat /proc/loadavg0.00, 0.01, 0.05:三个数值依次为1min、5min、15min前到现在的平均负载 3/113:其中的3代表此时运行队列中的进程个数,而113则代表此时的进程总数量 2580:最后创建的一个进程ID

系统负载分析,详见Linux系统之运行状态分析及问题排查思路:CPU分析。

  1. 第2部分:进程状态及数量,详细见Linux系统之进程状态ps命令
    • Tasks:113 total:总进程(任务)数
    • 3 running:运行的进程(任务)数,状态码R
    • 110 sleeping:睡眠的进程(任务)数,状态码S或D
    • 0 stopped:停止的进程(任务)数,状态码T或t
    • 0 zombie:僵死的进程(任务)数,状态码Z
  2. 第3部分:CPU利用率 按1展示/关闭每个CPU或核的使用率
    • 0.8 us:用户空间占用CPU百分比
    • 0.0 sy:内核空间占用CPU百分比
    • 0.0 ni:用户空间内变更过优先级的进程占用CPU百分比
    • 99.2 id:CPU空闲率
    • 0.0 wa:等待IO完成的CPU时间百分比
    • 0.0 hi:硬中断(Hardware Interrupts)占用的CPU百分比
    • 0.0 si:软中断(Software Interrupts)占用的CPU百分比
    • 0.0 st:被虚拟机偷走的CPU时间比率

CPU利用率分析,详见Linux系统之运行状态分析及问题排查思路:CPU分析。

  1. 第4部分:内存消耗情况,见free命令
  2. 第5部分:FIELDS / Columns
    • PID:进程Id
    • USER:启动进程的用户
    • PR:进程优先级
    • NI:负数代表高优先级,正数代表低优先级,零表示进程优先级在调度室不会被 调整
    • VIRT:进程占用的虚拟内存(Virtual Memory Size (KiB),It includes all code, data and shared libraries plus pages that have been swapped out and pages),对应free命令的swap
    • RES:进程占用的物理内存(Resident(固有的) Memory Size (KiB))
    • SHR:进程使用的共享内存(Shared Memory Size (KiB)),对应free命令的shared
    • S:进程状态,见Linux系统之进程状态
    • %CPU:CPU使用率
    • %MEM:内存使用率
    • TIME+:占用CPU的时间
    • COMMAND:进程启动命令

命令

  • top
  • top -c
  • top -Hp :展示指定进程的子进程

x、查看CPU信息

  1. 查看物理CPU个数:cat /proc/cpuinfo | grep "physical id" | uniq | wc -l
  2. 查看每个物理CPU中core的个数(即核数):cat /proc/cpuinfo | grep "cpu cores" | uniq
  3. 查看逻辑CPU的个数:cat /proc/cpuinfo | grep "processor" | wc -l

二、内存相关命令

1、free命令

描述:Display amount of free and used memory in the system.

参数:常用的参数

  • -h, --human show human-readable output
  • -t, --total show total for RAM + swap
  • -s N, --seconds N repeat printing every N seconds
  • -c N, --count N repeat printing N times, then exit

字段:常关注行和列的含义

Mem:

  • total:总内存
  • used:使用内存
  • free:空闲内存
  • shared:多个进程的共享内存,一般不用
  • buff/cache:缓存
  • available:系统可用内存

buff/cache:缓存,是为了提高文件读写性能,对应用程序来说,buff/cache 是等于可用的,当应用程序需要用到buff/cache内存的时候,buff/cache会很快地被释放回收。 理论上(CentOS7之前,可用内存和已用内存需要自己算): 可用内存 = free + buff/cache 已用内存 = used - buff/cache 实际上(CentOS7之后,可用内存和已用内存直接给出了): 因为并不是所 有的buff/cache空间都可以被回收(比如共享内存段、tmpfs、ramfs等),所以CentOS7之后系统算好各种内存直接给出,简单直观。

Swap:

swap是存储盘上的一块自留地,操作系统可以在这里暂存一些内存里放不下的东西。系统可以设置(cat /proc/sys/vm/swappiness),剩余内存比例多少时,就使用swap。使用swap是为了在系统内存不够用的时候,防止系统崩溃。一般不要使用,会影响应用程序性能。因为swap使用的是虚拟内存(磁盘空间),相比内存慢了去了。当使用free查看内存使用情况是,如果swap有用到,说明服务器内存不够了,需要升级或迁移应用等。

代码语言:javascript
复制
如果swap有用到,可以使用如下命令查看各进程使用swap的情况:
for i in $(ls /proc | grep "^[0-9]" | awk '$0>100'); do awk '/Swap:/{a=a+$2}END{print '"$i"',a/1024"M"}' /proc/$i/smaps;done| sort -k2nr | head

命令

  • free -h
  • free -ht
  • free -ht -s3 -c5

分析:详见Linux系统之运行状态分析及问题排查思路:内存分析。

三、磁盘相关命令

1、df命令

描述:查看挂载磁盘的使用情况

参数:常用的参数

  • -h:以人们较易读的容量格式 (G/M) 显示;
  • -T:打印文件类型

命令

  • df -hT:查看系统中所有挂载磁盘的使用请况   
  • df -hT /xx:查看指定目录下挂载磁盘的使用情况

2、du命令

描述:查看文件或目录的大小

参数:常用的参数

  • m/-k:大小单位;
  • h:以人们较易读的容量格式 (G/M) 显示;
  • a:列出所有的文件与目录容量,默认只列出目录及其大小;
  • s :列出总量而已,而不列出目录下所有文件或目录;
  • c:统计几个文件的大小之和;

命令

  • du -h /opt:列出opt目录及其所有子目录的大小;
  • du -ha /opt:列出opt目录及其所有子目录和文件的大小;
  • du -sh /opt/*:列出opt目录下所有直接目录和文件的大小;
  • du -shc /opt/*:列出opt目录下所有直接目录和文件的大小及其和;
  • du -ma /opt/* | sort -rn | head -n 10:统计当前目录下前10大的文件和目录;

3、iostat命令

描述:展示CPU和IO统计信息

参数:常用的参数

  • h:Make the Device Utilization Report easier to read by a human
  • x:Display extended statistics

字段:常关注行和列的含义

  1. avg-cpu:CPU相关,不解释
  2. Device:IO相关
    • rrqm/s: 每秒进行 merge 的读操作数目。即 rmerge/s
    • wrqm/s: 每秒进行 merge 的写操作数目。即 wmerge/s
    • r/s: 每秒完成的读 I/O 设备次数。即 rio/s
    • w/s: 每秒完成的写 I/O 设备次数。即 wio/s
    • rsec/s: 每秒读扇区数。即 rsect/s
    • wsec/s: 每秒写扇区数。即 wsect/s
    • rkB/s: 每秒读K字节数。是 rsect/s 的一半,因为每扇区大小为512字节。
    • wkB/s: 每秒写K字节数。是 wsect/s 的一半。
    • avgrq-sz: 平均每次设备I/O操作的数据大小 (扇区)。
    • avgqu-sz: 平均I/O队列长度。
    • await: 平均每次设备I/O操作的等待时间 (毫秒)。
    • svctm: 平均每次设备I/O操作的服务时间 (毫秒)。
    • %util: 一秒中有百分之多少的时间用于 I/O 操作,即被io消耗的cpu百分比

扩展:找出IO高的进程

命令:iostat -hx 3

分析:详见Linux系统之运行状态分析及问题排查思路:I/O分析。

四、网络相关命令

1、netstat命令

描述:打印网络连接、路由表、接口统计信息、伪装连接和多播成员资格

参数:一般 netstat --help 就够了

字段:常关注行和列的含义

  • Proto:协议(tcp, udp, udpl, raw)
  • Recv-Q:网络接收队列,接收的网络数据,但还未被用户程序接收的字节数
  • Send-Q:网络发送队列,发送的网络数据,但还未被对端主机ACK的字节数
  • Local Address:本地IP+端口
  • Foreign Address:对端IP+端口
  • State:连接状态,详见Java网络编程系列之TCP连接状态
  • PID/Program name:进程id/程序名称

命令

  • netstat -naltup
  • netstat -naltup | uniq | wc -l
  • netstat -naltp | egrep 'LISTEN|ESTABLISHED|TIME_WAIT|CLOSE_WAIT' | awk '{print $6}'| sort | uniq -c | sort -rn

分析:详见Linux系统之运行状态分析及问题排查思路:网络分析。

2、tcpdump命令

描述:网络抓包工具

参数

  • tcp:tcp、udp、icmp这些选项等都要放到第一个参数的位置,用来过滤数据报的类型
  • -i eth1:只抓经过eth1网卡的包
  • -s 0:抓取数据包时默认抓取长度为68字节。加上-s 0后可以抓到完整的数据包
  • -c 100:只抓取100个数据包并自动退出
  • -w /xx/target.cap:保存成cap文件,方便用ethereal(即wireshark)分析
  • -n:不要将ip地址转换为主机名,从而避免dns查表

命令

  1. tcpdump host 10.253.8.222 -> 监听本机和指定主机的通信
  2. tcpdump host ! 10.253.8.222 -> 监听本机和指定主机之外的其他主机的通信
  3. tcpdump host 10.253.8.222 and 10.37.18.28 -> 监听特定主机之间的通信
  4. tcpdump host 10.253.8.222 and ! 10.37.18.28 -> 监听10.253.8.222和除10.37.18.28之外主机的通信
  5. tcpdump port 28051 and host 10.253.8.222 -> 监听本机和指定主机在特定端口上的通信
  6. tcpdump port ! 28051 and host 10.253.8.222 -> 监听本机和指定主机在非特定端口上的通信
  7. tcpdump tcp port 28051 and host 10.253.8.222 -> 监听本机和指定主机在特定端口上的tcp通信
  8. tcpdump tcp -s 0 -c 1000 -n -w /tmp/tcpdump_save.cap and port 28051

分析:详见Linux系统之运行状态分析及问题排查思路:网络分析。

五、系统相关命令

1、ps命令

描述:report a snapshot of the current processes.

参数:ps --help all,常用的参数

  • -ef:To see every process on the system using standard syntax
  • aux:To see every process on the system using BSD syntax
  • -eo:To see every process with a user-defined format
  • -mp:列出指定进程的子进程
  • -L:显示线程,可能使用LWP和NLWP列

命令

  • ps -ef | grep 'xx'
  • ps aux | grep 'xx'
  • ps -eo stat,pid,user,%cpu,%mem,time,cmd
  • ps -eo stat,pid,user,%cpu,%mem,time,cmd | grep -e '^R'
  • ps -mp -ostat,pid,tid,user,%cpu,%mem,time,wchan | sort -rn
  • ps -efL | wc -l:列出机器总线程数 wchan:正在等待的进程资源

2、crontab命令

描述:maintains crontab files for individual users.

顾名思义,定时任务。

参数:crontab --help,常用的参数

  • -u :define user,省略用户表表示操作当前用户的crontab
  • -e:edit user's crontab,编辑用户工作表
  • -l:list user's crontab,列出用户工作表里的所有任务命令
  • -r:delete user's crontab,删除用户的工作表

crontab -e,编辑用户工作表说明: 每行是一条任务命令,crontab的任务命令构成为:时间+动作。 其时间依次为分、时、日、月、周,操作符有: *:取值范围内的所有数字; /:每过多少个数字; -:从X到Y; ,:散列数字; 示例:0,30 23-6/2 * * * /usr/local/start.sh -> 每天晚上23点-早上6点,没两个小时的0分和30分执行依次/usr/local/start.sh

命令

  • crontab -e:编辑当前用户工作表

查看crontab的执行日志:tail -200f /var/log/cron

3、查看系统

命令:cat /etc/redhat-release

4、查看内核

命令:uname -a 或 cat /proc/version

六、文件相关命令

1、cp命令

描述:复制文件或目录

参数:常用的参数

  • -r:递归处理,将指定目录下的文件与子目录一并处理
  • -f:强行复制文件或目录,不论目标文件或目录是否已存在

命令

  • cp <文件> <目标文件>
  • cp -r <目录> <目标位置>

2、scp命令

描述:在不通主机间复制文件或目录

参数:常用的参数

  • -r:递归处理,将指定目录下的文件与子目录一并处理
  • -f:强行复制文件或目录,不论目标文件或目录是否已存在

命令

  • scp文件:scp /usr/local/soft/xx.tar.gz root@10.10.10.1:/usr/local/soft
  • scp目录:scp -r /usr/local root@10.10.10.1:/usr/local/

3、tar命令

描述:解压缩工具

参数:常用的参数

  • -c:建立压缩文件
  • -x:解压
  • -t:查看内容
  • -v:显示所有过程
  • -f: 使用文件名字,切记,这个参数是最后一个参数,后面只能接文件名
  • --exclude:排除指定文件或目录

命令

  • 压缩:tar <参数> <文件名> <压缩目录> --exclude <排除目录> <压缩文件存放位置,默认当前目录> tar –cvf xx.tar /tmp/ --exclude /tmp/test.txt /opt/ -> 打包为tar包 tar –czvf xx.tar /tmp/ --exclude /tmp/test/ /opt/ -> 打包为tar.gz包
  • 查看:tar -tf xx.tar.gz
  • 解压 tar –xvf xx.tar -> 解压tar包 tar -xzvf xx.tar.gz -> 解压tar.gz

总结

  • *.tar 用 tar –xvf 解压
  • *.gz 用 gzip -d或者gunzip 解压
  • *.tar.gz和*.tgz 用 tar –xzf 解压
  • *.bz2 用 bzip2 -d或者用bunzip2 解压
  • *.tar.bz2用tar –xjf 解压
  • *.Z 用 uncompress 解压
  • *.tar.Z 用tar –xZf 解压

x、vi/vim命令

描述:a programmers text editor.

命令:vi/vim fileName

操作

  1. 模式转换
    • 命令模式->输入模式
      • i :在光标前
      • I :在当前行首
      • a:光标后
      • A:在当前行尾
      • o:在当前行之下新开一行
      • O:在当前行之上新开一行
    • 输入模式->命令模式:Esc
    • 命令模式->末行模式::
    • 末行模式->命令模式:Esc Esc
  2. 命令模式
    • 移动光标
      • w或W:光标右移一个字至字首
      • b或B:光标左移一个字至字首
      • H:光标移至屏幕顶行
      • M:光标移至屏幕中间行
      • L:光标移至屏幕最后行
    • 翻屏
      • Ctrl+u:向文件首翻半屏
      • Ctrl+d:向文件尾翻半屏
      • Ctrl+f:向文件尾翻一屏
      • Ctrl+b:向文件首翻一屏
      • gg:跳转到文档开头
      • G:跳转到文档结尾
    • 删除
      • x:删除光标所在字符
      • d0:删除至行首
      • d$:删除至行尾
      • dd:删除一行
      • ndd:删除当前行及其后n-1行 -> 3dd
      • ndw/ndW:删除当前单词及其后(前)的n-1个单词
    • 复制
      • y0:复制至行首
      • y$:复制至行尾
      • yy:复制一行
      • nyy:复制当前行及其后n-1行 -> 3yy
      • nyw/nyW:复制当前单词及其后(前)的n-1个单词
    • 粘贴
      • p:若删除或复制内容为整行,则粘贴至光标所在行的下方;若删除或复制内容为非整行,则粘贴至光标所在字符的后面。
      • P:若删除或复制内容为整行,则粘贴至光标所在行的上方;若删除或复制内容为非整行,则粘贴至光标所在字符的前面。
    • 修改
      • c0:修改至行首
      • c$:修改至行尾
      • cc:修改一行
      • ncc:修改当前行及其后n-1行 -> 3cc
      • ncw/ncW:修改当前单词及其后(前)的n-1个单词
    • 替换
      • r:替换当前字符 -> 先输入r,再输入替换字符
      • R:替换当前字符及其后的字符,直至按ESC键
    • 撤销/恢复
      • u:撤销前一次操作
      • ctrl+r:恢复撤销
    • 查找
      • /内容:查找内容 -> n:下一个,N:上一个
      • /noh:取消高亮显示
代码语言:txt
复制
    - \c表示大小写不敏感查找,\C表示大小写敏感查找 -> /xx\C末行模式 替换 :%s/xx/yy/g:将文档中的xx替换为yy,一次全部替换:%s/xx/yy/gc:将文档中的xx替换为yy,逐个替换:s/xx/yy/g:将当前行中所有xx均用yy替代,一次全部替换:s/xx/yy/gc:将当前行中所有xx均用yy替代,逐个替换
代码语言:txt
复制
    - \c表示大小写不敏感查找,\C表示大小写敏感查找 -> :%s/xx\C/yy/g
- 设置行号 
    - :set nu/:set number:临时设置行号
    - vim /etc/vir[m]c -> 添加set nu或者set number:永久设置行号输入模式
输入中…

七、其他常用命令

1、vmstat大命令

描述:用来查看系统的运行状况及系统资源的使用情况

字段:常关注行和列的含义

  1. procs - 对应top命令
    • r:The number of processes waiting for run time(R状态的进程数量)
    • b:The number of processes in uninterruptible sleep(D状态的进程数量)
  2. memory - 对应free命令
    • swpd:the amount of virtual memory used
    • free:the amount of idle memory
    • buff:the amount of memory used as buffers
    • cache:the amount of memory used as cache
  3. swap - 对应free命令
    • si:Amount of memory swapped in from disk (/s);
    • so:Amount of memory swapped to disk (/s);
  4. io - 对应iostat命令
    • bi:Blocks received from a block device (blocks/s),块设备每秒接收的块数量,简单粗暴地理解为OutputStream;
    • bo:Blocks sent to a block device (blocks/s),块设备每秒发送的块数量,简单粗暴地理解为InputStream;
  5. system - 对应top命令
    • in:The number of interrupts per second, including the clock;
    • cs:The number of context switches per second,每秒上下文切换次数,这个值要越小越好,太大了,要考虑减少线程或者进程的数目,上下文切换次数过多表示CPU大部分浪费在上下文切换,导 致CPU干正经事的时间少了,CPU没有充分利用,不可取;
  6. cpu - 对应top命令
    • us:Time spent running non-kernel code (user time, including nice time),用户CPU时间;
    • sy:Time spent running kernel code (system time),系统CPU时间,如果太高,表示系统调用时间长,例如IO操作频繁;
    • id:Time spent idle, this includes IO-wait time,空闲 CPU时间,一般来说,id+us+sy=100;
    • wa:Time spent waiting for IO, included in idle;

命令:vmstat 1 3

2、pidstat命令

描述:Report statistics for Linux tasks.

参数:常用的参数

  • -u:统计CPU
  • -r:统计内存
  • -d:统计IO
  • -p:后跟进程id

字段:常关注行和列的含义

  1. 统计CPU
    • PID:进程id
    • %usr:进程在用户空间占用cpu的百分比
    • %system:进程在内核空间占用cpu的百分比
    • %guest:任务在虚拟机中花费的CPU百分比
    • %CPU:进程占用cpu的百分比
    • CPU:处理进程的cpu编号
    • Command:命令
  2. 统计内存
    • PID:进程id
    • minflt/s:任务每秒发生的次要故障总数,这些故障不需从磁盘加载内存页
    • majflt/s:任务每秒发生的主要故障总数,这些故障需要从磁盘加载内存页
    • VSZ:虚拟内存使用大小(Virtual Size: The virtual memory usage of entire task in kilobytes)
    • RSS:物理内存使用大小(Resident Set Size: The non-swapped physical memory used by the task in kilobytes)
    • %MEM:内存使用比率
    • Command:命令
  3. 统计IO
    • PID:进程id
    • kB_rd/s:每秒读取磁盘的KB
    • kB_wr/s:每秒写入磁盘的KB
    • kB_ccwr/s:任务取消的写入磁盘的KB,当任务截断脏的pagecache的时候会发生
    • Command:命令

命令

  • pidstat -u 1 -p
  • pidstat -r 1 -p
  • pidstat -d 1 -p

八、最后但很重要

  1. 一个w3cschool的Linux教程
  2. 这些命令,知道就行,用到就是查,不用刻意去记,特别是参数项(简单的用 命令 --help,复杂的用 man 命令)!
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-01-07 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 〇、最重要的事儿
  • 一、CPU相关命令
    • 1、top命令
      • x、查看CPU信息
      • 二、内存相关命令
        • 1、free命令
        • 三、磁盘相关命令
          • 1、df命令
            • 2、du命令
              • 3、iostat命令
              • 四、网络相关命令
                • 1、netstat命令
                  • 2、tcpdump命令
                  • 五、系统相关命令
                    • 1、ps命令
                      • 2、crontab命令
                        • 3、查看系统
                          • 4、查看内核
                          • 六、文件相关命令
                            • 1、cp命令
                              • 2、scp命令
                                • 3、tar命令
                                  • x、vi/vim命令
                                  • 七、其他常用命令
                                    • 1、vmstat大命令
                                      • 2、pidstat命令
                                      • 八、最后但很重要
                                      相关产品与服务
                                      云服务器
                                      云服务器(Cloud Virtual Machine,CVM)提供安全可靠的弹性计算服务。 您可以实时扩展或缩减计算资源,适应变化的业务需求,并只需按实际使用的资源计费。使用 CVM 可以极大降低您的软硬件采购成本,简化 IT 运维工作。
                                      领券
                                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档