前言
本人是互联网新人,自己整理了一些工作中经常用到的Linux常用命令;一是为了让自己更加清晰认识,再一个希望能帮助到大家和未来的新人;编辑实属不易,轻喷,都是一字字打出来的;后续会慢慢调整编写模式;
提示:以下是本篇文章正文内容,下面案例可供参考;只摘要部分命令选项,如需深入了解,可自行百度或AI查询;
linux系统常见及常用命令(超详细:系统篇)-CSDN博客
linux系统常见及常用的命令操作(包管理、文件和目录操作)-CSDN博客
一、进程管理:
1. ps:显示当前进程的快照(一般与grep搭配使用)
用于显示当前系统中的进程信息。它提供了有关进程的详细信息,包括进程的状态、资源使用情况以及其他关键信息。ps
命令非常重要,因为它允许你查看系统上正在运行的进程,从而帮助你进行系统监控、故障排除和性能调优;
- 格式: ps [选项]
- 常见选项:
- -e:或 -A:显示系统中所有的进程
- -a:显示所有终端的进程,但不包括会话领导进程
- -u:以用户为基础显示进程
- -x:显示所有进程,包括那些没有控制终端的进程(通常是后台进程)
- -f:显示完整格式的输出,提供更多的进程信息
- -l:显示长格式的输出,提供更详细的信息
- -o:自定义输出格式,允许你选择显示的字段
- -p:显示指定进程 ID 的信息
# ps 命令的输出包含多个字段,具体内容可能会因使用的选项而异。以下是一些常见字段的解释 1. PID:进程 ID。每个进程在系统中都有一个唯一的标识符。 2. TTY:进程关联的终端。对于后台进程,通常显示为 ?。 3. TIME:进程使用的 CPU 时间。 4. CMD:启动进程的命令。 5. USER:进程的所有者用户名。 6. STAT:进程状态,常见的状态包括: R:运行中(Running) S:休眠中(Sleeping) D:不可中断的休眠(Uninterruptible Sleep) Z:僵尸状态(Zombie) T:跟踪(Tracing) 7. %CPU:进程使用的 CPU 百分比。 8. %MEM:进程使用的内存百分比。 9. START:进程启动的时间。 10. VSZ:虚拟内存的大小(单位:KB)。 11. RSS:常驻内存的大小(单位:KB)。
# 常用示例: # 显示所有用户的所有进程的详细信息,包括那些没有控制终端的进程 [root@hostname ~]# ps -aux |grep httpd root 35628 0.0 0.0 230440 5204 ? Ss 09:46 0:00 /usr/sbin/httpd -DFOREGROUND apache 35639 0.0 0.0 232524 3144 ? S 09:46 0:00 /usr/sbin/httpd -DFOREGROUND apache 35640 0.0 0.0 232524 3144 ? S 09:46 0:00 /usr/sbin/httpd -DFOREGROUND apache 35641 0.0 0.0 232524 3144 ? S 09:46 0:00 /usr/sbin/httpd -DFOREGROUND apache 35642 0.0 0.0 232524 3144 ? S 09:46 0:00 /usr/sbin/httpd -DFOREGROUND apache 35643 0.0 0.0 232524 3144 ? S 09:46 0:00 /usr/sbin/httpd -DFOREGROUND root 35980 0.0 0.0 112824 980 pts/1 S+ 09:51 0:00 grep --color=auto httpd # 显示所有进程的完整格式输出 [root@hostname ~]# ps -ef | grep httpd root 35628 1 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 35639 35628 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 35640 35628 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 35641 35628 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 35642 35628 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND apache 35643 35628 0 09:46 ? 00:00:00 /usr/sbin/httpd -DFOREGROUND root 36025 21692 0 09:52 pts/1 00:00:00 grep --color=auto httpd
- 常见选项:
2. top:实时显示系统中各个进程的资源占用情况
用于实时显示系统中各进程的资源使用情况,它是监控系统性能的重要工具。top
提供了关于 CPU、内存使用情况以及进程状态的动态更新信息
- 界面布局:分两个部分
- 系统概况(Summary Area):显示系统的整体状态,包括 CPU、内存、交换区使用情况等。
- 进程列表(Task Area):列出系统中正在运行的进程及其资源使用情况。
top - 09:57:58 up 14:34, 2 users, load average: 0.00, 0.01, 0.05
Tasks: 235 total, 1 running, 234 sleeping, 0 stopped, 0 zombie
%Cpu(s): 0.2 us, 1.2 sy, 0.0 ni, 98.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st
KiB Mem : 5925680 total, 2922692 free, 990224 used, 2012764 buff/cache
KiB Swap: 5242876 total, 5242876 free, 0 used. 4626196 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
15610 root 20 0 3695076 257100 71120 S 4.0 4.3 0:50.81 gnome-shell
15058 root 20 0 387404 81628 53012 S 3.0 1.4 0:15.81 X
16007 root 20 0 764152 31032 19380 S 1.0 0.5 0:05.56 gnome-terminal-
9 root 20 0 0 0 0 S 0.3 0.0 0:03.25 rcu_sched
# 系统概况字段:
1. 上次更新:显示 top 命令启动后经过的时间。
2. 任务数(Tasks):显示进程总数及其状态(如运行中、休眠中)。
3. CPU 使用情况(CPU(s)):
%us:用户空间的 CPU 使用百分比。
%sy:系统空间的 CPU 使用百分比。
%id:空闲 CPU 百分比。
%wa:等待 I/O 操作的 CPU 百分比。
%hi:硬件中断的 CPU 使用百分比。
%si:软件中断的 CPU 使用百分比。
4. 内存使用情况(Mem):
total:总内存。
free:空闲内存。
used:已使用的内存。
buff/cache:用于缓冲和缓存的内存。
5. 交换区使用情况(Swap):
total:总交换区大小。
free:空闲交换区。
used:已使用的交换区。
# 进程列表字段:
1. PID:进程 ID。
2. USER:进程所有者的用户名。
3. PR:进程的优先级(Priority)。
4. NI:进程的优先级调整值(Nice value)。
5. VIRT:进程使用的虚拟内存总量。
6. RES:进程使用的常驻内存量(实际物理内存)。
7. SHR:进程共享的内存量。
S:进程状态,如:
R:运行中(Running)
S:休眠中(Sleeping)
D:不可中断的休眠(Uninterruptible Sleep)
Z:僵尸状态(Zombie)
8. %CPU:进程使用的 CPU 百分比。
9. %MEM:进程使用的内存百分比。
10. TIME+:进程使用的总 CPU 时间。
11. COMMAND:启动进程的命令。
- 常用选项:
- 进入 top 界面后,使用的 按键操作:
- P:按 CPU 使用率排序。
- M:按内存使用量排序。
- T:按时间排序。
- k:杀死进程。输入进程 ID 后,系统会提示你确认是否要终止该进程。
- q:退出 top 命令。
-
高级命令选项
# -d:设置更新间隔时间,例如 top -d 5 每 5 秒更新一次。
[root@hostname ~]# top -d 5
# -p:仅显示指定进程的情况,例如 top -p 1234 仅显示 PID 为 1234 的进程。
[root@hostname ~]# top -p 35628
top - 10:49:56 up 15:25, 2 users, load average: 0.04, 0.04, 0.05
Tasks: 1 total, 0 running, 1 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 : 5925680 total, 2924604 free, 987052 used, 2014024 buff/cache
KiB Swap: 5242876 total, 5242876 free, 0 used. 4629164 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
35628 root 20 0 230440 5204 3320 S 0.0 0.1 0:00.15 httpd
# -b:以批处理模式运行,适合将 top 的输出重定向到文件中,例如 top -b -n 1 > top_output.txt
[root@hostname ~]# top -b -n 1 > top_test.txt
[root@hostname ~]# cat top_test.txt
top - 10:50:23 up 15:26, 2 users, load average: 0.02, 0.03, 0.05
Tasks: 236 total, 1 running, 235 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 : 5925680 total, 2924328 free, 987320 used, 2014032 buff/cache
KiB Swap: 5242876 total, 5242876 free, 0 used. 4628904 avail Mem
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
1 root 20 0 273456 4524 2660 S 0.0 0.1 0:05.46 systemd
2 root 20 0 0 0 0 S 0.0 0.0 0:00.02 kthreadd
3. htop:增强的top版本
htop
是一个互动式的系统监控工具,比 top
更加友好和直观。它以图形化方式显示系统的资源使用情况,并允许用户通过键盘进行交互。
- 界面布局:
- 系统概况(Header Area):
- CPU 使用情况:图形化显示每个 CPU 核心的使用情况
- 内存使用情况:显示物理内存和交换区的使用情况
- 负载平均值:显示系统的负载平均值(1分钟、5分钟、15分钟)
- 进程列表(Process List):
- 显示当前运行的进程及其详细信息
- 系统概况(Header Area):
# 主要字段
1. PID:进程 ID。
2. USER:进程所有者的用户名。
3. PRI:进程的优先级。
4. NI:进程的优先级调整值(Nice value)。
5. VIRT:进程使用的虚拟内存总量。
6. RES:进程使用的实际物理内存量。
7. SHR:进程共享的内存量。
8. S:进程状态(运行、休眠等)。
9. CPU%:进程使用的 CPU 百分比。
10. MEM%:进程使用的内存百分比。
11. TIME+:进程使用的总 CPU 时间。
12. COMMAND:启动进程的命令。
# 常用操作
1. 上下箭头:滚动进程列表。
2. 左右箭头:调整列的宽度。
3. F2:打开设置菜单,允许用户自定义显示选项。
4. F3:搜索进程。
5. F4:筛选进程列表。
6. F5:切换到树状视图,显示进程的父子关系。
7. F6:选择排序列。
8. F9:杀死进程,选择进程后按下会提示选择信号。
9. F10:退出 htop。
# 高级选项
-d:设置更新间隔,例如 htop -d 5 每 5 秒更新一次。
-u:仅显示指定用户的进程,例如 htop -u username。
4. service与systemctl:管理系统服务:启动、停止、重启服务
< service >
和 < systemctl >
是用于管理 Linux 系统服务的命令行工具,但它们适用于不同的系统和服务管理工具;
(1)service 命令:(目前linux系统也可以正常使用)
service
命令是旧版的服务管理工具,主要用于 SysVinit 和兼容 SysVinit 的系统(例如:较旧的Debian和Ubuntu版本)。它提供了一个简化的接口来启动、停止、重启和检查服务状态。
- 常用命令操作:
格式: service <service_name> <command>
<service_name>:服务的名称,如 apache2、nginx 等
<command>:要执行的操作,如 start、stop、restart、status 等
# 使用示例:
# 启动服务:
[root@hostname ~]# service httpd start
Redirecting to /bin/systemctl start httpd.service
# 停止服务:
[root@hostname ~]# service httpd stop
Redirecting to /bin/systemctl stop httpd.service
# 重启服务:
[root@hostname ~]# service httpd restart
Redirecting to /bin/systemctl restart httpd.service
# 查看服务状态:
[root@hostname ~]# service httpd status
Redirecting to /bin/systemctl status httpd.service
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since 一 2024-08-12 11:41:19 CST; 38s ago
Docs: man:httpd(8)
man:apachectl(8)
(2)systemctl 命令:
systemctl
命令是用于控制和管理 systemd 系统和服务管理器的工具。systemd
是现代 Linux 发行版中常见的初始化系统,提供了更复杂的服务管理和依赖处理功能。
- 常用命令操作:
格式: systemctl <command> <service_name>
<command>:要执行的操作,如 start、stop、restart、status 等。
<service_name>:服务的名称,如 apache2.service、nginx.service 等。
# 使用示例:
# 启动服务:(正常启动时,输出无反馈;除问题启动,会报错)
[root@hostname ~]# systemctl start httpd
# 停止服务:(输出后无反馈)
[root@hostname ~]# systemctl stop httpd
# 重启服务:(正常重启后,输出无反馈;除问题启动,会报错)
[root@hostname ~]# systemctl restart httpd
# 查看服务状态:
[root@hostname ~]# systemctl status httpd
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) since 一 2024-08-12 11:41:19 CST; 9min ago
Docs: man:httpd(8)
(3)两者的区别:
- 随着系统的更新迭代,命令也进行了更新,我只测试过centos7,redhat8是可以继续使用service命令的;
- 功能和复杂性:
service
:提供了基本的服务管理功能,适用于简单的服务管理任务。systemctl
:提供了更高级的功能,包括服务的依赖管理、并行启动、并且能够管理多个单元类型(如服务、挂载点、设备等)。命令选项和功能:
systemctl
提供了更多的功能,例如管理系统挂载点、查看服务的日志(journalctl
)以及更详细的服务状态信息。兼容性:
systemctl
通常与service
命令的功能兼容,但在使用systemctl
时需要注意系统是否支持systemd
。
5. pstree:以树状图显示进程
用于显示进程树的命令行工具,它以树形结构显示 Linux 系统中运行的进程及其关系。这使得用户能够直观地看到进程之间的父子关系,帮助分析和理解系统中各个进程的组织结构。
格式: pstree [options] [pid | username]
pid:指定某个进程的 ID,只显示该进程及其子进程的树状结构。
username:指定某个用户,只显示该用户的进程树。
常用选项:
-A
:使用 ASCII 字符而不是 UTF-8 字符来绘制树形结构。这对于某些终端或字符集支持不佳的环境很有用。-c
:显示进程的命令行参数。-h
:高亮显示当前终端中的进程(即pstree
自身进程)。-n
:按 PID 排序,而不是按进程名称。-p
:显示进程 ID。-s
:显示进程树的根(即系统启动时的 init 进程)。-u
:显示每个进程的用户。-V
:显示pstree
的版本信息。
# 使用示例:
# 显示所有进程树:
[root@hostname ~]# pstree
systemd─┬─ModemManager───2*[{ModemManager}]
├─NetworkManager───2*[{NetworkManager}]
├─VGAuthService
├─2*[abrt-watch-log]
├─abrtd
├─accounts-daemon───2*[{accounts-daemon}]
...
# 显示某个进程的树:
[root@hostname ~]# pstree 44048
httpd───5*[httpd]
这里 44048 是进程 ID,pstree 将仅显示 PID 为 44048 的进程及其子进程。
# 显示所有进程树,并包含 PID:
[root@hostname ~]# pstree -p
systemd(1)─┬─ModemManager(6291)─┬─{ModemManager}(6303)
│ └─{ModemManager}(6318)
├─NetworkManager(6290)─┬─{NetworkManager}(6315)
│ └─{NetworkManager}(6330)
├─VGAuthService(6310)
├─abrt-watch-log(6308)
├─abrt-watch-log(6317)
├─abrtd(6297)
...
进程树的结构:
- pstree 显示的树形结构中:
- 每个进程 都以一个节点表示。
- 父进程 在树的上层,子进程 在下层。
- 进程之间的连接用垂直和水平线条表示。
- 进程名通常显示在节点上,PID 可以通过 -p 选项显示。
进程树的实际用途:
- 系统监控和调试:了解进程的层次结构和依赖关系,有助于诊断问题。
- 资源管理:查看哪些进程是父进程,以及它们如何分布在系统中。
- 权限和安全分析:识别和检查进程的运行用户,了解不同用户运行的进程。
提示:这里有一个知识点:
在操作系统中,父进程的终止会对子进程产生一定影响。分别情况如下:(在此不过多解释,但进程是很重要的,比如学docker和kubernetes时会用到)
(1)进程的孤儿进程;
(2)孤儿进程的处理;
(3)子进程的终止;
(4)信号处理;
(5)僵尸进程;
- 孤儿进程:父进程终止后,子进程会被
init
进程收养,继续运行或终止。- 僵尸进程:如果父进程没有处理子进程的退出状态,子进程会变成僵尸进程,但最终会由
init
进程清理。
6. kill:终止指定进程
kill
命令是在 Unix 和 Linux 系统中用于发送信号给进程的命令。它不仅仅用于终止进程,还可以用于发送其他各种信号来控制进程的行为;
格式: kill [options] <pid>...
<pid>:要发送信号的目标进程 ID。可以指定一个或多个进程 ID。
# 常用选项:
-l:列出所有信号的名称。这对于查看系统支持的信号非常有用。
-s <signal> 或 --signal <signal>:指定要发送的信号类型,可以是信号名称或信号编号。
-p:只显示指定进程的 PID,不发送信号。
-n:使用信号的编号而不是名称。
# 常见信号:
★信号是操作系统用来控制进程的机制。信号有很多种,下面列出一些常见的信号及其用途:
SIGTERM (15):终止信号,要求进程正常终止。进程可以捕捉此信号并进行清理工作。
SIGKILL (9):强制终止信号,不允许进程捕捉或忽略此信号。进程会被立即终止,无法进行任何清理操作。
SIGINT (2):中断信号,通常由用户从终端发送,表示中断当前进程的操作(例如,按下 Ctrl+C)。
SIGHUP (1):挂起信号,通常用于通知进程重新读取配置文件或重新启动。
SIGSTOP (19):停止信号,用于暂停进程的执行,不能被捕捉或忽略。可以通过 SIGCONT 恢复进程。
SIGCONT (18):继续信号,用于恢复被 SIGSTOP 或 SIGTSTP 停止的进程。
SIGUSR1 和 SIGUSR2:用户定义信号,可以用于自定义的应用程序行为。
- 常见命令操作:
# 使用示例:
# 终止单个进程:(拿httpd举例)
[root@hostname ~]# systemctl status httpd # 查看状态
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: active (running) # 这属于运行状态
Main PID: 44048 (httpd) # 进程 ID
# 这里 44048 是进程 ID,默认发送 SIGTERM 信号,请求进程正常终止。
[root@hostname ~]# kill 44048
[root@hostname ~]# systemctl status httpd # 查看状态
● httpd.service - The Apache HTTP Server
Loaded: loaded (/usr/lib/systemd/system/httpd.service; disabled; vendor preset: disabled)
Active: failed (Result: exit-code) # 显示失败
# 强制终止进程:
# 这里 -9 是 SIGKILL 信号的编号,用于强制立即终止进程
[root@hostname ~]# kill -9 44048
# 向进程发送特定信号:
# 这里 -s 选项指定了信号名称 SIGHUP,用于通知进程重新读取配置文件
[root@hostname ~]# kill -s SIGHUP 44048
# 列出所有信号:
[root@hostname ~]# kill -l
1) SIGHUP 2) SIGINT 3) SIGQUIT 4) SIGILL 5) SIGTRAP
6) SIGABRT 7) SIGBUS 8) SIGFPE 9) SIGKILL 10) SIGUSR1
...
# 发送信号给多个进程:
[root@hostname ~]# kill -9 1234 5678 91011
注意事项:
- 权限问题:发送信号到进程时,你需要有足够的权限。通常,只有进程的所有者或超级用户可以终止该进程。
- 信号处理:进程可以捕捉和处理某些信号(如
SIGTERM
),从而进行适当的清理工作。SIGKILL
是一个例外,它会立即终止进程,不允许任何处理。- 信号的忽略:进程可以选择忽略某些信号(例如,某些重要的信号可能会被忽略以防止意外终止)。
7. pkill:根据名称杀死进程
pkill
是 kill
命令的一个增强版,它能够通过进程名称来操作进程,而不是单独指定进程 ID。
格式: pkill [options] <pattern>
<pattern>:进程名称的模式,可以使用通配符或正则表达式来匹配进程名称
- 常用选项:
-e
:显示每个匹配到的进程的 PID。-f
:匹配进程的完整命令行,而不仅仅是进程名称。-i
:忽略模式的大小写。-n
:仅操作最新启动的进程。-o
:仅操作最早启动的进程。-u <user>
:仅匹配属于指定用户的进程。-signal
或--signal <signal>
:指定要发送的信号类型,可以是信号名称或信号编号。默认信号为SIGTERM
。
- 常用命令操作:
# 使用示例:
# 终止所有名为 httpd 的进程:
[root@hostname ~]# pkill httpd
# 强制终止所有名为 httpd 的进程:
[root@hostname ~]# pkill -9 httpd
# 显示匹配的进程的 PID:
[root@hostname ~]# pkill -e httpd
httpd killed (pid 50118)
httpd killed (pid 50135)
httpd killed (pid 50137)
...
8. killall:杀死所有指定名字的进程
主要功能是通过进程名称而不是进程ID来终止一个或多个进程;
格式: killall [选项] <进程名>
- 主要选项和功能:
- -s, --signal SIGNAL:指定要发送的信号,SIGNAL 可以是信号名称(如 SIGTERM)或信号编号(如 15)。如果没有指定,killall 默认发送 SIGTERM 信号
-u, --user USER
: 只终止由指定用户拥有的进程。你需要用用户名或用户ID(UID)替代USER
-v, --verbose
: 显示详细信息,列出正在终止的进程。-i, --interactive
: 在终止每个进程之前提示用户确认。这是一个安全功能,可以防止误终止重要进程。-r, --regexp
: 通过正则表达式匹配进程名称。这允许更灵活的进程选择。-e, --exact
: 精确匹配进程名称,只终止完全匹配的进程名,忽略部分匹配。-l, --list
: 列出所有信号名称。这对于确认可用信号很有用。-n, --signal-number
: 列出信号名称及其编号,这可以帮助你找到信号的正确编号。
- 常用命令操作:
# 使用示例:
# 终止所有名为 firefox 的进程:
[root@hostname ~]# killall firefox
# 终止所有由用户 john 启动的名为 firefox 的进程:
[root@hostname ~]# killall -u john firefox
# 发送 SIGKILL 信号(强制终止)到名为 firefox 的进程:
[root@hostname ~]# killall -s SIGKILL firefox
# 在终止之前提示确认:
[root@hostname ~]# killall -i firefox
# 列出所有信号名称:
[root@hostname ~]# killall -l
注意事项:
- 使用
killall
时要小心,因为它会终止所有匹配名称的进程,可能会影响到不希望终止的进程。killall
命令的行为可能会因操作系统的不同而有所不同。例如,在某些系统上,killall
可能只会终止用户自己拥有的进程。
9. vmstat:报告虚拟内存统计信息
vmstat
(虚拟内存统计)是一个在类 Unix 操作系统中用于报告系统内存、交换、IO、系统活动和 CPU 使用情况的命令。可以帮助系统管理员监控系统的性能和诊断潜在的问题;
格式: vmstat [options] [delay [count]]
1. options:vmstat 支持多种选项来控制其行为
2. delay:指定更新的时间间隔(以秒为单位)
3. ount:指定输出的行数(即更新的次数)
常用选项:
-a
:显示所有内存统计信息,包括活动和非活动内存。-s
:以汇总格式显示系统内存的统计信息。-d
:显示块设备的统计信息(如磁盘I/O)。-m
:显示内存分配信息,包括 slab 分配。-t
:显示时间戳。
# 输出字段:
[root@hostname ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 2590940 1549748 1280272 0 0 7 2 28 45 0 0 100 0 0
1. Procs(进程)
r:就绪队列中的进程数量。系统处于等待 CPU 时间的进程数量
b:在不可中断的等待状态下的进程数量,通常是等待 I/O 的进程
2. Memory(内存)
swpd:已使用的交换空间(以 KB 为单位)
free:空闲内存(以 KB 为单位)
buff:用于缓冲的内存(以 KB 为单位)
cache:用于缓存的内存(以 KB 为单位)
3. Swap(交换空间)
si:从磁盘交换到内存的数量(以 KB 为单位),即交换进程
so:从内存交换到磁盘的数量(以 KB 为单位),即交换出
4. IO(输入输出)
bi:每秒从块设备读取的数据量(以 KB 为单位)
bo:每秒写入到块设备的数据量(以 KB 为单位)
5. System(系统)
in:每秒中断的数量,包括时钟中断
cs:每秒上下文切换的数量
6. CPU(CPU)
us:用户空间占用的 CPU 时间百分比,不包括优先级调度
sy:内核空间占用的 CPU 时间百分比
id:CPU 空闲时间百分比
wa:等待 I/O 操作的时间百分比
st:从虚拟机偷取的 CPU 时间百分比(仅在虚拟化环境中有用)
- 常用命令操作:
# 使用示例:
# 查看系统状态(默认输出):
[root@hostname ~]# 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 2591036 1772 2330720 0 0 7 2 28 45 0 0 100 0 0
# 每隔 5 秒更新一次,共 10 次:
[root@hostname ~]# vmstat 5 10
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 2590408 1772 2330724 0 0 7 2 28 45 0 0 100 0 0
0 0 0 2590368 1772 2330724 0 0 0 18 753 1290 0 1 99 0 0
0 0 0 2590368 1772 2330724 0 0 0 0 155 258 0 0 100 0 0
0 0 0 2590344 1772 2330724 0 0 0 0 562 982 0 1 99 0 0
...
# 显示所有内存统计信息:
[root@hostname ~]# vmstat -a
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
r b swpd free inact active si so bi bo in cs us sy id wa st
1 0 0 2590460 1549748 1280560 0 0 7 2 28 46 0 0 100 0 0
# 显示时间戳:
[root@hostname ~]# vmstat -t
procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu----- -----timestamp-----
r b swpd free buff cache si so bi bo in cs us sy id wa st CST
1 0 0 2590644 1772 2330724 0 0 7 2 28 46 0 0 100 0 0 2024-08-12 15:42:00
注意事项:
vmstat
的输出是基于系统的快照,因此要理解其输出结果,需要对系统行为有一定了解。- 输出的字段和解释可能会因操作系统和版本的不同而有所不同。
二、网络和通信:
1. ping:检查网络连接
用于测试网络连通性,检查目标主机是否可以访问以及网络延迟。它通过向目标主机发送 ICMP 回显请求(Echo Request)并接收 ICMP 回显应答(Echo Reply)来实现这一点。
格式:ping [options] destination
常用选项:
-c
:指定发送的请求次数。例如,ping -c 4 google.com
发送 4 个请求。-i
:设置发送请求的间隔时间(秒)。默认是每秒一次。-t
:设置请求的生存时间(TTL,Time To Live),用于控制数据包的跳数。-s
:设置发送数据包的大小(字节数)。-W
:设置超时时间(秒),等待每个响应的最长时间。-q
:以简洁模式显示输出,仅显示总结信息。
# 输出字段:
[root@hostname ~]# ping 192.168.2.71
PING 192.168.2.71 (192.168.2.71) 56(84) bytes of data.
64 bytes from 192.168.2.71: icmp_seq=1 ttl=64 time=0.224 ms
64 bytes from 192.168.2.71: icmp_seq=2 ttl=64 time=0.418 ms
64 bytes from 192.168.2.71: icmp_seq=3 ttl=64 time=0.386 ms
^C
--- 192.168.2.71 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2000ms
rtt min/avg/max/mdev = 0.224/0.342/0.418/0.087 ms
1. PING:显示目标主机的 IP 地址和发送数据包的大小。
2. 64 bytes from:显示接收到的字节数、目标主机的 IP 地址和生存时间(TTL)。
3. icmp_seq:显示序列号,用于跟踪请求的顺序。
4. time:显示从发送请求到接收到响应的时间(毫秒)。
5. rtt:往返时间(Round Trip Time),显示最小、最大和平均延迟。
- 常用命令操作:
# 使用示例:
# 基本连通性测试:
[root@hostname ~]# ping baidu.com # ping 域名地址
[root@hostname ~]# ping 192.168.2.10 # ping IP地址
2. ifconfig 或 ip:配置或显示网络接口参数
ifconfig
和 ip
命令都是用来管理和配置网络接口的工具,但它们在功能和使用上有些区别。
(1)ifconfig 命令:
ifconfig
(interface configuration)是一个传统的命令行工具,用于配置和显示网络接口的状态。它在许多 Unix 和类 Unix 系统上都可用,包括 Linux 和 macOS。
格式:ifconfig [interface] [options]
常用选项:
ifconfig
:显示所有网络接口的信息。ifconfig interface
:显示指定接口的信息,例如ifconfig eth0
。ifconfig interface up
:启用指定接口。ifconfig interface down
:禁用指定接口。ifconfig interface ip_address netmask netmask
:为指定接口配置 IP 地址和子网掩码。ifconfig interface hw ether mac_address
:设置接口的 MAC 地址。
- 常用命令操作:
# 使用示例:
# 查看所有接口信息:
[root@hostname ~]# ifconfig
# 查看指定接口信息:
[root@hostname ~]# ifconfig eth0
# 启用接口:
[root@hostname ~]# ifconfig eth0 up
# 禁用接口:
[root@hostname ~]# ifconfig eth0 down
# 设置 IP 地址:
[root@hostname ~]# ifconfig eth0 192.168.1.100 netmask 255.255.255.0
(2)ip 命令:
ip
命令是 Linux 上用于管理网络配置的现代工具,功能更强大且更灵活。它属于 iproute2
套件,是 ifconfig
的现代替代品。
格式:ip [OPTIONS] OBJECT { COMMAND | help }
OBJECT:操作的对象,如 link、addr、route 等。
COMMAND:要执行的操作,如 show、add、del 等。
常用选项和命令:
ip link
:管理和显示网络接口。
ip link show
:显示所有接口的信息。ip link set interface up
:启用接口。ip link set interface down
:禁用接口.
ip addr
:管理和显示 IP 地址。
ip addr show
:显示所有接口的 IP 地址。ip addr add ip_address/prefixlen dev interface
:为接口添加 IP 地址。ip addr del ip_address/prefixlen dev interface
:从接口删除 IP 地址.
ip route
:管理和显示路由表。
ip route show
:显示路由表。ip route add destination/prefix via gateway
:添加路由。ip route del destination
:删除路由。
- 常用命令操作:
# 使用示例:
# 查看所有接口信息:
[root@hostname ~]# ip link show
# 查看指定接口的 IP 地址:
[root@hostname ~]# ip addr show eth0
# 启用接口:
[root@hostname ~]# ip link set eth0 up
# 禁用接口:
[root@hostname ~]# ip link set eth0 down
(3)两者区别:
功能范围:
ifconfig
:主要用于网络接口的配置和显示,功能较为基础。ip
:功能更全面,不仅支持网络接口配置,还包括 IP 地址、路由、链路等的管理。现代性:
ifconfig
:相对较旧,在现代 Linux 系统中逐渐被ip
命令取代。ip
:现代的网络配置工具,功能强大且灵活,支持更多高级特性。输出格式:
ifconfig
:输出格式较为简单。ip
:输出格式详细且可以通过不同的命令组合获得更多信息。工具套件:
ifconfig
:属于net-tools
套件。ip
:属于iproute2
套件。总体而言,
ip
命令提供了更为全面和灵活的网络管理功能,是现代 Linux 系统中推荐使用的工具。
3.nmcli:可以用来查看和配置网络(这个用起来还不错)
nmcli
是一个命令行工具,用于与 NetworkManager 进行交互,管理网络连接。NetworkManager 是 Linux 上一个强大的网络管理工具,它简化了网络连接的配置和管理。nmcli
命令可以用来查看和配置网络接口、网络连接、无线网络、VPN 等。
( 可作为单独学的一条命令,涉及到网卡命名规则 )
格式:nmcli [OPTIONS] OBJECT { COMMAND | help }
OBJECT:操作的对象,如 connection、device、networking 等。
COMMAND:要执行的操作,如 show、add、delete 等。
-
常用的 nmcli 命令及选项:
1. nmcli connection :用于管理网络连接
# 显示所有网络连接的信息:ens33网卡
[root@hostname ~]# nmcli connection show
NAME UUID TYPE DEVICE
ens33 72f86704-89fd-4061-a2ce-6f8934dcac4c ethernet ens33
# nmcli connection show [CONNECTION_NAME]:显示指定连接的详细信息
[root@hostname ~]# nmcli connection show ens33
# nmcli connection add type [TYPE] con-name [NAME] [options]:添加新的网络连接
TYPE 可以是 wifi、ethernet、vpn 等。
NAME 是连接的名称。
例如,添加一个新的 ethernet 连接:
[root@hostname ~]# nmcli connection add type ethernet ifname ens34 con-name ens34
解释:nmcli connection 添加 类型 以太网设备 网卡设备名为eth0 nmcli命令命名为eth0
# nmcli connection modify [NAME] [options]:修改 ens34 IP地址:
[root@hostname ~]# nmcli connection modify ens34 ipv4.method manual ipv4.addresses 192.168.2.10/24 ipv4.gateway 192.168.2.1 autoconnect yes
# nmcli connection up [NAME]:激活:
[root@hostname ~]# nmcli connection up eth0
解释:激活失败有可能添加时或修改时都会引起失败
# nmcli connection down [NAME]:禁用:
[root@hostname ~]# nmcli connection down ens34
# nmcli connection delete [NAME]:删除指定的连接
[root@hostname ~]# nmcli connection delete ens34
!!!以上顺序是可以应用到实际操作中:查看网卡、添加网卡、设置网卡外号、修改网卡IP地址、激活
原则:必须给网卡再起一个外号名字;不能用本名;行业规定:网卡本名叫什么外号还叫什么
2. nmcli device:用于管理网络设备:
# 显示所有设备的状态:
[root@hostname ~]# nmcli device
DEVICE TYPE STATE CONNECTION
ens33 ethernet 已连接 ens33
virbr0 bridge 未托管 --
lo loopback 未托管 --
# 显示指定设备的详细信息:
[root@hostname ~]# nmcli device show ens33
GENERAL.DEVICE: ens33
GENERAL.TYPE: ethernet
GENERAL.HWADDR: 00:0C:29:95:AC:D0
GENERAL.MTU: 1500
GENERAL.STATE: 100(已连接)
...
# 连接指定的设备:
[root@hostname ~]# nmcli device connect ens33
成功用 "ens3372f86704-89fd-4061-a2ce-6f8934dcac4c" 激活了设备 ""。
# 断开指定的设备:
[root@hostname ~]# nmcli device disconnect ens33
成功断开设备 "ens33"。
3. nmcli networking:用于管理网络功能:
# 禁用网络管理功能:
[root@hostname ~]# nmcli networking off
# 启用网络管理功能:
[root@hostname ~]# nmcli networking on
# 检查网络连接的状态:
[root@hostname ~]# nmcli networking connectivity check
4. nmcli general
:用于显示 NetworkManager 的总体状态信息:
# 显示 NetworkManager 的状态:
[root@hostname ~]# nmcli general status
# 显示或设置系统的主机名:
[root@hostname ~]# nmcli general hostname
[root@hostname ~]# nmcli general hostname myhostname
4. netstat:显示网络连接、路由表、接口统计等
netstat
是一个网络实用工具,用于显示网络连接、路由表、接口统计信息等。它可以帮助你了解系统的网络状态和诊断网络问题。
netstat 是一个功能丰富的网络诊断工具,通过不同的选项可以显示网络连接、接口状态、路由表等信息。它在排查网络问题、查看系统网络状态时非常有用。不过需要注意的是,`netstat` 在某些系统上已被 `ss` 和 `ip` 命令所取代,后者提供了更强大的功能和更详细的输出。
- 常用选项和参数:
- -a:显示所有连接和监听端口
- -t:显示 TCP 连接
-u
:显示 UDP 连接-l
:仅显示监听中的端口-p
:显示哪个进程正在使用该端口-n
:以数字形式显示地址和端口号,而不是域名和服务名-r
:显示路由表-i
:显示网络接口统计信息-s
:显示网络统计信息,包括各种协议的统计数据-e
:显示扩展的网络接口信息-c
:每隔一段时间重复显示网络状态
- 常用命令操作:
[root@hostname ~]# netstat -antlp
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:111 0.0.0.0:* LISTEN 6260/rpcbind
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 6638/sshd
tcp6 0 0 ::1:631 :::* LISTEN 6640/cupsd
tcp6 0 0 ::1:25 :::* LISTEN 7074/master
...
# 输出字段解析:
1. Proto (协议):显示协议类型,例如 tcp、udp
2. Recv-Q (接收队列):显示尚未被应用程序读取的数据量(字节数)。对于 TCP 连接,这表示在接收缓冲区中等待处理的数据量。
3. Send-Q (发送队列):显示尚未被对方接收的数据量(字节数)。对于 TCP 连接,这表示在发送缓冲区中等待确认的数据量
4. Local Address (本地地址):显示本地计算机的 IP 地址和端口号。例如 192.168.1.100:22 表示本地 IP 地址为 192.168.1.100,端口号为 22。
5. Foreign Address (远程地址):显示远程计算机的 IP 地址和端口号。例如 192.168.1.101:49152 表示远程 IP 地址为 192.168.1.101,端口号为 49152。
6. State (状态):
仅适用于 TCP 连接,显示连接的状态。例如:
LISTEN:监听状态,表示服务正在等待连接。
ESTABLISHED:已建立连接,表示数据可以传输。
SYN_SENT:已发送同步请求,等待确认。
FIN_WAIT1:连接关闭的第一阶段。
CLOSE_WAIT:等待关闭连接的请求。
# 显示网络接口统计
[root@hostname ~]# netstat -i
Kernel Interface table
Iface MTU RX-OK RX-ERR RX-DRP RX-OVR TX-OK TX-ERR TX-DRP TX-OVR Flg
ens33 1500 253936 0 0 0 860362 0 0 0 BMRU
lo 65536 38970 0 0 0 38970 0 0 0 LRU
# 输出字段解析:
1. Iface (接口名):显示网络接口的名称,例如 eth0、wlan0
2. MTU (最大传输单元):显示网络接口的最大数据传输单元大小(字节数)。这是网络接口能够处理的最大数据包大小
3. RX-OK (接收数据包):显示成功接收的数据包数量
4. RX-ERR (接收错误):显示接收过程中发生的错误数量
5. RX-DRP (接收丢包):显示接收过程中丢弃的数据包数量
6. RX-OVR (接收溢出):显示由于接收缓冲区溢出而丢弃的数据包数量
7. TX-OK (发送数据包):显示成功发送的数据包数量
8. TX-ERR (发送错误):显示发送过程中发生的错误数量
9. TX-DRP (发送丢包):显示发送过程中丢弃的数据包数量
10. TX-OVR (发送溢出):显示由于发送缓冲区溢出而丢弃的数据包数量
11. Flg (标志):
显示网络接口的标志,通常包括:
B:广播支持
M:支持多播
R:运行中
U:接口处于启用状态
5. ss:显示和分析网络套接字的命令
ss
(Socket Statictics)是用于显示和分析网络套接字的命令,通常用于替代 netstat
。它提供了更详细和高效的网络连接信息。
格式:ss [options]
常用选项:
-t
:显示 TCP 连接。-u
:显示 UDP 连接。-l
:显示正在监听的套接字。-p
:显示相关的进程信息。-n
:以数字格式显示地址和端口号,而不是解析成域名。-a
:显示所有套接字(包括监听和非监听)。-s
:显示统计信息(包括各种套接字的总数)。-r
:显示路由信息。
- 常用命令操作:(可与grep联合使用)
# 显示所有当前监听的 UDP 套接字及其相关的进程信息,地址和端口号以数字形式呈现
[root@hostname ~]# ss -aulnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 *:67 *:* users:(("dhcpd",pid=6645,fd=7))
UNCONN 0 0 *%virbr0:67 *:* users:(("dnsmasq",pid=1586,fd=3))
UNCONN 0 0 [::]:69 [::]:* users:(("systemd",pid=1,fd=138))
UNCONN 0 0 [::]:111 [::]:* users:(("rpcbind",pid=6260,fd=9))
# 列出所有当前监听的 TCP 套接字及其相关进程信息,地址和端口号以数字形式显示
[root@hostname ~]# ss -atlnp
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 128 *:111 *:* users:(("rpcbind",pid=6260,fd=8))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=6638,fd=3))
LISTEN 0 128 [::]:111 [::]:* users:(("rpcbind",pid=6260,fd=11))
LISTEN 0 128 [::]:80 [::]:* users:(("httpd",pid=51837,fd=4),("httpd",pid=51836,fd=4),("httpd",pid=51835,fd=4),("httpd",pid=51834,fd=4),("httpd",pid=51833,fd=4),("httpd",pid=51814,fd=4))
# 输出字段
1. Netid:套接字类型,如 tcp, udp 等。
2. State:连接状态,如 ESTAB(已建立)、LISTEN(监听中)、CLOSE_WAIT(关闭等待)等。
3. Recv-Q:接收队列的字节数。
4. Send-Q:发送队列的字节数。
5. Local Address:Port:本地地址和端口。
6. Peer Address:Port:远程地址和端口。
7. PID/Program name:相关进程的 PID 和名称(需使用 -p 选项)。
6. route:手工产生、修改和查看路由表(建议使用 nmcli 命令设置网络)
用于显示和修改系统的网络路由表,它主要用于管理数据包在网络中的传输路径;
格式: route [options] [add|del] [destination] [options]
常用选项:
-n
:以数字形式显示路由表,不解析域名。-v
:显示详细信息。-e
:显示路由表。
[root@hostname ~]# route
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
default gateway 0.0.0.0 UG 100 0 0 ens33
192.168.2.0 0.0.0.0 255.255.255.0 U 100 0 0 ens33
# 输出字段:
1. Destination:目标网络或主机的地址。
2. Gateway:数据包通过的网关地址。
3. Genmask:子网掩码。
4. Flags:路由标志,如 U(路由已使用)、G(使用网关)、H(目标是主机)等。
5. MSS:最大报文段大小(TCP)。
6. Window:窗口大小(TCP)。
7. irtt:初始往返时间(RTT)。
8. Iface:路由条目使用的网络接口。
- 常用命令使用:
# 使用示例:
# 常用子命令
1. add:添加新的路由
2. del:删除现有的路由
3. default:指定默认路由
# 查看当前路由表:
[root@hostname ~]# route
# 添加路由:添加一个到 192.168.1.0/24 网络的路由,网关为 192.168.1.1
[root@hostname ~]# route add -net 192.168.1.0 netmask 255.255.255.0 gw 192.168.1.1
# 删除路由:删除到 192.168.1.0/24 网络的路由
[root@hostname ~]# route del -net 192.168.1.0 netmask 255.255.255.0
# 设置默认路由:设置默认网关为 192.168.1.1
[root@hostname ~]# route add default gw 192.168.1.1
# 查看详细的路由表:
[root@hostname ~]# route -v
8. wget 或 curl:下载文件或网页内容
(1)wget 命令:
功能:wget
用于从网络上下载文件,支持 HTTP、HTTPS 和 FTP 协议
格式:wget [options] [URL]
示例:wget http://example.com/file.zip
解释:下载 http://example.com/file.zip 文件到当前目录
常用选项:
-O <file>
:指定输出文件名。例如,wget -O newfile.zip http://example.com/file.zip
。-r
:递归下载整个网站。-N
:仅下载比本地文件更新的文件。--limit-rate=<rate>
:限制下载速度,例如--limit-rate=200k
。
(2)curl 命令:
功能:curl
用于与服务器交换数据,支持多种协议(包括 HTTP、HTTPS、FTP、SFTP 等)。
格式:curl [options] [URL]
示例:curl -O http://example.com/file.zip
解释:使用 -O 选项下载 http://example.com/file.zip 文件到当前目录,保持原文件名。
常用选项:
-o <file>
:指定输出文件名。例如,curl -o newfile.zip http://example.com/file.zip
。-I
:仅获取 HTTP 响应头信息。-L
:跟随重定向。-u <user:password>
:使用基本认证。--limit-rate <rate>
:限制下载速度,例如--limit-rate 200k
。
9. ssh:安全的远程登录到另一台计算机
ssh
(Secure Shell)用于安全地远程登录到另一台计算机。它提供加密的通信,以防止中间人攻击和数据泄露。
格式:ssh [options] [user@]hostname
参数:
1. user:指定要登录的用户名(如果省略,默认为当前用户)。
2. hostname:目标主机的 IP 地址或域名
示例:ssh [email protected]
解释:使用 user 用户名登录到 example.com 主机
- 常用命令操作:
# -p <port>:指定 SSH 端口(默认为 22)
示例:ssh -p 20 [email protected]
# -i <keyfile>:指定私钥文件进行身份验证
示例:ssh -i ~/.ssh/id_rsa [email protected]
# -C:启用压缩,提高传输速度
示例:ssh -C [email protected]
提示:还有 scp 命令 是(基于ssh)从本地复制文件到远程主机或从远程主机复制文件到本地;后面会详细讲到
10. nslookup:查询一台机器的IP和其对应的域名
nslookup
是一个用于查询 DNS 记录的网络工具,可以帮助用户获取域名的 IP 地址或其他 DNS 信息
格式:nslookup [options] [hostname]
hostname:要查询的域名或 IP 地址
示例:nslookup example.com
解释:查询 example.com 域名的 DNS 记录
- 常用命令操作:
# 查询指定主机 baidu.com(hostname) 的 DNS 信息,使用 8.8.8.8(server) 指定 DNS 服务器
[root@hostname ~]# nslookup baidu.com 8.8.8.8
Server: 8.8.8.8
Address: 8.8.8.8#53
Non-authoritative answer:
Name: baidu.com
Address: 39.156.66.10
Name: baidu.com
Address: 110.242.68.66
# 获取域名对应的 IP 地址
[root@hostname ~]# nslookup baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
Name: baidu.com
Address: 110.242.68.66
Name: baidu.com
Address: 39.156.66.10
# MX 记录:获取域名的邮件交换服务器信息
[root@hostname ~]# nslookup -query=MX baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
baidu.com mail exchanger = 20 usmx01.baidu.com.
baidu.com mail exchanger = 15 mx.n.shifen.com.
baidu.com mail exchanger = 20 mx1.baidu.com.
baidu.com mail exchanger = 10 mx.maillb.baidu.com.
baidu.com mail exchanger = 20 jpmx.baidu.com.
baidu.com mail exchanger = 20 mx50.baidu.com.
Authoritative answers can be found from:
# PTR 记录:获取 IP 地址反向解析的域名。
[root@hostname ~]# nslookup -query=PTR baidu.com
Server: 114.114.114.114
Address: 114.114.114.114#53
Non-authoritative answer:
*** Can't find baidu.com: No answer
Authoritative answers can be found from:
baidu.com
origin = dns.baidu.com
mail addr = sa.baidu.com
serial = 2012148496
refresh = 300
retry = 300
expire = 2592000
minimum = 7200
推荐一个持久更新的安全面试网站(看个人需求):面试鸭 - 程序员求职面试刷题神器,高频编程题目免费刷
标签:网络通信,httpd,显示,0.0,hostname,linux,进程,root From: https://blog.csdn.net/m0_64473089/article/details/141114568