Linux系统资源查看 之 资源信息
1. 系统
版本信息
- 内核版本
使用uname
命令:
- -a : 查看所有系统信息
- -r : 查看内核版本信息
- -s : 查看内核名称
代码如下:
[niesh@niesh ~]$ uname -a Linux niesh 3.10.0-327.el7.x86_64 #1 SMP Thu Nov 19 22:10:57 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux [niesh@niesh ~]$ uname -r 3.10.0-327.el7.x86_64 [niesh@niesh ~]$ uname -s Linux
- 发行版本
使用lsb_release
命令 (貌似在Ubuntu上无此命令)
代码如下:
[niesh@niesh ~]$ lsb_release -a LSB Version: :core-4.1-amd64:core-4.1-noarch:cxx-4.1-amd64:cxx-4.1-noarch:desktop-4.1-amd64:desktop-4.1-noarch:languages-4.1-amd64:languages-4.1-noarch:printing-4.1-amd64:printing-4.1-noarch Distributor ID: CentOS Description: CentOS Linux release 7.2.1511 (Core) Release: 7.2.1511 Codename: Core
位数
注意,Linux下暂没有命令可以查看系统位数,但是我们可以通过查看系统可执行程序(即elf)的位数进行判定:(可以看到我的Linux为64-bit)
代码如下:
[root@niesh ~]# file /bin/cat /bin/cat: ELF 64-bit LSB executable, x86-64, version 1 (SYSV), dynamically linked (uses shared libs), for GNU/Linux 2.6.32, BuildID[sha1]=03fda19cacc76ee7464947e29ed25552138ae50e, stripped
主机名称
代码如下:
[root@niesh ~]# hostname niesh
文件系统
可采用 df -Th
进行查看:(主要看根目录的文件系统,此处为 xfs)
代码如下:
[root@niesh ~]# df -Th 文件系统 类型 容量 已用 可用 已用% 挂载点 /dev/mapper/centos_niesh-root xfs 18G 9.1G 8.5G 52% / devtmpfs devtmpfs 726M 0 726M 0% /dev tmpfs tmpfs 741M 100K 741M 1% /dev/shm tmpfs tmpfs 741M 9.1M 732M 2% /run /dev/sda1 xfs 497M 158M 339M 32% /boot
2. 用户登录
登录的用户名
代码如下:
[root@niesh ~]# whoami root
活动用户
- w:
查看已经登录的用户(详细信息)
- who:
查看登陆的用户(用户名,终端,登录时间)
- w:
代码如下:
[root@niesh ~]# w 17:54:50 up 8:15, 3 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT niesh :0 :0 09:40 ?xdm? 3:35 0.32s gdm-session-wor niesh pts/0 192.168.139.1 09:41 3:33m 0.10s 0.10s -bash niesh pts/1 192.168.139.1 09:41 58.00s 0.24s 0.17s sshd: niesh [pr
第一行:系统的基本信息:
- 系统的当前时间:17:54:50
- 从上次启动到现在的时间:8:15 (8小时15分钟)
- 有多少用户登录到本机: 3 (3个),注意,同一个用户可重复登录
- 系统平均负载:过去1min(0.00), 5min(0.01), 10min(0.05)
第二行,8个字段,显示用户的详细信息:
- User: 用户名(相同用户名代表我登录了多次)
- TTY:用户登录的终端代号,TTY1-TTY6分别代表本机上的1到6号的虚拟主控台。PTS表示用户是通过远程登陆的。如果数字为:0则表示用户从XWindow登录系统
- From: 从何处登录,"0"表示本机登录,IP地址为登录的地址
- Login@:登录的时间点
- IDLE:用户登录后的闲置时间
- JCPU:用户所采用的终端所有相关的程序执行时,所消耗的CPU时间
- PCUP:执行后面
WHAT
所耗费的时间- WHAT:表示当前用户正在做的事情:若用户正在执行某个程序,则这里会显示用户执行程序的名字。如果用户正在操作的是执行一般文字模式的命令,则这里显示的是用户的环境名称
- who:
代码如下:
[niesh@niesh ~]$ w 09:52:00 up 8:33, 6 users, load average: 0.00, 0.01, 0.05 USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT niesh :0 :0 四09 ?xdm? 3:52 0.33s gdm-session-worker [pam/gdm-password] niesh pts/0 192.168.139.1 四09 19:30m 0.10s 0.10s -bash niesh pts/1 192.168.139.1 四09 15:52m 0.24s 0.17s sshd: niesh [priv] niesh pts/2 :0 四10 15:56m 0.09s 1.93s /usr/libexec/gnome-terminal-server
登录的历史信息
- last:
显示用户登录的历史信息
原理即为读取了/var/log/wtmp
- lastlog:
读取
/var/log/lastlog
, 同last
- last:
代码如下:
[niesh@niesh log]$ last niesh pts/4 192.168.139.1 Fri Aug 25 09:40 still logged in niesh pts/3 192.168.139.1 Fri Aug 25 09:40 still logged in niesh pts/2 :0 Thu Aug 24 10:23 still logged in niesh pts/1 192.168.139.1 Thu Aug 24 09:41 - 11:50 (1+02:08) niesh pts/0 192.168.139.1 Thu Aug 24 09:41 - 11:32 (1+01:50) niesh :0 :0 Thu Aug 24 09:40 still logged in (unknown :0 :0 Thu Aug 24 09:39 - 09:40 (00:00) reboot system boot 3.10.0-327.el7.x Thu Aug 24 09:39 - 14:05 (1+04:26) niesh pts/0 192.168.139.1 Wed Aug 23 16:01 - crash (17:37) niesh pts/2 192.168.139.1 Wed Aug 23 15:31 - crash (18:07) niesh pts/1 :0 Wed Aug 23 15:30 - crash (18:09) niesh :0 :0 Wed Aug 23 15:29 - crash (18:09) niesh pts/0 192.168.139.1 Wed Aug 23 15:29 - 15:46 (00:17) niesh pts/0 192.168.139.1 Tue Aug 22 18:05 - 18:21 (00:16) niesh pts/3 192.168.139.1 Tue Aug 22 17:11 - 18:21 (01:09) niesh pts/2 192.168.139.1 Tue Aug 22 17:06 - 18:21 (01:15) niesh pts/1 192.168.139.1 Tue Aug 22 13:21 - 18:21 (05:00) niesh pts/0 192.168.139.1 Tue Aug 22 13:21 - 17:24 (04:02) (unknown :0 :0 Tue Aug 22 10:11 - 15:29 (1+05:18) reboot system boot 3.10.0-327.el7.x Tue Aug 22 10:10 - 14:05 (3+03:54)
- lastlog:
代码如下:
[niesh@niesh log]$ lastlog 用户名 端口 来自 最后登陆时间 root pts/2 四 8月 24 10:24:09 +0800 2017 bin **从未登录过** daemon **从未登录过** ... oprofile **从未登录过** tcpdump **从未登录过** niesh pts/4 192.168.139.1 五 8月 25 09:40:14 +0800 2017
3. 监控系统资源信息
- top:
类似windows的任务管理器,查看系统进程、内存资源占用、运行时间等等信息
定时刷新,占用了大量的系统资源
参数:
- -d:指定更新的间隔(s)
- -q:没有任何延迟的更新
- -c:显示进程完整的路径与名称。
- -s:安全模式
- -i:不显示任何Idle & Zombie进程
- -n:显示更新的次数,完成后将会退出to
- iostat:
监控系统设备的IO负载情况
参数:
- -c: 只显示CPU行
- -d: 显示磁盘行
- -k: 以千字节为单位显示磁盘输出
- -t: 在输出中包括时间戳
- -x: 在输出中包括扩展的磁盘指标
- vmstat [delay][count]:
显示进程、内存、IO等一些列信息
- delay: 延时多少秒刷新一次
- count: 显示多少次
- top:
代码如下:
[niesh@niesh log]$ top -d 10 #为了便于复制,将舒心时间改为10s top - 14:46:54 up 13:28, 4 users, load average: 0.00, 0.01, 0.05 Tasks: 436 total, 1 running, 435 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.1 us, 0.3 sy, 0.0 ni, 99.6 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1517428 total, 401340 free, 645368 used, 470720 buff/cache KiB Swap: 2097148 total, 2097148 free, 0 used. 649748 avail Mem PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 63456 niesh 20 0 146420 2396 1444 R 0.3 0.2 0:00.05 top 1315 root 20 0 317868 6524 4980 S 0.2 0.4 1:13.06 vmtoolsd 3978 niesh 20 0 377436 18192 14384 S 0.2 1.2 1:14.92 vmtoolsd 43779 root 20 0 0 0 0 S 0.2 0.0 0:01.98 kworker/0:0 1373 root 20 0 203352 1244 788 S 0.1 0.1 0:00.13 gssproxy 1 root 20 0 191616 6796 3900 S 0.0 0.4 0:08.94 systemd 2 root 20 0 0 0 0 S 0.0 0.0 0:00.07 kthreadd ...
- 第一部分:
- 第一行: 系统时间 + 系统运行时间 + 几个用户 + 1/5/15分钟系统平均负载
- 第二行:进程总数(total) + 正在运行进程数(running) + 睡眠进程数(sleeping) + 停止的进程数(stopped)+ 僵尸进程数(zombie)
- 第三行:用户空间CPU占比(us) + 内核空间CPU占比(sy)+ CPU空置率(id)
- 第二部分:
- PID(Process IDentificator):进程标识
- USER:进程所有者的用户名
- PR:进程的优先级别
- NI:进程的优先级别数值
- VIRT:进程占用的虚拟内存值
- RES:进程占用的物理内存值
- SHR:进程使用的共享内存值
- S:进程的状态,其中S表示休眠,R表示正在运行,Z表示僵死状态,N表示该进程优先值是负数
- %CPU:该进程占用的CPU使用率
- %MEM:该进程占用的物理内存和总内存的百分比
- TIME+:该进程启动后占用的总的CPU时间
- Command:进程启动的启动命令名称,如果这一行显示不下,进程会有一个完整的命令行
top
命令的交互:
- <空格>:立刻刷新
- P:根据CPU使用大小进行排序
- T:根据时间、累计时间排序
- M:根据使用内存大小进行排序
- q:退出top命令
- m:切换显示内存信息
- t:切换显示进程和CPU状态信息
- c:切换显示命令名称和完整命令行
- W:将当前设置写入~/.toprc文件中。这是写top配置文件的推荐方法
- iostat:
代码如下:
[niesh@niesh log]$ iostat -t Linux 3.10.0-327.el7.x86_64 (niesh) 2017年08月25日 _x86_64_ (1 CPU) 2017年08月25日 15时05分15秒 avg-cpu: %user %nice %system %iowait %steal %idle 0.38 0.01 0.52 0.05 0.00 99.05 Device: tps kB_read/s kB_wrtn/s kB_read kB_wrtn sda 0.41 7.26 1.14 358126 56039 dm-0 0.42 7.11 1.09 350846 53990 dm-1 0.00 0.03 0.00 1268 0
- Device: 设备名称
- tps:每秒钟的传输数
- kB_read/s:每秒钟读取数据块(通常为512kB)的个数
- kB_write/s:每秒钟写入数据块(通常为512kB)的个数
- kB_read:512字节块读取总数量
- kB_wrtn:512字节块写入总数量
- vmstat [delay][count]:
代码如下:
[niesh@niesh log]$ vmstat 3 4 procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- r b swpd free buff cache si so bi bo in cs us sy id wa st 0 0 0 401192 1260 469512 0 0 7 1 52 123 0 1 99 0 0 0 0 0 401192 1260 469512 0 0 0 0 57 104 0 0 100 0 0 0 0 0 401068 1260 469512 0 0 0 0 89 175 0 2 98 0 0 0 0 0 401068 1260 469512 0 0 0 0 56 93 0 0 100 0 0
以上各列解释如下:
- r: Running, 正在运行和等待运行的进程数
- b: Sleeping,处于Sleeeping状态的进程数
- swpd: 虚拟内存使用量,一般为0,否则可能是物理内存不够用了
- free: 物理内存空闲大小
- buf: 缓冲区大小
- cache: 缓存大小
- si: 每秒从虚拟内存写入硬盘的大小
- so: 每秒从硬盘读入到虚拟内存的大小
- bi: 块设备每秒接受的块数量
- bo: 块设备每秒发送的块数量
- in: interrupt, 每秒中断CPU的次数
- cs: context switch,每秒切换上下文的次数
- us: 用户CPU时间,%
- sy: 系统CPU时间
- id: 空闲CPU时间
- wa: 等待IO的CPU时间
4. 查看系统负载
- uptime:
查看系统负载状况
参数:
- -p: pretty format
- -s: since yyyy-mm-dd HH:MM:SS format
代码如下:
[niesh@niesh log]$ uptime 15:42:50 up 14:24, 4 users, load average: 0.00, 0.01, 0.05
Linux中有一个通俗的说法:当load avarage ❤️ 系统良好,大于5 可能有严重的性能问题
5. 进程
- rpm -qa:
查看系统中所有安装的软件- ps:
列出系统中运行的进程
参数:
由于 ps 能够支持的系统类型相当的多,所以他的参数多的离谱!
而且有没有加上 - 差很多!详细的用法应该要参考 man ps!
- -A: 所有的进程均显示出来,与 -e 具有同样的效用
- -a: 显示现行终端机下的所有进程,包括其他用户的进程
- -u: 以用户为主的进程状态
- -l: 较长、较详细的将该 PID 的的信息列出
- -j: 工作的格式 (jobs format)
- -e: 同
-A
- -f: 做一个更为完整的输出
- kill [option][arugument]:
option
-u:指定用户
-a:当处理当前进程时,不限制命令名和进程号的对应关系
-p:指定kill 命令只打印相关进程的进程号,而不发送任何信号
[0-n]: 0表重启,9表强制关闭,15正常关闭(默认值)
argument: 进程的PID
- job
- ps:
代码如下:
[niesh@niesh ~]$ ps aux USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.4 191616 6796 ? Ss 01:18 0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 21 root 2 0.0 0.0 0 0 ? S 01:18 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S 01:18 0:00 [ksoftirqd/0] root 7 0.0 0.0 0 0 ? S 01:18 0:00 [migration/0] root 8 0.0 0.0 0 0 ? S 01:18 0:00 [rcu_bh]
- USER:该进程属于那个使用者账号
- PID :该进程的进程ID号
- %CPU:该进程使用掉的 CPU 资源百分比
- %MEM:该进程所占用的物理内存百分比
- VSZ :该进程使用掉的虚拟内存量 (Kbytes)
- RSS :该进程占用的固定的内存量 (Kbytes)
- TTY :该进程是在那个终端机上面运作,若与终端机无关,则显示 ?,另外, tty1-tty6 是本机上面的登入者程序,pts/n表示为由网络连接进主机的程序
- STAT:该程序目前的状态,主要的状态有:
R :该程序目前正在运作,或者是可被运作
S :该程序目前正在睡眠当中但可被某些讯号(signal) 唤醒
T :该程序目前正在侦测或者是停止了
Z :该程序应该已经终止,但是其父程序却无法正常的终止他,造成 zombie (疆尸) 程序的状态
- START:该进程被触发启动的时间;
- TIME :该进程实际使用 CPU 运作的时间。
- COMMAND:该程序的实际指令为什么?
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· 用 C# 插值字符串处理器写一个 sscanf
· Java 中堆内存和栈内存上的数据分布和特点
· 开发中对象命名的一点思考
· .NET Core内存结构体系(Windows环境)底层原理浅谈
· 为什么说在企业级应用开发中,后端往往是效率杀手?
· DeepSeek 解答了困扰我五年的技术问题。时代确实变了!
· 本地部署DeepSeek后,没有好看的交互界面怎么行!
· 趁着过年的时候手搓了一个低代码框架
· 推荐一个DeepSeek 大模型的免费 API 项目!兼容OpenAI接口!