常用命令

2021-05-02 LINUX 大约 24 分钟

# df命令

df:列出文件系统的整体磁盘使用量;

语法:

df [-ahikHTm] [目录或文件名]
1

选项说明:

  • -a:列出所有的文件系统,包括系统特有的/proc等文件系统。
  • -k:以KBytes的容量显示各文件系统。
  • -m:以MBytes的容量显示各文件系统。
  • -h:以人们交易识别的GBytes、Mbytes、KBytes等格式显示。
  • -H:以M=1000k替换M=1024的进位方式。
  • -T:连同该硬盘分区的文件系统名称也列出。
  • -i:不同磁盘容量,而以inode的数量来显示。
[root@iZbp156pkpio44mis76wmxZ /]# df
Filesystem     1K-blocks    Used Available Use% Mounted on
devtmpfs          991392       0    991392   0% /dev
tmpfs            1003788       0   1003788   0% /dev/shm
tmpfs            1003788     524   1003264   1% /run
tmpfs            1003788       0   1003788   0% /sys/fs/cgroup
/dev/vda1       41152812 8906392  30342712  23% /
tmpfs             200760       0    200760   0% /run/user/0
[root@iZbp156pkpio44mis76wmxZ /]# df -h
Filesystem      Size  Used Avail Use% Mounted on
devtmpfs        969M     0  969M   0% /dev
tmpfs           981M     0  981M   0% /dev/shm
tmpfs           981M  524K  980M   1% /run
tmpfs           981M     0  981M   0% /sys/fs/cgroup
/dev/vda1        40G  8.5G   29G  23% /
tmpfs           197M     0  197M   0% /run/user/0
[root@iZbp156pkpio44mis76wmxZ /]# 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# ps 命令

ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。

# 语法:

ps [options] [--help]
1

参数:ps 的参数非常多, 在此仅列出几个常用的参数并大略介绍含义

  • -A 列出所有的进程

  • -w 显示加宽可以显示较多的资讯

  • -au 显示较详细的资讯

  • -aux 显示所有包含其他使用者的进程

  • au(x) 输出格式 :

    USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
    
    1
    • USER: 行程拥有者
    • PID: pid
    • %CPU: 占用的 CPU 使用率
    • %MEM: 占用的记忆体使用率
    • VSZ: 占用的虚拟记忆体大小
    • RSS: 占用的记忆体大小
    • TTY: 终端的次要装置号码 (minor device number of tty)
    • STAT: 该行程的状态:
      • D: 无法中断的休眠状态 (通常 IO 的进程)
      • R: 正在执行中
      • S: 静止状态
      • T: 暂停执行
      • Z: 不存在但暂时无法消除
      • W: 没有足够的记忆体分页可分配
      • <: 高优先序的行程
      • N: 低优先序的行程
      • L: 有记忆体分页分配并锁在记忆体内 (实时系统或捱A I/O)
    • START: 行程开始时间
    • TIME: 执行的时间
    • COMMAND:所执行的指令

# 查找指定进程

ps -ef | grep 进程关键字
1
# 查看nodejs应用进程
ps -ef | grep node
# 查看docker应用进程
ps -aux | grep docker
# 查看端口占用情况
netstat -tunlp|grep 8090
1
2
3
4
5
6

# netstat命令

netstat 命令用于显示网络状态。利用 netstat 指令可让你得知整个 Linux 系统的网络情况。

# 语法:

netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
1

参数说明

  • -a或--all 显示所有连线中的Socket。
  • -A<网络类型>或--<网络类型> 列出该网络类型连线中的相关地址。
  • -c或--continuous 持续列出网络状态。
  • -C或--cache 显示路由器配置的快取信息。
  • -e或--extend 显示网络其他相关信息。
  • -F或--fib 显示路由缓存。
  • -g或--groups 显示多重广播功能群组组员名单。
  • -h或--help 在线帮助。
  • -i或--interfaces 显示网络界面信息表单。
  • -l或--listening 显示监控中的服务器的Socket(仅显示监听套接字(所谓套接字就是使应用程序能够读bai写与收发通讯协议(protocol)与资料的程序))。
  • -M或--masquerade 显示伪装的网络连线。
  • -n或--numeric 直接使用IP地址,而不通过域名服务器。
  • -N或--netlink或--symbolic 显示网络硬件外围设备的符号连接名称。
  • -o或--timers 显示计时器。
  • -p或--programs 显示正在使用Socket的程序识别码和程序名称(每一个套接字/端口都属于一个程序)。
  • -r或--route 显示Routing Table。
  • -s或--statistics 显示网络工作信息统计表。
  • -t或--tcp 显示TCP传输协议的连线状况(指明显示TCP端口)。
  • -u或--udp 显示UDP传输协议的连线状况(指明显示UDP端口)。
  • -v或--verbose 显示指令执行过程。
  • -V或--version 显示版本信息。
  • -w或--raw 显示RAW传输协议的连线状况。
  • -x或--unix 此参数的效果和指定"-A unix"参数相同。
  • --ip或--inet 此参数的效果和指定"-A inet"参数相同。

相关信息

于grep结合可查看某个具体端口及服务情况:

# 查看当前所有tcp端口·
netstat -ntlp 
# 查看所有80端口使用情况·
netstat -ntulp |grep 80
# 查看所有3306端口使用情况·
netstat -an | grep 3306
1
2
3
4
5
6

# systemctl命令

# init命令

历史上,Linux 的启动一直采用init进程。在类Unix 的计算机操作系统中,Init(初始化的简称)是在计算机启动的第一个进程。Init 是一个守护进程,它持续运行,直到系统关闭。它是所有其他进程的直接或间接的父进程。

# 因为 init 的参数全在`/etc/init.d`目录下,所以使用 init 启动一个服务,应该这样做:
$ sudo /etc/init.d/nginx start

# 下面的命令用来启动服务。
$ sudo /etc/init.d/apache2 start

# 或者
$ service apache2 start
1
2
3
4
5
6
7
8

这种方法有两个缺点:

  • 一是启动时间长。init 进程是串行启动,只有前一个进程启动完,才会启动下一个进程。
  • 二是启动脚本复杂。init 进程只是执行启动脚本,不管其他事情。脚本需要自己处理各种情况,这往往使得脚本变得很长

# service命令

service是一个运行System V init的脚本命令。它以启动、停止、重新启动和关闭系统服务,还可以显示所有系统服务的当前状态。

# 语法:

# command:  [start | stop |restart |reload |stauts]
service < option > | --status-all | [ service_name [ command | --full-restart ] ]
1
2

# 示例:

# 查看帮助信息;
[root@iZbp156pkpio44mis76wmxZ /]# service -h
Usage: service < option > | --status-all | [ service_name [ command | --full-restart ] ]
# 查看nginx服务状态
[root@iZbp156pkpio44mis76wmxZ /]# service nginx status
Redirecting to /bin/systemctl status nginx.service
● nginx.service - nginx - high performance web server
   Loaded: loaded (/usr/lib/systemd/system/nginx.service; disabled; vendor preset: disabled)
   Active: active (running) since Tue 2021-04-20 21:49:30 CST; 1 day 1h ago
     Docs: http://nginx.org/en/docs/
  Process: 17599 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS)
 Main PID: 17600 (nginx)
   CGroup: /system.slice/nginx.service
           ├─17600 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
           └─17602 nginx: worker process

Apr 20 21:49:30 iZbp156pkpio44mis76wmxZ systemd[1]: Starting nginx - high performance web server...
Apr 20 21:49:30 iZbp156pkpio44mis76wmxZ systemd[1]: Can't open PID file /var/run/nginx.pid (yet?) after start: No such file or directory
Apr 20 21:49:30 iZbp156pkpio44mis76wmxZ systemd[1]: Started nginx - high performance web server.
[root@iZbp156pkpio44mis76wmxZ /]#

# 使用 service 启动/重启/停止网络服务
[root@iZbp156pkpio44mis76wmxZ /]# service network restart
Restarting network (via systemctl):                        [  OK  ]
[root@iZbp156pkpio44mis76wmxZ /]# service network start
Starting network (via systemctl):                          [  OK  ]
[root@iZbp156pkpio44mis76wmxZ /]# service network stop
Stopping network (via systemctl):  Connection reset by 47.114.139.71 port 22
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28

相关信息

可以理解成 service 就是init.d 的一种实现方式。所以与 init 并没有什么区别。

  • System V init 是/etc/init.d 目录下的参数。
  • service命令 是去/etc/init.d目录下执行相关程序,服务配置文件的存放目录就是/etc/init.d
  • 在contos7.x中已经用systemctl来代替service,所以不建议使用service

::

注意

service network stop 后,网络服务停止,网卡关闭,ssh登录不上。

两种方式解决:

  • 重启服务器,
  • 操作台进入系统,执行service network start开启网络服务。

# systemd命令

Systemd 就是为了解决上面问题而诞生的。它的设计目标是,为系统的启动和管理提供一套完整的解决方案。根据 Linux 惯例,字母 d 是守护进程(daemon)的缩写。 Systemd 这个名字的含义,就是它要守护整个系统。使用了 Systemd,就不需要再用 init 了。Systemd 取代了 initd,成为系统的第一个进程(PID 等于 1),其他进程都是它的子进程。systemd是Linux系统最新的初始化系统(init),作用是提高系统的启动速度,尽可能启动较少的进程,尽可能更多进程并发启动。

 # 查看 Systemd 的版本。
 systemctl --version
1
2

优点:

  • 功能强大,使用方便,

缺点:

  • 体系庞大
  • 非常复杂

事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合。

相关信息

Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。

  • hostnamectl用于管理当前主机设置。
  • localectl用于管理本地化设置。
  • timedatectl用于管理当前时区设置。

# systemctl命令

systemctl是 Systemd 的主命令,用于管理系统。

# 语法:

systemctl  [start | stop |restart |reload |stauts] 服务名
1
#查看nginx状态
systemctl status nginx

#启动nginx
systemctl start nginx

#关闭nginx
systemctl stop nginx

#重启nginx
systemctl restart nginx

# 重启系统
$ sudo systemctl reboot

# 关闭系统,切断电源
$ sudo systemctl poweroff

# CPU停止工作
$ sudo systemctl halt

# 暂停系统
$ sudo systemctl suspend

# 让系统进入冬眠状态
$ sudo systemctl hibernate

# 让系统进入交互式休眠状态
$ sudo systemctl hybrid-sleep

# 启动进入救援状态(单用户状态)
$ sudo systemctl rescue
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32

# 兼容service命令

systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看,执行相关程序

systemctl redis start
systemctl redis stop
# 开机自启动
systemctl enable redis
1
2
3
4

# service与systemctl命令区别

  • systemctl基本上是的更强大的版本service
  • 从CentOS 7.x开始,CentOS开始使用systemd服务来代替daemon,原来管理系统启动和管理系统服务的相关命令全部由systemctl命令来代替。
  • 在contos7.x中已经用systemctl来代替service,所以不建议使用service
  • systemctl命令兼容了service,即systemctl也会去/etc/init.d目录下,查看,执行相关程序 。

# systemctl启动服务的几种状态

  • loaded:系统服务已经初始化完成,加载过配置
  • active(running):正有一个或多个程序正在系统中执行, vsftpd就是这种模式
  • atcive(exited):仅执行一次就正常结束的服务, 目前并沒有任何程序在系統中执行
  • atcive(waiting):正在执行当中,不过还在等待其他的事件才能继续处理
  • inactive:服务关闭
  • enbaled:服务开机启动
  • disabled:服务开机不自启
  • static:服务开机启动项不可被管理
  • failed:系统配置错误

相关信息

active(exited):在操作系统中,有某些服务只需要初始化一下就可以了;不需要在服务器中启动一个守护进程。这种服务初始化完成后就直接退出,其服务的状态就是active(exited)。

# journalctl命令

journalctl 用来查询 systemd-journald 服务收集到的日志。systemd-journald 服务是 systemd init 系统提供的收集系统日志的服务。

语法:

journalctl [OPTIONS...] [MATCHES...]
1

参数:

Flags:
     --system               # 显示系统日志
     --user                 # 显示当前用户的用户日志
  -M --machine=CONTAINER  # 在本地容器上操作
  -S --since=DATE         # 显示不早于指定日期的条目
  -U --until=DATE         # 显示不晚于指定日期的条目
  -c --cursor=CURSOR      # 显示从指定光标开始的条目
     --after-cursor=CURSOR # 在指定光标后显示条目
     --show-cursor         # 在所有条目之后打印光标
  -b --boot[=ID]          # 显示当前启动或指定启动
     --list-boots          # 显示有关已记录引导的简洁信息
  -k --dmesg              # 显示当前启动的内核消息日志
  -u --unit=UNIT          # 显示指定单元的日志
  -t --identifier=STRING  # 显示具有指定系统日志标识符的条目
  -p --priority=RANGE     # 显示具有指定优先级的条目
  -e --pager-end          # 在pager中立即跳转到末尾
  -f --follow             # 关注期刊
  -n --lines[=INTEGER]    # 要显示的日志条目数
     --no-tail             # 显示所有行,即使在跟随模式下
  -r --reverse            # 首先显示最新的条目
  -o --output=STRING      # 更改日志输出模式 (short, short-iso,short-precise, short-monotonic, verbose,export, json, json-pretty, json-sse, cat)
     --utc                   # 以协调世界时 (UTC) 表示的时间
  -x --catalog            # 在可用的情况下添加消息说明
     --no-full            # Ellipsize 字段
  -a --all                # 显示所有字段,包括长的和不可打印的
  -q --quiet               # 不显示特权警告
     --no-pager           # 不要将输出通过管道传输到寻呼机
  -m --merge              # 显示所有可用期刊的条目
  -D --directory=PATH     # 显示目录中的日志文件
     --file=PATH          # 显示日志文件
     --root=ROOT          # 对根目录下的目录文件进行操作
     --interval=TIME      # 更改 FSS 密封键的时间间隔
     --verify-key=KEY     # 指定FSS验证密钥
     --force              # 使用 --setup-keys 覆盖 FSS 密钥对 
  
Commands:
  -h --help              # 显示此帮助文本
     --version           # 显示包版本
  -F --field=FIEL  D       # 列出指定字段的所有值
     --new-id128         # 生成新的 128 位 ID
     --disk-usage        # 显示所有日志文件的总磁盘使用情况
     --vacuum-size=BYTES # 将磁盘使用量减少到指定大小以下
     --vacuum-time=TIME  # 删除早于指定日期的日志文件
     --flush             # 将所有日志数据从 /run 刷新到 /var
     --header            # 显示期刊头信息
     --list-catalog      # 显示目录中的所有消息 ID
     --dump-catalog      # 在消息目录中显示条目
     --update-catalog    # 更新消息目录数据库
     --setup-keys        # 生成新的 FSS 密钥对
     --verify            # 验证日志文件的一致性
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50

# 常用命令

# 查看所有日志
journalctl

# 查看系统本次启动的日志
journalctl -b

# 查看jenkins日志
journalctl -u jenkins

# 查看实时日志
journalctl -f

# 查看最后n行
journalctl -n 200

# 立即跳到日志页面结尾处
journalctl -e
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17

# chown命令

chown 命令用于设置文件所有者和文件关联组的命令,利用 chown 将指定文件的拥有者改为指定的用户或组。chown将指定文件的拥有者改为指定的用户或组,用户可以是用户名或者用户ID;组可以是组名或者组ID;文件是以空格分开的要改变权限的文件列表,支持通配符。系统管理员经常使用chown命令,在将文件拷贝到另一个用户的名录下之后,让用户拥有使用该文件的权限。

相关信息

chown 只有文件主和超级用户才可以使用该命令。

语法:

chown [-cfhvR] [--help] [--version] user[:group] file...
1

参数:

  • user : 新的文件拥有者的使用者 ID
  • group : 新的文件拥有者的使用者组(group)
  • -c : 显示更改的部分的信息
  • -f : 忽略错误信息
  • -h : 修复符号链接
  • -v : 显示详细的处理信息
  • -R : 处理指定目录以及其子目录下的所有文件
  • --help : 显示辅助说明
  • --version : 显示版本
# 把 /var/run/httpd.pid 的所有者设置 root:
chown root /var/run/httpd.pid

# 将文件 file1.txt 的拥有者设为 runoob,群体的使用者 runoobgroup
chown runoob:runoobgroup file1.txt

# 将当前前目录下的所有文件与子目录的拥有者皆设为 runoob,群体的使用者 runoobgroup
chown -R runoob:runoobgroup *
1
2
3
4
5
6
7
8

# free命令

free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。

语法:

free [-bkmotV][-s <间隔秒数>]
1

参数说明:

  • -b  以Byte为单位显示内存使用情况。

  • -k  以KB为单位显示内存使用情况。

  • -m  以MB为单位显示内存使用情况。

  • -h  以合适的单位显示内存使用情况,最大为三位数,自动计算对应的单位值。单位有:

    • B = bytes
      K = kilos
      M = megas
      G = gigas
      T = teras
      
      1
      2
      3
      4
      5
  • -o  不显示缓冲区调节列。

  • -t  显示内存总和列。

  • -V  显示版本信息。

  • -s<间隔秒数>  持续观察内存使用状况。

[root@iZbp156pkpio44mis76wmxZ ~]# free
              total        used        free      shared  buff/cache   available
Mem:        2007580     1351384      377840         648      278356      501988
Swap:             0           0           0
[root@iZbp156pkpio44mis76wmxZ ~]# free -h
              total        used        free      shared  buff/cache   available
Mem:           1.9G        1.3G        369M        648K        271M        490M
Swap:            0B          0B          0B
1
2
3
4
5
6
7
8

字段含义:

  • total: 总内存
  • used: 正在运行的进程使用的内存(used= total – free – buff/cache)
  • free: 未使用的内存 (free= total – used – buff/cache)
  • shared: 多个进程共享的内存
  • buffers: 内存保留用于内核操作一个进程队列请求
  • cache: 在 RAM 中保存最近使用的文件的页面缓存的大小
  • buff/cache: Buffers + Cache
  • available: 估计有多少内存可用于启动新应用程序,而无需交换。

free -h 可以更直观的查看内存信息

# top命令

top命令用于实时显示 process 的动态。

# 语法:

top [-] [d delay] [q] [c] [S] [s] [i] [n] [b]
1

参数说明

  • d : 改变显示的更新速度,或是在交谈式指令列( interactive command)按 s

  • p:通过指定PID来仅仅监控某个进程的状态。

    top   每隔3秒显式所有进程的资源占用情况
    top -d 1  每隔1秒显式所有进程的资源占用情况
    top -c    每隔3秒显式进程的资源占用情况,并显示进程的命令行参数(默认只有进程名)
    top -p 28820 -p 38830   每隔3秒显示pid是28820和pid是38830的两个进程的资源占用情况
    top -d 2 -c -p 69358  每隔2秒显示pid是69358的进程的资源使用情况,并显式该进程启动的命令行参数
    
    1
    2
    3
    4
    5
  • q : 没有任何延迟的显示速度,如果使用者是有 superuser 的权限,则 top 将会以最高的优先序执行

  • c : 切换显示模式,共有两种模式,一是只显示执行档的名称,另一种是显示完整的路径与名称

  • S : 累积模式,会将己完成或消失的子进程 ( dead child process ) 的 CPU time 累积起来

  • s : 安全模式,将交谈式指令取消, 避免潜在的危机

  • i : 不显示任何闲置 (idle) 或无用 (zombie) 的进程

  • n : 更新的次数,完成后将会退出 top

  • b : 批次档模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到档案内

[root@iZbp156pkpio44mis76wmxZ ~]# top
top - 13:44:23 up 486 days, 13:59,  1 user,  load average: 0.06, 0.04, 0.01
Tasks:  93 total,   1 running,  56 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 :  2007580 total,   373876 free,  1353652 used,   280052 buff/cache
KiB Swap:        0 total,        0 free,        0 used.   499720 avail Mem 

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                 
27879 root      10 -10  270952  19060   8088 S  6.7  0.9 668:17.69 AliYunDun               
    1 root      20   0   51804   4084   2624 S  0.0  0.2 102:01.52 systemd                 
    2 root      20   0       0      0      0 S  0.0  0.0   0:01.19 kthreadd                 
    3 root       0 -20       0      0      0 I  0.0  0.0   0:00.00 rcu_gp                   
....以下省略。                                                                     
[root@iZbp156pkpio44mis76wmxZ ~]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14

运行结果可以分为两部分:

**前5行:**是系统整体的统计信息;

第8行:开始的进程信息,我们从上往下逐行依次进行说明。

# 系统整体的统计信息

  1. 第一行:

    top - 13:44:23 up 486 days, 13:59,  1 user,  load average: 0.06, 0.04, 0.01
    
    1
    • top:当前时间
    • up:机器运行了多长时间
    • users:当前登录用户数
    • load average:系统负载,即任务队列的平均长度。
  2. 第二行:

    # 这里running越多,服务器自然压力就越大。
    Tasks:  93 total,   1 running,  56 sleeping,   0 stopped,   0 zombie
    
    1
    2
    • Tasks:当前有多少进程
    • running:正在运行的进程数
    • sleeping:正在休眠的进程数
    • stopped:停止的进程数
    • zombie:僵尸进程数
  3. 第三行:

    %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
    
    1
    • us:用户空间占CPU的百分比(像shell程序、各种语言的编译器、各种应用、web服务器和各种桌面应用都算是运行在用户地址空间的进程,这些程序如果不是处于idle状态,那么绝大多数的CPU时间都是运行在用户态)
    • sy: 内核空间占CPU的百分比(所有进程要使用的系统资源都是由Linux内核处理的,对于操作系统的设计来说,消耗在内核态的时间应该是越少越好,在实践中有一类典型的情况会使sy变大,那就是大量的IO操作,因此在调查IO相关的问题时需要着重关注它) ni:用户进程空间改变过优先级(ni是nice的缩写,可以通过nice值调整进程用户态的优先级,这里显示的ni表示调整过nice值的进程消耗掉的CPU时间,如果系统中没有进程被调整过nice值,那么ni就显示为0)
    • id: 空闲CPU占用率
    • wa: 等待输入输出的CPU时间百分比(和CPU的处理速度相比,磁盘IO操作是非常慢的,有很多这样的操作,比如,CPU在启动一个磁盘读写操作后,需要等待磁盘读写操作的结果。在磁盘读写操作完成前,CPU只能处于空闲状态。Linux系统在计算系统平均负载时会把CPU等待IO操作的时间也计算进去,所以在我们看到系统平均负载过高时,可以通过wa来判断系统的性能瓶颈是不是过多的IO操作造成的) hi: 硬中断占用百分比(硬中断是硬盘、网卡等硬件设备发送给CPU的中断消息,当CPU收到中断消息后需要进行适当的处理(消耗CPU时间)。)
    • si:软中断占用百分比(软中断是由程序发出的中断,最终也会执行相应的处理程序,消耗CPU时间)
    • st:steal time
  4. 第四行:

    KiB Mem :  2007580 total,   373876 free,  1353652 used,   280052 buff/cache
    
    1
    • total:交换区内存总量
    • free:空闲交换区总量
    • used:使用的交换区总量
    • buffer/cache:缓冲的交换区总量
  5. 第五行:

    KiB Swap:        0 total,        0 free,        0 used.   499720 avail Mem 
    
    1
    • total:交换区内存总量
    • free:空闲交换区总量
    • used:使用的交换区总量
    • buffer/cache:缓冲的交换区总量

# 进程信息

  PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND                   
27879 root      10 -10  270952  19060   8088 S  6.7  0.9 668:17.69 AliYunDun                 
    1 root      20   0   51804   4084   2624 S  0.0  0.2 102:01.52 systemd                   
    2 root      20   0       0      0      0 S  0.0  0.0   0:01.19 kthreadd                 
1
2
3
4
标题 说明
PID 进程id
USER 进程所有者的用户名
PR 优先级
NI nice值,负值表示高优先级,正值表示低优先级
VIRT 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
RES 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
SHR 共享内存大小,单位kb
S 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程
%CPU 上次更新到现在的CPU时间占用百分比
%MEM 进程使用的物理内存百分比
TIME+ 进程使用的CPU时间总计,单位1/100秒
COMMAND 命令名/命令行

相关信息

第四第五行分别是内存信息和swap信息,所有程序的运行都是在内存中进行的,所以内存的性能对与服务器来说非常重要。不过当内存的free变少的时候,其实我们并不需要太紧张。真正需要看的是Swap中的used信息。Swap分区是由硬盘提供的交换区,当物理内存不够用的时候,操作系统才会把暂时不用的数据放到Swap中。所以当这个数值变高的时候,说明内存是真的不够用了。

# /proc/meminfo命令

"/proc/meminfo"文件是一个虚拟文件,其中包含有关内存使用情况的各种实时信息,实际上是许多其他内存相关工具 (如:free / ps / top) 等的组合显示。它以千字节为单位显示内存统计信息,其中大多数有点难以理解。但是,它包含有关内存使用情况的有用信息。

[root@iZbp156pkpio44mis76wmxZ ~]# cat /proc/meminfo
MemTotal:        2007580 kB	# 总内存
MemFree:          376324 kB	# 空闲内存(MemTotal - MemFree:就是已被用掉的内存)
MemAvailable:     501628 kB	# 可用内存(MemFree + 可回收的内存),系统中有些内存虽然已被使用但是可以回收,比如cache、buffer、slab都有一部分可以回收。
Buffers:           55732 kB	# 给文件的缓冲大小
Cached:           178228 kB	# 高速缓冲存储器
SwapCached:            0 kB	# 被高速缓冲存储用的交换空间的大小
Active:           128424 kB # 活跃使用中的高速缓冲存储器页面文件的大小
Inactive:        1392128 kB # 不经常使用中的高速缓冲存储器页面文件的大小
Active(anon):        868 kB # 活跃的匿名内存(进程中堆上分配的内存,用malloc分配的内存)
Inactive(anon):  1285616 kB # 不活跃的匿名内存
Active(file):     127556 kB # 活跃的file内存
Inactive(file):   106512 kB # 不活跃的file内存
Unevictable:           0 kB # 不能被释放的内存页
Mlocked:               0 kB # mlock系统调用锁定的内存大小
SwapTotal:             0 kB	# 交换空间总大小
SwapFree:              0 kB # 空闲交换空间
Dirty:                44 kB # 等待被写回到磁盘的大小
Writeback:             0 kB # 正在被写回的大小
AnonPages:       1282784 kB # 未映射页的大小
Mapped:            73436 kB # 设备和文件映射的大小
Shmem:               648 kB # 已经被分配的共享内存大小
Slab:              69572 kB # 内核数据结构缓存大小
SReclaimable:      45552 kB # 可收回slab的大小
SUnreclaim:        24020 kB # 不可收回slab的大小
KernelStack:        4764 kB # kernel消耗的内存
PageTables:         8576 kB # 管理内存分页的索引表的大小
NFS_Unstable:          0 kB # 不稳定页表的大小
Bounce:                0 kB # 在低端内存中分配一个临时buffer作为跳转,把位于高端内存的缓存数据复制到此处消耗的内存
WritebackTmp:          0 kB # USE用于临时写回缓冲区的内存
CommitLimit:     1003788 kB # 系统实际可分配内存总量
Committed_AS:    2429424 kB # 当前已分配的内存总量
VmallocTotal:   34359738367 kB # 虚拟内存大小
VmallocUsed:           0 kB # 已经被使用的虚拟内存大小
VmallocChunk:          0 kB #  malloc可分配的最大的逻辑连续的内存大小
Percpu:              768 kB
HardwareCorrupted:     0 kB
AnonHugePages:   1028096 kB
ShmemHugePages:        0 kB
ShmemPmdMapped:        0 kB
CmaTotal:              0 kB # 总的连续可用内存
CmaFree:               0 kB # 空闲的连续内存
HugePages_Total:       0
HugePages_Free:        0
HugePages_Rsvd:        0
HugePages_Surp:        0
Hugepagesize:       2048 kB
Hugetlb:               0 kB
DirectMap4k:      415544 kB
DirectMap2M:     1681408 kB
DirectMap1G:           0 kB
[root@iZbp156pkpio44mis76wmxZ ~]#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52

# nmcli 命令

nmcli 是 NetworkManager 的提供的命令,使用 nmcli 命令时,必须确保 NetworkManager 为运行状态。(nm 代表 NetworkManager,cli 代表 Command-Line 命令行。)nmcli 四类常用命令:n、g、c、d[官方文档](nmcli: 网络管理器参考手册 (gnome.org) (opens new window))

# NetworkManager

  1. 查看状态:systemctl status NetworkManager
  2. 启动:systemctl start NetworkManager
  3. 重启:systemctl restart NetworkManager
  4. 关闭:systemctl stop NetworkManager
  5. 查看是否开机启动:systemctl is-enabled NetworkManager
  6. 开机启动:systemctl enable NetworkManager
  7. 禁止开机启动:systemctl disable NetworkManager

# nmcli networking

# 显示 NetworkManager 是否接管网络设置
nmcli networking  # or nmcli n

# 查看网络连接状态
nmcli n connectivity # or nmcli n c

# 开启网络连接
nmcli n on

# 关闭网络连接
nmcli n off
1
2
3
4
5
6
7
8
9
10
11

网络连接状态共有五种:full、limited(连网,但无法上网)、portal(连网,但需要认证登录后才能上网)、none(没连网)和 unknown。

# nmcli general

# 显示系统网络状态 (status 是 general 的默认项,可以省略不写)
nmcli general status # or nmcli g

# 显示主机名
nmcli g hostname # 或 nmcli g h

# 更改主机名
nmcli g hostname newHostName # 或 nmcli g h newHostName
1
2
3
4
5
6
7
8

主机名存放在 /etc/hostname 文件中。

修改主机名后,需要重启 NetworkManager

# nmcli connection

# 显示所有网络连接的信息 (show 是 connection 的默认项,可以省略不写)
nmcli connection show # or nmcli c

# 添加以太网网络接口(接口名称、接口类型、网卡名称)
nmcli connection add con-name <接口名称> type <接口类型|ethernet> ifname <网卡名称>

# 激活创建的连接;使用 nmcli connection show 查看创建的名称
nmcli connection up <名称>

# 创建wifi连接
nmcli device wifi connect <WiFi名称|ssid> password <wifi密码>

# 删除wifi连接
nmcli con del <ssid>

# 显示当前启动的连接
nmcli c s --active  # 或
nmcli c s -a        # 因为 show 后面有参数项,所以此时的 show 不能省

# 显示某一特定连接的详细信息
nmcli c s ens33

# 启动指定连接 (如果 ens33 本来就出于连接状态,那此命令会重启 ens33。)
nmcli c up ens33

# 关闭指定连接:(关闭连接后,执行 nmcli c 命令, DEVICE 项将显示为 -- )
nmcli c down ens33
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27

新的连接创建成功后,会在 /etc/sysconfig/network-scripts/ 文件夹下自动创建一个配置文件;

# nmcli device

# 显示所有网络接口设备的状态
nmcli device status # or nmcli d

# 显示所有设备的详细信息
nmcli d show  # 或
nmcli d sh    # show 不可简写为 s,否则与 status 冲突,但可以简写为 sh

# 显示某一特定设备的详细信息
nmcli d sh ens33

# 连接设备
nmcli d connect ens33  # 或 nmcli d c ens33  

# 断开设备
nmcli d disconnect ens33  # 或 nmcli d d ens33  

# 更新设备信息
nmcli d reapply ens33  # 或 nmcli d r ens33 

# 查看wifi列表
nmcli device wifi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21

只有在设备处于连接状态,才可以更新设备。更新设备相当于重启连接。

上次编辑于: 2023年7月4日 09:36