top资源管理器

好比windows的任务管理器

top命令

用于实时监控系统处理器状态,以及其他硬件负载信息还有动态的进程信息等等,还有按照排名,先后显示某个进程CPU,内存的使用情况排名

top交互命令

z指令打开、关闭颜色

x指令某一列高亮

b指令某一列加粗

<>大于小于号左右移动


1
2
3
4
5
6
7
8
 [root@localhost ~]# top
top - 09:16:03 up 2 min, 1 user, load average: 0.03, 0.05, 0.03
Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.6 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1862996 total, 1524408 free, 198404 used, 140184 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1514864 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND

之前介绍过的就不再重复

  • 09:16:03 up
    • 当前的系统时间,date命令查询时间
  • 2 min
    • 当前系统运行了多久
  • 1 user
    • 当前正在使用机器的用户数
  • load average: 0.03
    • 显示系统的平均负载情况,分别1分钟5分钟15分钟显示的平均值(值越小、系统负载越低)
  • Tasks: 130 total, 1 running, 129 sleeping, 0 stopped, 0 zombie
    • 总任务数、正在运行数、休眠任务数、停止任务数、僵尸进程数
  • %Cpu(s): 0.0 us, 0.6 sy, 0.0 ni, 99.4 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
    • CPU使用百分比情况,
    • us:用户占用CPU百分比情况、
    • sy:系统内核空间占用CPU百分比、
    • ni:用户进程空间占用的CPU百分比、
    • id:空间的CPU百分比情况、
    • wa等待输入输出的CPU百分比
  • KiB Mem : 1862996 total, 1524408 free, 198404 used, 140184 buff/cache
    • 内存状态:总内存空间、空闲内存总量、已使用内存量、缓存使用量情况
  • KiB Swap: 2097148 total, 2097148 free, 0 used. 1514864 avail Mem
    • 交换空间状态
  • USER
  • PR:进程优先级高低
  • NI:nice值,值越高优先级越高
  • VIRT:进程使用的虚拟内存总量、VIRT=swap +RES
  • RES:进程使用的物理内存大小
  • SHR:共享内存大小,单位是kb
  • S:表示进程的状态

top实际使用

显示进程的绝对路径

1
top -c

执行演示

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# top -c
top - 10:16:05 up 1:02, 1 user, load average: 0.01, 0.03, 0.05
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.2 sy, 0.0 ni, 99.8 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1862996 total, 1522684 free, 199488 used, 140824 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1513444 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1568 root 20 0 158988 5820 4412 S 0.3 0.3 0:04.16 sshd: root@pts/0
5025 root 20 0 0 0 0 S 0.3 0.0 0:01.24 [kworker/0:2]
15431 root 20 0 162116 2352 1680 R 0.3 0.1 0:01.57 top -c
1 root 20 0 128008 6628 4160 S 0.0 0.4 0:01.77 /usr/lib/systemd/syste+
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 [kthreadd]
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 [kworker/0:0H]
...

设置top进程刷新的时间

1
top -d <second>

执行演示

1
2
3
4
5
6
7
8
9
10
11
12
13
[root@localhost ~]# top -d 5
top - 10:22:26 up 1:09, 1 user, load average: 0.01, 0.02, 0.05
Tasks: 126 total, 1 running, 125 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.0 us, 0.0 sy, 0.0 ni,100.0 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 1862996 total, 1522828 free, 199320 used, 140848 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1513600 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128008 6628 4160 S 0.0 0.4 0:01.80 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.01 kthreadd
4 root 0 -20 0 0 0 S 0.0 0.0 0:00.00 kworker/0:0H
6 root 20 0 0 0 0 S 0.0 0.0 0:00.04 ksoftirqd/0
...

指定查看一个进程信息

1
top -p <pid>

执行演示

1
2
3
4
5
6
7
8
9
[root@localhost ~]# top -p 1
top - 10:24:02 up 1:10, 1 user, load average: 0.00, 0.01, 0.05
Tasks: 1 total, 0 running, 1 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.1 us, 0.4 sy, 0.0 ni, 99.3 id, 0.1 wa, 0.0 hi, 0.1 si, 0.0 st
KiB Mem : 1862996 total, 1522624 free, 199512 used, 140860 buff/cache
KiB Swap: 2097148 total, 2097148 free, 0 used. 1513400 avail Mem

PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 128008 6628 4160 S 0.0 0.4 0:01.81 systemd

参数

详情参见 top参数

1
2
3
4
5
6
7
8
9
10
-b:以批处理模式操作;
-c:显示完整的治命令;
-d:屏幕刷新间隔时间;
-I:忽略失效过程;
-s:保密模式;
-S:累积模式;
-i<时间>:设置间隔时间;
-u<用户名>:指定用户名;
-p<进程号>:指定进程;
-n<次数>:循环显示的次数。

nohup后台运行

nohup命令,希望程序在后台运行,输出的结果不打印到终端,不占用终端,不影响其它操作进行。

无论是否将nohup命令的输出定向到终端,nohup命令执行的输出结果都会写入当前目录nohup.out文件。

若当前目录nohup.out文件被禁止写入,nohup命令结果会自动输出到$HOME/nohup.out文件。

nohup实践

ping baidu.com为例

用法一

输入nohup执行后需要重新开启会谈才能执行其它操作,一般不会这么用哈

1
nohup <command>

执行演示

1
nohup ping baidu.com
1
2
3
4
[root@localhost ~]# nohup ping baidu.com
nohup: 忽略输入并把输出追加到"nohup.out"


虽然能够实现后台运行,但这么使用并不方便,执行完后还是不能进行其它操作。

1
2
3
4
[root@localhost ~]# ps aux |grep ping
root 39133 0.0 0.1 150088 2008 pts/0 S+ 10:57 0:00 ping baidu.com
root 50300 0.0 0.1 150088 2008 pts/1 S 11:27 0:00 ping baidu.com
您在 /var/spool/mail/root 中有新邮件

用法二

不需要退出当前会谈以执行其它操作

1
nohup <command> &

执行演示

1
nohup ping baidu.com &
1
2
3
4
5
6
7
8
[root@localhost ~]# nohup ping baidu.com &
[1] 50300
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# nohup: 忽略输入并把输出追加到"nohup.out"

[root@localhost ~]#
[root@localhost ~]#

回车一下,我们可以进行其它操作,并且ping命令在后台正常执行。

1
2
3
4
5
[root@localhost ~]# ps aux |grep ping
root 39133 0.0 0.1 150088 2008 pts/0 S+ 10:57 0:00 ping baidu.com
root 50300 0.0 0.1 150088 2008 pts/1 S 11:27 0:00 ping baidu.com
root 50712 0.0 0.0 112824 988 pts/1 S+ 11:28 0:00 grep --color=auto ping
您在 /var/spool/mail/root 中有新邮件

用法三

不显示命令执行结果,并重定向到黑洞文件

这里补充一些关于黑洞文件的知识

请参阅Tinywan大佬的文章:

Shell脚本———— /dev/null 2>&1详解

  • 1 为标准错误输出(第一个尖括号一般可以省略不写1)
  • 2 为标准输出
  • &1 表示与处理1的方式相同来处理2

重新定向输出结果到指定文件

1
2
3
nohup <command> 1> targetfile 2> targetfile &
#简写
nohup <command> > targetfile 2>&1 &

执行演示

1
2
3
4
[root@localhost ~]# nohup ping baidu.com > targetfile 2>&1 &
[4] 73284
[root@localhost ~]# nohup ping baidu.com 1> targetfile 2> targetfile &
[5] 73375

我们可以在targetfile中看到输出结果。

完全不保留结果的写法

1
2
3
4
5
nohup <command> 1>/dev/null 2>/dev/null &
#简写
nohup <command> >/dev/null 2>&1 &
#最简
nohup <command> &>/dev/null

执行演示

1
2
3
4
5
6
[root@localhost ~]# nohup ping baidu.com 1>/dev/null 2>/dev/null &
[2] 58900
您在 /var/spool/mail/root 中有新邮件
[root@localhost ~]# nohup ping baidu.com 1>/dev/null 2>&1 &
[3] 59489
您在 /var/spool/mail/root 中有新邮件

我们发现执行后,会返回一个PID:58900

59489

bg后台运行

类似nohup命令

将进程放入后台运行,使得前台运行其它命令

1
bg命令等同与 <command> &

回顾一下,快捷键的作用

CTRL+Z


我们输入

1
ping baidu.com

然后执行快捷键

jobs命令

可以检查暂停放入后台的进程

语法

1
jobs
1
2
[root@localhost ~]# jobs
[6]+ 已停止 ping baidu.com

fg命令

将后台作业移动到前台终端运行

  • 用于将后台作业(在后台运行的或者在后台挂起的作业)放到前台终端运行。
  • 若后台任务中只有一个,则使用该命令时可以省略任务号。

语法

1
fg [job_spec ...]

参数

job_spec(可选):指定要移动到前台执行的作业标识符,可以是一到多个。

执行演示

1
2
3
4
5
6
[root@localhost ~]# jobs
[6]+ 已停止 ping baidu.com
[root@localhost ~]# fg 6
ping baidu.com
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=2 ttl=128 time=49.3 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=3 ttl=128 time=48.4 ms

bg命令

将前台终端作业移动到后台运行,但是输出的结果会在前台打印,不影响其它操作

  • 用于将作业放到后台运行,使前台可以执行其他任务。该命令的运行效果与在指令后面添加符号&的效果是相同的,都是将其放到系统后台执行。
  • 若后台任务中只有一个,则使用该命令时可以省略任务号。

语法

1
bg [job_spec ...]

参数

job_spec(可选):指定要移动到后台执行的作业标识符,可以是一到多个。

执行演示

可以使用fg命令将进程移到前台再ctrl+z暂停

1
2
3
4
5
6
7
8
9
[root@localhost ~]# ping baidu.com
PING baidu.com (110.242.68.66) 56(84) bytes of data.
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=1 ttl=128 time=48.8 ms
bg 1
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=6 ttl=128 time=48.2 ms
64 bytes from 110.242.68.66 (110.242.68.66): icmp_seq=7 ttl=128 time=48.2 ms
^Z
[2]+ 已停止 ping baidu.com
[root@localhost ~]#

linux系统运行级别

常见级别

  • 0 关机
  • 1 单用户模式
  • 2 多用户模式,无网络模式
  • 3 完全多用户模式,有网模式
  • 4 用户自定义级别
  • 5 图形化界面多用户模式
  • 6 重启机器

查看当前系统运行级别

runlevel命令

1
2
[root@localhost ~]# runlevel
N 3

查看/var/run/utmp文件

1
2
[root@localhost ~]# cat /var/run/utmp
3~~~runlevel3.10.0-1160.71.1.el7.x86_64▒n▒b�▒tty1tty1LOGIN▒▒n▒bڰ(pts/0ts/0root192.168.41.1▒n▒b▒▒▒o▒pts/1ts/1▒▒▒b]▒)

init命令

init进程是所有Linux进程的父进程,进程号为1。

init是linux进程的初始化工具。

init命令是Linux操作系统中不可缺少的程序之一,init进程是Linux内核引导运行的,是系统中的第一个进程

作用

可以使用init加上级别,直接操作系统运行级别

1
init 6 #直接重启机器了

执行演示

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# init 6

Remote side unexpectedly closed network connection

qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq

Session stopped
- Press <return> to exit tab
- Press R to restart session
- Press S to save terminal output to file

htop命令检测

相当于linux的任务管理器,非内部命令,需要另外安装。

与top的区别就是,它更好看xD

安装htop

1
yum install htop -y

使用htop

进入htop

1
htop

设置界面

F2

可以使用上下左右小键盘,空格回车进行操作。

image-20220805133333609

进程查找

F3

杀死进程

建议结合F3使用,F9杀死,且输入ENTER回车,给进程发送终止信号。

显示层级关系

F5

image-20220805133609123

支持一些快捷键

输入大写

  • M,会以MEM%大小排序
  • PCPU使用量排序
  • T进程运行时间排序
  • /进入搜索模式,查找指定进程

glances工具

系统资源检测工具,类似top、htop

glances工具由python语言编写,使用psutil模块来采集系统的硬件资源等等。

glances可以为unix和linux系统提供专家级别的新能检测。

  • cpu使用率
  • 内存使用情况
  • 内核统计信息
  • 磁盘io转速
  • 文件系统的剩余空间
  • 网络io速度
  • 缓存空间的使用情况 swap空间
  • 动态进程信息
  • 系统负载信息

glances还能将采集的数据输出到一个文件中,便于数据分析人员对服务器性能报表进行分析以及图标绘制。

安装方法

使用python的安装工具pip

安装python3

1
yum install python3 -y

安装glances工具

1
pip3 install glances

直接使用yum安装

1
yum install glances -y

使用

相关介绍

image-20220805135612083

帮助界面

输入h,进入帮助界面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
Glances 2.5.1 with PSutil 5.6.7

Configuration file: None

a Sort processes automatically b Bytes or bits for network I/O
c Sort processes by CPU% l Show/hide alert logs
m Sort processes by MEM% w Delete warning alerts
u Sort processes by USER x Delete warning and critical alerts
p Sort processes by name 1 Global CPU or per-CPU stats
i Sort processes by I/O rate I Show/hide IP module
t Sort processes by TIME D Enable/disable Docker stats
d Show/hide disk I/O stats T View network I/O as combination
f Show/hide filesystem stats U View cumulative network I/O
n Show/hide network stats F Show filesystem free space
s Show/hide sensors stats g Generate graphs for current history
2 Show/hide left sidebar r Reset history
z Enable/disable processes stats h Show/hide this help screen
3 Enable/disable quick look plugin q Quit (Esc and Ctrl-C also work)
e Enable/disable top extended stats
/ Enable/disable short processes name
0 Enable/disable Irix process CPU

ENTER: Edit the process filter pattern
1
2
3
4
5
6
7
8
9
10
11
12
h : 显示帮助信息
q : 离开程序退出
c :按照 CPU 实时负载对系统进程进行排序
m :按照内存使用状况对系统进程排序
i:按照 I/O 使用状况对系统进程排序
p: 按照进程名称排序
d : 显示磁盘读写状况
w : 删除日志文件
l :显示日志
s: 显示传感器信息
f : 显示系统信息
1 :轮流显示每个 CPU 内核的使用情况(次选项仅仅使用在多核 CPU 系统)

参数

glances 是一个命令行工具包括如下命令选项

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
-b:显示网络连接速度 Byte/ 秒
-B @IP|host :绑定服务器端 IP 地址或者主机名称
-c @IP|host:连接 glances 服务器端
-C file:设置配置文件默认是 /etc/glances/glances.conf
-d:关闭磁盘 I/O 模块
-e:显示传感器温度
-f file:设置输出文件(格式是 HTML 或者 CSV)
-m:关闭挂载的磁盘模块
-n:关闭网络模块
-p PORT:设置运行端口默认是 61209
-P password:设置客户端 / 服务器密码
-s:设置 glances 运行模式为服务器
-t sec:设置屏幕刷新的时间间隔,单位为秒,默认值为 2 秒,数值许可范围:1~32767
-h : 显示帮助信息
-v : 显示版本信息

glances开启web服务功能

安装相关web工具包

1
pip install bottle

启动服务(注意关闭防火墙或者开放61208端口,不然网页打不开)

1
2
[root@localhost ~]# glances -w
Glances web server started on http://0.0.0.0:61208/

其中的0.0.0.0表示绑定到机器上的所有网卡上!

image-20220805142205042

glances支持C-S模式

一台机器运行服务端,一台机器运行客户端

具体参数请使用man glances查询

开启服务端

1
glances -s -B <ip> -p <port>

客户端连接

1
glances -c <ip>:<port>