Linux进程
Linux进程
基本概念
- 在 Linux 系统中,进程是正在运行的程序的实例。每个进程都有一个唯一的进程 ID(PID),并且可以包含一个或多个线程。
- 进程的基本概念
- 进程:正在运行的程序的实例,包括代码、数据和系统资源。
- 线程:进程内的执行单元,共享进程的内存和资源。
- PID(Process ID):每个进程的唯一标识符。
- PPID(Parent Process ID):父进程的 PID。
- 进程状态:
- 运行(R):进程正在运行或等待运行。
- 睡眠(S):进程正在等待事件完成。
- 停止(T):进程被暂停。
- 僵尸(Z):进程已终止,但其父进程尚未回收资源。
查看进程
ps 命令
-
功能:显示当前进程状态。
-
常用选项:
ps aux:显示所有用户的进程。ps -ef:显示完整格式的进程信息。ps -e:显示所有进程。ps -u <用户名>:显示指定用户的进程。
-
ps aux -
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 12345 6789 ? Ss 10:00 0:01 /sbin/init -
字段说明:
USER:进程所有者。PID:进程 ID。%CPU:CPU 使用率。%MEM:内存使用率。VSZ:虚拟内存大小。RSS:物理内存大小。TTY:终端类型。STAT:进程状态。START:进程启动时间。TIME:进程占用 CPU 时间。COMMAND:启动进程的命令。
-
pstree命令- 功能:以树状结构显示进程及其子进程。
- 常用选项:
-p:显示进程 ID。-u:显示进程所有者。
top命令
-
基本功能
- 实时显示系统的进程和资源使用情况。
- 动态更新视图,默认每 3 秒刷新一次。
- 支持交互式操作,如排序、终止进程等。
-
在终端中输入以下命令启动
top:-
top -
启动后,
top会显示一个实时更新的界面。
-
-
top界面分为两部分:摘要区域 和 进程列表。-
摘要区域
-
第一行:系统时间、运行时间、用户数、负载平均值。
-
top - 10:00:00 up 1 day, 2:30, 3 users, load average: 0.15, 0.10, 0.05
-
-
第二行:任务总数、运行中的任务、睡眠中的任务、停止的任务、僵尸任务。
-
Tasks: 123 total, 1 running, 122 sleeping, 0 stopped, 0 zombie
-
-
第三行:CPU 使用情况。
-
%Cpu(s): 1.5 us, 0.5 sy, 0.0 ni, 97.5 id, 0.5 wa, 0.0 hi, 0.0 si, 0.0 stus:用户空间占用 CPU 百分比。sy:内核空间占用 CPU 百分比。id:空闲 CPU 百分比。wa:等待 I/O 的 CPU 百分比。
-
-
第四行:内存使用情况。
-
第五行:交换分区使用情况。
-
MiB Mem : 8000.0 total, 2000.0 free, 3000.0 used, 3000.0 buff/cache MiB Swap: 2000.0 total, 1500.0 free, 500.0 used. 4000.0 avail Mem
-
-
进程列表
-
显示每个进程的详细信息,默认按 CPU 使用率排序。
-
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND 1234 root 20 0 123456 78901 1234 R 1.5 0.1 0:01.23 myprogram -
字段说明:
PID:进程 ID。USER:进程所有者。PR:优先级。NI:nice 值。VIRT:虚拟内存大小。RES:物理内存大小。SHR:共享内存大小。S:进程状态(R=运行,S=睡眠,Z=僵尸)。%CPU:CPU 使用率。%MEM:内存使用率。TIME+:进程占用 CPU 时间。COMMAND:启动进程的命令。
-
-
-
top的交互式操作 -
在
top运行时,可以按以下键进行交互操作:- 排序
- 按 CPU 使用率排序:按
P键。 - 按内存使用率排序:按
M键。 - 按进程 ID 排序:按
N键。 - 按运行时间排序:按
T键。
- 按 CPU 使用率排序:按
- 显示选项
- 显示完整的命令路径:按
c键。 - 显示或隐藏 CPU 核心信息:按
1键。 - 显示或隐藏内存和交换分区信息:按
m键。
- 显示完整的命令路径:按
- 进程管理
- 终止进程:按
k键,然后输入进程 ID。 - 调整进程优先级:按
r键,然后输入进程 ID 和新的 nice 值。
- 终止进程:按
- 刷新频率
- 设置刷新间隔:按
d键,然后输入刷新间隔(秒)。(默认为3)
- 设置刷新间隔:按
- 退出
top- 按
q键退出top。
- 按
- 排序
终止进程
-
kill命令-
功能:向进程发送信号,默认发送
SIGTERM(终止信号)。 -
使用
kill终止父进程时,默认不会自动终止其子进程。 -
kill [选项] <PID> -
常用信号:
SIGTERM(15):请求进程正常终止(默认信号)。SIGKILL(9):强制终止进程。SIGSTOP(19):暂停进程。SIGCONT(18):恢复暂停的进程。
-
-
pkill命令-
功能:根据进程名终止进程。
-
pkill [选项] <进程名>
-
-
killall命令-
功能:根据进程名终止所有同名进程。
-
killall指令支持使用通配符
-
killall默认会终止指定进程名的所有进程,包括其子进程。 -
killall [选项] <进程名>
-
-
权限问题:普通用户只能终止自己的进程,root 用户可以终止所有进程。
-
僵尸进程:僵尸进程无法被终止,需要终止其父进程以回收资源。
-
kill命令可以通过进程 ID 终止进程,也可以通过进程组终止父进程及其子进程。 -
killall命令通过进程名终止所有同名进程,包括其子进程。
服务管理
-
服务管理是系统管理员的重要任务之一。服务是在后台运行的应用程序或进程,通常用于提供特定的功能(如网络服务、数据库服务等)。
-
常用命令(使用
systemctl) -
systemctl指令管理的服务在/usr/lib/systemd/system/目录下查看-
# 启动服务: systemctl start <服务名> # 停止服务: systemctl stop <服务名> # 重启服务: systemctl restart <服务名> # 查看服务状态 systemctl status <服务名> # 启用开机自启动: systemctl enable <服务名> # 禁用开机自启动: systemctl disable <服务名> # 重新加载服务配置: systemctl reload <服务名>
-
-
查看服务
-
列出所有已安装的服务:
-
systemctl list-unit-files --type=service
-
-
查看是否开机自启动
-
systemctl is-enable <服务名>
-
-
使用
ps命令查看服务的进程:-
ps aux | grep <服务名>
-
-
-
服务的运行状态
-
目标名称 对应运行级别 描述 poweroff.target0 关机模式。 rescue.target1 单用户模式,用于系统维护。 multi-user.target2, 3, 4 多用户模式,不包含图形界面。 graphical.target5 图形界面模式,包含图形登录界面。 reboot.target6 重启模式。 -
使用
systemctl命令查看当前的运行状态:-
systemctl get-default
-
-
使用
systemctl命令设置默认目标:-
systemctl set-default <目标> sudo systemctl set-default graphical.target # 设置默认目标为图形界面模式
-
-
网络服务
-
查看网络
-
ifconfig # 或者 ip addr show
-
-
查看网络相关信息
netstat-
-a:显示所有连接(包括监听和非监听的连接)。 -
netstat -a -
-p:显示与连接相关的进程信息。 -
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 0 0 192.168.1.100:22 192.168.1.200:54321 ESTABLISHED 5678/sshPID/Program name:显示与连接相关的进程 ID 和程序名称。1234/sshd:表示 PID 为 1234 的sshd进程正在监听端口 22。- 这表示本地主机上的
sshd进程(PID 为 1234)正在监听 22 端口,等待外部连接。
- 这表示本地主机上的
5678/ssh:表示 PID 为 5678 的ssh进程正在与远程主机建立连接。- 这表示本地主机上的
ssh进程(PID 为 5678)正在与远程主机192.168.1.200建立 SSH 连接。
- 这表示本地主机上的
-
-
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN 1234/sshd tcp 0 0 192.168.1.100:22 192.168.1.200:54321 ESTABLISHED 5678/ssh- 字段说明:
Proto:协议类型(如 TCP、UDP)。Recv-Q:接收队列中的数据量。Send-Q:发送队列中的数据量。Local Address:本地地址和端口。Foreign Address:远程地址和端口。State:连接状态(如 LISTEN、ESTABLISHED)。PID/Program name:进程 ID 和程序名称。
- 字段说明:
防火墙设置
-
外部链接访问系统端口时会经过防火墙,防火墙中设置了对外开放的端口和不能访问的端口
-
打开端口指令:
-
firewall-cmd --permanent --add-port=端口号/协议- 其中端口号和协议可以使用netstat命令进行查看
--permanent:将规则永久保存到防火墙配置文件中。- 保存的配置文件位于
/etc/firewalld/zones/目录下(如public.xml)。 - 永久规则在系统重启后仍然有效。
-
-
关闭端口
-
firewall-cmd --permanent --remove-port=端口号/协议
-
-
重新载入才能生效
-
firewall-cmd --reload
-
-
查询端口是否开放
-
firewall-cmd --query-port=端口号/协议
-
-
使用 telnet 测试端口连通性
-
telnet <服务器IP> <端口号> telnet 192.168.1.100 22 -
测试的时候确定端口被监听并且端口 上可能存在运行的服务。
-
如果连接成功,会显示服务器的欢迎信息或提示符。
-
如果连接失败,会显示错误信息(如
Connection refused或Timeout)。
-

浙公网安备 33010602011771号