18 进程管理
一、基本介绍
1.在 LINUX 中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号
2.每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程
3.每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行
4.一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束
二、显示系统执行的进程
1. 说明
查看进行使用的指令是 ps ,一般来说使用的参数是 ps -aux
,ps -ef
,正常与grep
连用
2. 指令详解
BSD 风格 详解
user 用户名称
pid 进程号
%cpu 进程占用cpu百分比
%%mem 进程占用物理内存的百分比
vsz 进程占用虚拟内存的大小
rss 进程占用物理内存的大小
tty 终端名称(后台则为?)
stat 进程状态
S:睡眠
s:会话的先导进程
N:进程拥有比普通优先级更低的优先级
R:正在运行
D:短期等待
Z:僵尸进程
T:被跟踪或者被停止
start 进程启动时间
time 使用cpu总时间
command 启动进程所用的命令和参数,如果过长会被截断显示
systen V 风格详解
uid 用户id
pid 进程id
ppid 父进程id
C 进程占cpu百分比
stime 进程启动时间
tty 终端名称(后台则为?)
cmd 启动进程所用的命令和参数
例子:
1.查看sshd进程的父进程id是多少
ps -ef | grep sshd
三、终止进程kill和killall
说明
若是某个进程执行一半需要停止时,或是已消了很大的系统资源时,此时可以考虑停止该进程。
基本语法
kill 进程号
-9 强迫进程立即停止
killall 进程名称
案例
1.踢掉某个非法登录用户
kill 进程号
2.终止远程登录服务
(有可能我的系统目前在维护,不希望任何人通过远程登录到我的服务器上,可以暂时的关掉sshd服务)
usr/sbin/sshd 对应的进程号 --kill掉
查看sshd服务的状态:service sshd status
显示:已停
3.重启sshd服务
service sshd start
3.终止多个 gedit 编辑器 【killall, 通过进程名称来终止进程】
kiall gedit
4.强制杀掉一个终端
先查看终端程序
ps -ef | grep bash
kill 进程号 # 返现没有用
# 所以需要强制终止
kill -9 进程号
四、查看进程树 pstree
以树的方式去显示当前启动的所有进程
pstree [选项]
-p 查看进程pid
-u 查看进程所属用户
# 也可以单独按用户名查找
pstree -u | grep wukong
五、动态进程监控
1. 说明
top与 ps 命令很相似。它们都用来显示正在执行的进程。Top 与 ps 最大的不同之处,在于
top 在执行一段时间可以更新正在运行的的进程
类似于windows的任务管理器
2. 基本语法
top [选项]
-d 指定每隔几秒更新,默认3秒
-i 不显示任何闲置或者僵尸进程
-p id号 监听指定进程
交互操作:
P 以cpu使用率排序,默认就这个
M 以内存使用率排序
N 以pid排序
u 监听具体用户
k 终止指定进程
q 退出top