linux系统的进程
进程管理
1.1 程序与进程的关系
程序 -> 软件
-
程序是保存在尾部存储介质(如硬盘,光盘)等中的可执行静态
-
静态保存代码
进程:
-
加载到内存中的程序代码(计算机程序,由cup运行)
-
动态执行的代码
-
父子进程:每一个进程可以创建爱你一个或多个进程
-
systemd为系统请懂得第一个程序:pid号为1
-
守护进程:常驻内存,与终端无关的进程(自己在系统后台执行)
-
用户进程:通过终端执行加载的程序
1.2 ps命令:
-
查看静态的进程统计量
-
linux上进程有5种状态:
-
运行(正在运行或在运行队列中等待)
-
中断(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
-
不可中断(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
-
僵死(进程已终止, 但进程描述符存在, 直到父进程调用wait4()系统调用后释放)
-
停止(进程收到SIGSTOP, SIGSTP, SIGTIN, SIGTOU信号后停止运行运行)
-
-
ps工具标识进程的5种状态码:
D 不可中断 uninterruptible sleep (usually IO)
R 运行 runnable (on run queue)
S 中断 sleeping
T 停止 traced or stopped
Z 僵死 a defunct (”zombie”) process
-
参数
a 显示所有进程-a 显示同一终端下的所有程序
-A 显示所有进程
c 显示进程的真实名称
-N 反向选择
-e 等于“-A”
e 显示环境变量
f 显示程序间的关系
-H 显示树状结构
r 显示当前终端的进程
T 显示当前终端的所有程序
u 指定用户的所有进程
-au 显示较详细的资讯
-aux 显示所有包含其他使用者的行程
-C<命令> 列出指定命令的状况
--lines<行数> 每页显示的行数
--width<字符数> 每页显示的字符数
--help 显示帮助信息
--version 显示版本显示
-
ps aux #查看所有进程
-
user:,用户名字
-
pid:pid号
-
%cup:cup使用率
-
%mem:内存使用率
-
vsz:虚拟内存
-
Rss: 常驻物理内存
-
tty:终端 “?”表示为之活着不需要终端
-
stat:状态
S:可中断的睡眠
R:就绪或者运行的状态
Z:僵死状态
<:高优先级进程
+:前台进程组中的进程 -
start:使用时间
-
time:运行时间
-
command:命令
-
-
ps -elf #比aux多一个ppid号和一个ni:启动时候的优先级负数
-
ps aux | grep "sshd" #查看sshd进程是否活着
最后一个进程是查询sshd时的进程,前面两个是运行的进程 -
ps -C sshd --no-headers #查询进程名称且检查是否存活
1.3 top命令:
-
查看进程动态信息:以当前终端全屏交互式界面显示,每三秒刷新一次
-
第一组,第一行:表示全局
top - 03:57:48 :当前系统时间 24 min :表示系统运行时间 3 users :表示当前登录3个用户 load awerage : 系统平均负载(1,5,15)
`` -
第二组,第二行 :系统任务Tasks信息
total:总进程数;running:正在运行的进程数;sleeping:休眠的进程数;stopped:中止的进程数;zomibe:僵死无响应的进程数 -
第三组,第三行:CPU占用信息
us:用户占用;sy:内核占用;ni:优先级占用;id:空闲CPU; -
第四组,第四行:内存占用mem信息:total
used总交换空间;free:已用交换空间;cached:缓存空间 -
参数:
-d:指定刷新间隔时间、
-b: 一批量处理模式操作(非交互)
-n:指定循环显示次数
-u:指定用户名
-p: 指定进程号 -
eg:
top -d 1 #隔离一秒刷新 top -b -n2 #已批量的方式循环显示2两次 top -u 用户名 #指定用户进程 top -p 进程号(pid号)
-
常用交互命令
K:终止一个进程。系统将提示用户输入需要终止的进程PID,以及需要发送给该进程什么样的信号。一般的终止进程可以使用15信号;如果不能正常结束那就使用信号9强制结束该进程。默认值是信号 15。在安全模式中此命令被屏蔽。i:忽略闲置和僵死进程。这是一个开关式命令。
q:退出程序
r:重新安排一个进程的优先级别。系统提示用户输入需要改变的进程PID以及需要设置的进程优先级值。输入一个正值将使优先级降低,反之则可以使该进程拥有更高的优先权。默认值是10。
S:切换到累计模式。
s:改变两次刷新之间的延迟时间。系统将提示用户输入新的时间,单位为s。如果有小数,就换算成m s。输入0值则系统将不断刷新,默认值是5 s。需要注意的是如果设置太小的时间,很可能会引起不断刷新,从而根本来不及看清显示的情况,而且系统负载也会大大增加。
f或者F:从当前显示中添加或者删除项目。
o或者O:改变显示项目的顺序
l:切换显示平均负载和启动时间信息。
m:切换显示内存信息。
t:切换显示进程和CPU状态信息。
c:切换显示命令名称和完整命令行。
M:根据驻留内存大小进行排序。
P:根据CPU使用百分比大小进行排序。
T:根据时间/累计时间进行排序。
W:将当前设置写入~/.toprc文件中。
1.3. pstree命令:
- 用ASCII字符显示进程结构,主要看父子进程关系
- -p:列出对应的pid号
- -u:列出对应的用户名
- -a: 列出完整的用户信息
1.4. 终止进程:
-
Ctrl+c
-
kill命令:-9 ipd号:强制杀死
-l 信号,若果不加信号的编号参数,则使用“-l”参数会列出全部的信号名称
-a 当处理当前进程时,不限制命令名和进程号的对应关系
-p 指定kill 命令只打印相关进程的进程号,而不发送任何信号
-s 指定发送信号 -
killall命令
-Z 只杀死拥有scontext 的进程
-e 要求匹配进程名称
-I 忽略小写
-g 杀死进程组而不是进程
-i 交互模式,杀死进程前先询问用户
-l 列出所有的已知信号名称
-q 不输出警告信息
-s 发送指定的信号
-v 报告信号是否成功发送
-w 等待进程死亡
--help 显示帮助信息
--version 显示版本显示
-u 指定用户 -
pkill命令:根据指定条件终止
pkill 和killall 应用方法差不多,也是直接杀死运行中的程式;如果你想杀掉单个进程,请用kill 来杀掉。