常用命令
# df
命令
df:列出文件系统的整体磁盘使用量;
语法:
df [-ahikHTm] [目录或文件名]
选项说明:
- -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 /]#
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
# ps
命令
ps (英文全拼:process status)命令用于显示当前进程的状态,类似于 windows 的任务管理器。
# 语法:
ps [options] [--help]
参数: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 进程关键字
# 查看nodejs应用进程
ps -ef | grep node
# 查看docker应用进程
ps -aux | grep docker
# 查看端口占用情况
netstat -tunlp|grep 8090
2
3
4
5
6
# netstat
命令
netstat 命令用于显示网络状态。利用 netstat 指令可让你得知整个 Linux 系统的网络情况。
# 语法:
netstat [-acCeFghilMnNoprstuvVwx][-A<网络类型>][--ip]
参数说明:
- -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
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
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 ] ]
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
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
2
优点:
- 功能强大,使用方便,
缺点:
- 体系庞大
- 非常复杂
事实上,现在还有很多人反对使用 Systemd,理由就是它过于复杂,与操作系统的其他部分强耦合。
相关信息
Systemd 并不是一个命令,而是一组命令,涉及到系统管理的方方面面。
- hostnamectl用于管理当前主机设置。
- localectl用于管理本地化设置。
- timedatectl用于管理当前时区设置。
# systemctl
命令
systemctl
是 Systemd 的主命令,用于管理系统。
# 语法:
systemctl [start | stop |restart |reload |stauts] 服务名
#查看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
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
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...]
参数:
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 # 验证日志文件的一致性
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
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...
参数:
- 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 *
2
3
4
5
6
7
8
# free命令
free指令会显示内存的使用情况,包括实体内存,虚拟的交换文件内存,共享内存区段,以及系统核心使用的缓冲区等。
语法:
free [-bkmotV][-s <间隔秒数>]
参数说明:
-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
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]
参数说明
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
5q : 没有任何延迟的显示速度,如果使用者是有 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 ~]#
2
3
4
5
6
7
8
9
10
11
12
13
14
运行结果可以分为两部分:
**前5行:**是系统整体的统计信息;
第8行:开始的进程信息,我们从上往下逐行依次进行说明。
# 系统整体的统计信息
第一行:
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:系统负载,即任务队列的平均长度。
第二行:
# 这里running越多,服务器自然压力就越大。 Tasks: 93 total, 1 running, 56 sleeping, 0 stopped, 0 zombie
1
2- Tasks:当前有多少进程
- running:正在运行的进程数
- sleeping:正在休眠的进程数
- stopped:停止的进程数
- 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
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
第四行:
KiB Mem : 2007580 total, 373876 free, 1353652 used, 280052 buff/cache
1- total:交换区内存总量
- free:空闲交换区总量
- used:使用的交换区总量
- buffer/cache:缓冲的交换区总量
第五行:
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
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 ~]#
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
- 查看状态:
systemctl status NetworkManager
- 启动:
systemctl start NetworkManager
- 重启:
systemctl restart NetworkManager
- 关闭:
systemctl stop NetworkManager
- 查看是否开机启动:
systemctl is-enabled NetworkManager
- 开机启动:
systemctl enable NetworkManager
- 禁止开机启动:
systemctl disable NetworkManager
# nmcli networking
# 显示 NetworkManager 是否接管网络设置
nmcli networking # or nmcli n
# 查看网络连接状态
nmcli n connectivity # or nmcli n c
# 开启网络连接
nmcli n on
# 关闭网络连接
nmcli n off
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
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
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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
只有在设备处于连接状态,才可以更新设备。更新设备相当于重启连接。