前言

Linux常用命令中,有些命令可以用于查看系统的状态,通过了解系统当前的状态,能够帮助我们更好地维护系统或定位问题。本文就简单介绍一下这些命令。

1. 查看系统运行时间--uptime

有时候我们想知道系统上一次复位是在什么时候或者系统已经运行了多长时间,我们可以通过uptime命令获取这些信息:

uptime
20:47:06 up 50 min, 1 user, load average: 0.75, 0.84, 0.93

从左往右显示的信息依次为:当前时间、已运行时间、用户登录数、1分钟、5分钟和15分钟内系统的平均负载。

2. 查看系统已登录用户--who

who -a
hyb tty7 2018-09-30 19:57 (:0)

通过who命令可以查看到哪些用户通过哪个ip登录到了这台主机。

3. 查看系统版本相关信息--uname

例如:

uname -a
Linux ubuntu16.04 4.15.0-34-generic #37~16.04.1-Ubuntu SMP Tue Aug 28 10:44:06 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

从结果可以看到操作系统版本(ubuntu16.04),CPU类型(x86_64)等信息

4. 查看当前环境变量--export

环境变量影响着程序的运行,因此有时候需要查看当前环境的环境变量:export

5. 查看目录和文件占用空间--du

du命令直接显示当前目录下每个目录及其文件占用空间。结合--max-depth参数可以指定显示的目录层级。

例如,如果只想显示当前目录下各个目录所占总空间,可以使用:

du -h --max-depth=1
19M ./python
9.0M ./git
321M ./hexo
17M ./lua
28K ./vim
1.4M ./shell
81M ./redis
316M ./books
48M ./c
810M .
du -sh #仅统计当前目录总大小
810M

其中-h表示以易读的单位显示大小,即M,--max-depth=1表明目录层级。通过命令结果,我们可以看到当前目录下各个子目录占用空间大小,以及总空间大小。

6. 查看各挂载点空间--df

例如:

df -h
文件系统 容量 已用 可用 已用% 挂载点
udev 3.9G 0 3.9G 0% /dev
tmpfs 786M 9.5M 776M 2% /run
/dev/sda10 24G 9.8G 13G 45% /
tmpfs 3.9G 43M 3.8G 2% /dev/shm
tmpfs 5.0M 4.0K 5.0M 1% /run/lock
tmpfs 3.9G 0 3.9G 0% /sys/fs/cgroup
/dev/sda11 454M 274M 153M 65% /boot
/dev/sda15 55G 5.2G 47G 10% /home
/dev/sda1 256M 31M 226M 12% /boot/efi
/dev/sda14 4.6G 9.9M 4.4G 1% /tmp
tmpfs 786M 60K 786M 1% /run/user/1000

从结果中,我们可以看到各个挂载点总空间以及可用空间。当磁盘文件占用空间较大时,可能导致系统运行缓慢,因此,可根据该结果进行相应的磁盘清理。

7. 查看内存可用情况--free

free命令可用于显示系统中可用的物理内存,交换区内存以及内核使用的buffer:

free -h
total used free shared buff/cache available
Mem: 7.7G 2.3G 2.6G 268M 2.8G 4.7G
Swap: 7.6G 0B 7.6G

从执行结果可以看到已用内存和空闲内存的情况。同样地,当内存不足时,可能导致程序运行异常或系统卡顿。

8. 查看进程的内存使用情况--pmap

pmap命令用于查看进程内存相关信息:

pmap pid    #pid为进程id,可通过ps命令获取
6030: ./main
0000000000400000 4K r-x-- main
0000000000600000 4K r---- main
0000000000601000 4K rw--- main
00000000017d2000 132K rw--- [ anon ]
00007fc3843e8000 1792K r-x-- libc-2.23.so
00007fc3845a8000 2048K ----- libc-2.23.so
00007fc3847a8000 16K r---- libc-2.23.so
00007fc3847ac000 8K rw--- libc-2.23.so
00007fc3847ae000 16K rw--- [ anon ]
00007fc3847b2000 152K r-x-- ld-2.23.so
00007fc3849b9000 12K rw--- [ anon ]
00007fc3849d7000 4K r---- ld-2.23.so
00007fc3849d8000 4K rw--- ld-2.23.so
00007fc3849d9000 4K rw--- [ anon ]
00007ffcf2018000 132K rw--- [ stack ]
00007ffcf2175000 12K r---- [ anon ]
00007ffcf2178000 8K r-x-- [ anon ]
ffffffffff600000 4K r-x-- [ anon ]
total 4356K

我们可以根据进程各部分占用空间情况,来不断优化我们的程序。

9. 查看虚拟内存统计信息--vmstat

vmstat
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free buff cache si so bi bo in cs us sy id wa st
1 0 0 2214960 407828 2572148 0 0 126 57 377 1006 8 2 88 2 0

vmstat的输出值能够帮助我们了解当前系统的性能。比如说,如果si(每秒从交换区写到内存的大小)和so(每秒写入交换区的内存大小)的值经常大于0,说明内存可能不够用,因此才需要用到交换空间。再比如说,us(用户进程执行时间百分比)的值比较高时,说明用户进程消耗的CPU资源较多。而wa(IO等待时间百分比)值较高时,说明IO等待情况严重。

10. 查看ip地址--ip

有时候使用ifconfig命令并不一定能够看到所有的ip地址,因此可以使用:ip addr

11. 查看网络连接状态--netstat

netstat命令可以查看网络连接状态,通常用于诊断网络相关问题。例如查看端口是否被占用,连接是否已经释放,服务是否在监听等等。

12. 查看进程间关系--pstree

通过pstree命令可以看到进程间的父子关系,它以树形结构显示这些信息:

pstree
systemd─┬─ModemManager─┬─{gdbus}
│ └─{gmain}
├─NetworkManager─┬─dhclient
│ ├─dnsmasq
│ ├─{gdbus}
│ └─{gmain}
├─accounts-daemon─┬─{gdbus}
│ └─{gmain}
├─acpid
├─atd
├─avahi-daemon───avahi-daemon
├─bluetoothd
├─colord─┬─{gdbus}
│ └─{gmain}
├─cron
├─cups-browsed─┬─{gdbus}
│ └─{gmain}
├─cupsd───3*[dbus]
├─dbus-daemon
├─gnome-keyring-d─┬─{gdbus}
│ ├─{gmain}
│ └─{timer}
(仅显示部分内容)

总结

实际上,前面所提到的很多相关命令信息都是从系统文件中获取的,例如/proc/meminfo保存了内存相关信息,/proc/net/dev保存网络流量相关信息。只是,它们都是静态数值,但是我们可以结合watch命令来动态地观察这些信息,例如:

watch -n 1 cat /proc/meminfo
watch -n 1 cat /proc/net/dev

上面的命令表示,每隔一秒执行一次cat /proc/meminfo或cat /proc/net/dev,因此我们可以看到内存信息或网卡流量信息在实时刷新。

本文仅介绍这些命令的经典使用,更多使用可通过man 命令查看。通过前面这些系统自带命令,我们可以比较方便地监控系统状态,从而帮助我们维护系统或定位问题。欢迎留言补充或更正。



本文转自Linux爱好者!

Linux 常用命令:系统状态篇的更多相关文章

  1. Linux常用命令-文本查看篇

    前言 Linux常用命令中,除了cat还有很多其他用于文本查看的命令.本文将简单介绍一下这些文本查看的命令. 全文本显示--cat cat可能是常用的一个文本查看命令了,使用方法也很简单: cat f ...

  2. linux常用命令--开发调试篇

    前言 Linux常用命令中有一些命令可以在开发或调试过程中起到很好的帮助作用,有些可以帮助了解或优化我们的程序,有些可以帮我们定位疑难问题.本文将简单介绍一下这些命令. 示例程序 我们用一个小程序,来 ...

  3. Linux 常用命令:解压缩篇

    前言 Linux常用命令中,有很多用于对文件的压缩或解压,本文将介绍这些解压缩命令中不常见却非常实用的用法. tar tar是linux中最常用的解压缩命令.tar命令可用于处理后缀名为tar,tar ...

  4. LINUX常用命令-系统配置篇(二)

    学到一定程度了就会关注系统方面的一些配置,只是就需要相关的命令了.现在把Linux查看系统配置常用命令列出来 # uname -a # 查看内核/操作系统/CPU信息# head -n 1 /etc/ ...

  5. LINUX常用命令大全归纳篇

    su su命令是最基本的命令之一,常用于不同用户间切换. 例如,如果登录为 user1,要切换为user2,只要用如下命令: $su user2 然后系统提示输入user2口令,输入正确的口令之后就可 ...

  6. linux常用命令---系统辅助命令

    系统辅助命令

  7. Linux常用命令-解压缩篇

    前言 Linux常用命令中,有很多用于对文件的压缩或解压,本文将介绍这些解压缩命令中不常见却非常实用的用法. tar tar是linux中最常用的解压缩命令.tar命令可用于处理后缀名为tar,tar ...

  8. Linux常用命令3--如何设置IP地址?如何更改系统时间?

    Linux常用命令 系统状态监控 [1]ps:用于显示当前系统中运行的进程. 语法:ps [-option]:常用的参数有:-a;-u;-x;-e;-f. -a:显示所有进程: -u:显示所有用户: ...

  9. Linux常用命令入门文件、网络、系统及其他操作命令

    Linux常用命令入门文件.网络.系统及其他操作命令.压缩 归档 文件系统 系统管理 用户管理  网络管理 finger 相关命令 netstat ping rsh telnet wget 进程管理等 ...

随机推荐

  1. java的可查的异常和不可查的异常讲解

    java的可查的异常和不可查的异常讲解: Java的异常(包括Exception和Error)分为:可查的异常(checked exceptions)和不可查的异常(unchecked excepti ...

  2. C#调用Exe程序示例

    在编写程序时经常会使用到调用可执行程序的情况,本文将简单介绍C#调用exe的方法.在C#中,通过Process类来进行进程操作. Process类在System.Diagnostics包中. 示例一 ...

  3. java中class,public的用法

    java中class,public的用法 一.Java访问权限饰词(access specifiers) Java有public.protect.friendly.private四种访问权限,并且这四 ...

  4. SpringCloud学习笔记(12)----Spring Cloud Netflix之Hystrix断路器的流程和原理

    工作流程(参考:https://github.com/Netflix/Hystrix/wiki/How-it-Works) 1. 创建一个HystrixCommand或HystrixObservabl ...

  5. C语言基础 (2) linux命令

    01.课程回顾 链接 ln 1.txt aaa.txt  硬链接 (两个相互独立 删除一个另外一个还在) ln -s 1.txt aaa.txt软连接 (后面的是快捷方式) 硬链接只能是文件,软连接可 ...

  6. Java基础学习总结(3)——抽象类

    一.抽象类介绍 下面通过一下的小程序深入理解抽象类 因此在类Animal里面只需要定义这个enjoy()方法就可以了,使用abstract关键字把enjoy()方法定义成一个抽象方法,定义如下:pub ...

  7. echarts 地图 动态 展示 结合css+js

    echarts地图展示功能非常强大,官网上静态展示的样例非常多了,动态的资料少.研究了下.我眼下实现的通过ajax从server获取数据动态展示地图. 另外,我们有时候希望在地图之上做些自己定义的东西 ...

  8. (数据结构整理)NJUPT1054

    这一篇博客以一些OJ上的题目为载体,整理一下数据结构.会陆续的更新. .. 我们都知道,数据结构的灵活应用有时能让简化一些题目的解答. 一.栈的应用 1.NJUPT OJ 1054(回文串的推断) 回 ...

  9. thinkphp5项目--个人博客(五)

    thinkphp5项目--个人博客(五) 项目地址 fry404006308/personalBlog: personalBloghttps://github.com/fry404006308/per ...

  10. js 实现 水仙花数

    水仙花数是指一个 n 位数 ( n≥3 ),它的每个位上的数字的 n 次幂之和等于它本身.(例如:1^3 + 5^3+ 3^3 = 153) <!DOCTYPE html><html ...