linux-进程管理
1. 在linux中,每个执行程序都称为一个进程,每个进程分配一个id号,称为pid。
2. 每个进程都可能以两种方式存在的,前台和后台。
3. 程序启动分配进程,占用内存空间。
进程管理
ps
-e 显示所有进程
-f 以全格式显示
-a 显示当前终端的所有进程
-u 以用户的格式显示进程信息
-x 显示后台进程运行的参数
-o 以用户定义的格式显示
ps axo pid,comm,pcpu //查看进程的PID、名称以及CPU 占用率 # ps axo pid,comm,pcpu --sort=pcpu // sort 参数以pcpu 为对象对 ]# ps axo pid,comm,pcpu --sort=pcpu |tail -n 10 7 rcu_sched 0.3 4855 coredns 0.5 79883 kube-scheduler 0.6 1262 containerd 0.7 1128 dockerd 3.0 2849 etcd 3.7 79865 kube-controller 3.7 4507 calico-node 4.0 11697 kubelet 5.9 2959 kube-apiserver 11.0
]# ps -aux |head -5 USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.1 191584 5376 ? Ss May11 4:28 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0.0 0.0 0 0 ? S May11 0:00 [kthreadd] root 3 0.0 0.0 0 0 ? S May11 0:59 [ksoftirqd/0] root 5 0.0 0.0 0 0 ? S< May11 0:00 [kworker/0:0H]
RSS: 进程占用物理内存大小,KB
VSZ: 进程占用虚拟内存大小,KB
TTY: 终端名称
STAT: 进程运行状态
S :休眠, R: 运行,s: 表示该进程是会话的先导进程, N:表示进程拥有比普通优先级更低的优先级, D:短暂等待,Z:僵死进程(程序退出,内存未释放), T: 被跟踪或停止
TIME :占用CPU时间总共时间
COMMAND:进程启动参数
父子进程
父进程可以创建子进程,多进程模式。比如:nginx可以启动多个worker进程。
]# ps -ef |head -5 UID PID PPID C STIME TTY TIME CMD root 1 0 0 May11 ? 00:04:29 /usr/lib/systemd/systemd --switched-root --system --deserialize 22 root 2 0 0 May11 ? 00:00:00 [kthreadd] root 3 2 0 May11 ? 00:00:59 [ksoftirqd/0] root 5 2 0 May11 ? 00:00:00 [kworker/0:0H]
PID:当前进程
PPID:父进程
终止进程 kill 和 killall
-9 强迫进程立即停止
示例
1、踢掉某个非法登录的用户
ps -aux |grep sshd # 找到非法用户远程的sshd pid,使用kill pid
2、终止多个gedit
killall nginx
3、强制杀掉一个终端
kill -9 pid
pstree:查看进程关系
]# pstree -p systemd(1)─┬─ModemManager(690)─┬─{ModemManager}(708) │ └─{ModemManager}(725) ├─NetworkManager(728)─┬─{NetworkManager}(802) │ └─{NetworkManager}(806)
-p 显示进程号
-u 显示进程启动用户
-a 显示每个程序的完整指令,包含路径,参数或是常驻服务的标示。
动态监控进程
top
参数:
d:s,指定top刷新时间,默认3s。
i:不显示限制或僵死进程。
p:通过指定监控进程id来仅仅监控某个进程的状态。
M:以内存使用率排序
N:以PID排序
P:以CPU使用率进行排序
u:输入用户名,监控某个用户启动的进程。
k:终止指定的进程。
top - 23:57:57 up 3 days, 16:01, 2 users, load average: 0.45, 0.73, 0.71 Tasks: 226 total, 2 running, 224 sleeping, 0 stopped, 0 zombie %Cpu(s): 5.1 us, 3.4 sy, 0.0 ni, 90.8 id, 0.0 wa, 0.0 hi, 0.7 si, 0.0 st KiB Mem : 4028736 total, 922240 free, 1564960 used, 1541536 buff/cache KiB Swap: 0 total, 0 free, 0 used. 2201124 avail Mem
Tasks: 任务数量,进程总数 zombie: 僵死进程,需要手动释放
%Cpu(s): 5.1 us(用户占用), 3.4 sy(系统占用), 0.0 ni, 90.8 id(空闲), 0.0 wa, 0.0 hi, 0.7 si, 0.0 st
越学越感到自己的无知
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 如何调用 DeepSeek 的自然语言处理 API 接口并集成到在线客服系统