Linux基础-进程管理
linux进程管理
进程是一个在系统中运行的程序
进程是已经启动的可执行的运行实例,进程有以下部分组成:
已分配内存的地址空间
安全属性,抱括所有权凭据和特权
进程代码一个多个执行线程
进程状态
程序:是二进制文件,比如 /bin/目录下的这些静态文件
进程: 是程序运行的过程,动态的,有生命周期和运行状态
进程类型
守护进程:在系统引导过程中就启动的进程,跟终端无关的进程
前台进程:跟终端有关,可以通过终端启动的进程
进程的生命周期
父进程复制自己的地址空间(fork)创建一个子进程。 每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性需求。PID跟父进程ID PPID 是子进程的进程环境因素,任何进程都可以创建子进程,所有的进程都是第一个系统进程的后代。
PID进程号是唯一表示进程的ID
进程查看:
ps 查看进程信息
a:查看所有终端进程
u:打印进程所有者信息
x:查看不属于任何终端的进程
-e 查看系统所有进程
-f 显示不包含资源使用率的相关信息
--sort 指定排序参数,例如--sort=-%mem 按照内存大小降序
ps aux 查看目前所有进程 ps -ef
列名 |
说明 |
USER |
进程拥有者 |
PID |
进程ID |
%CPU |
占用的 CPU 使用率 |
%MEM |
占用的内存使用率 |
VSZ |
占用的虚拟内存大小 |
RSS |
占用的常驻内存大小 |
TTY |
执行的终端编号 |
STAT |
该进程的状态* |
START |
进程开始时间 |
TIME |
CPU使用时间 |
COMMAND |
所执行的命令 |
STAT:
S 休眠
D 不可终止
R 正在运行
Z 僵尸进程
T 停止
s 子进程
< 高优先级
N 低优先级
+ 后台进程
I 锁定进程
I 多线程进程
ps aux --sort %cpu 按照cpu升序排序
ps aux --sort -%cpu 按照cpu降序排序
ps aux --sort %mem 按照内存升序排序
ps aux --sort rss 按照实际使用内存排序 有具体数值
我们还可以通过以下命令 来查看ssh这个服务的层级关系,按照父子进程来看
ps auxf | grep sshd
这里面f是:表达程序间的相互关系
我们甚至可以查看整个系统的进程树 (centos7系统不能只能看 需要安装这个功能 )
pstree
top命令用于显示process动态
-d: 改变显示的更新速度,或是在交互式指令列( interactive command)按 s
-c: 切换显示模式,共有两种模式,一是只显示程序的名称,另一种是显示完整的路径与名称
-S: 累积模式,会将己完成或消失的子行程 ( dead child process ) 的 CPU time 累积起来
-s: 安全模式,将交互式指令取消, 避免潜在的危机
-i: 不显示任何闲置 (idle) 或无用 (zombie) 的行程
-n: 更新的次数,完成后将会退出 top
-b: 显示模式,搭配 "n" 参数一起使用,可以用来将 top 的结果输出到文件内
实例:
显示进程信息,每个1秒钟刷新一次
[root@localhost ~]# top -d 1
显示完整命令
[root@localhost ~]# top -c
更新两次后终止更新显示
[root@localhost ~]# top -n 2
显示具体进程 7097
[root@localhost ~]# top -p 7097
KILL
kill命令用于删除执行中的程序或工作
kill可以将指定的信号送到程序,默认信号是15 杀死 可以杀死指定程序。
kill选项:
-l 查看所有的信号名称
-s 指定要送出信号是那个一个
程序的PID 就是具体指出是针对哪个程序
编号信号名作用1SIGHUP重新加载配置2SIGINT键盘中断^C3SIGQUIT键盘退出9SIGKILL强制终止15SIGTERM终止(正常结束),缺省信号18SIGCONT继续19SIGSTOP停止20SIGTSTP暂停^Zkill 5011 正常终止 进程5011
kill -9 5011 强制终止进程5011
pkill :用于杀死一个进程,但是与kill不同的是,他会杀死指定名字的所有进程
pkill sshd 结束sshd所有进程
pkill -u user1 杀死用户user1 所有进程
pkill -t pts/2 杀死pts/2 上所有进程
查看远程登录用户,并且踢出用户
[root@rhel8-server ~]# w
11:51:20 up 35 min, 4 users, load average: 0.04, 0.11, 0.22
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root tty2 tty2 11:15 35:41 1:54 0.22s /usr/libexec/tracker-miner-fs
root pts/0 192.168.40.1 11:17 0.00s 0.08s 0.01s w
root pts/1 192.168.40.1 11:35 2:43 0.07s 0.07s -bash
redhat pts/3 192.168.40.1 11:51 4.00s 0.03s 0.03s -bash
发现redhat用户正在通过ip地址192.168.40.1登录 我们可以把这个用户踢下线
pkill -u redhat //执行pkill指令
用户下线
nice命令可以用来修改程序的优先级别,如果未指定程序,则会显示目前程序的优先级别
默认nice值为0 范围是 -20 到19 nice数值越小表示程序会越优先处理 在系统运行缓慢的时候,nice值越小,进程会越优先执行,处理级别越高。
Linux进程调度及多任务
每个CPU(或CPU核心)在一个时间点上只能处理一个进程,通过时间片技术,Linux实际能够运行的进程(和线程数)可以超出实际可用的CPU及核心数量。Linux内核进程调度程序将多个进程在CPU核心上快速切换,从而给用户多个进程在同时运行的假象。
通过调整程序在计算机中的优先级别,可以让程序在时间片中占有更长的时间,从而获得更快的处理速度
更改优先级:
nice -n 5 vim /etc/passwd 在进程启动时,附加一个nice值
renice -10 3174(PID) 在进程启用之后
只有root才可以降低nice值
ps aux 找到该进程
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南