进程的定义
已经启动的可执行的的文件
进程是已启动的可执行程序的运行实例,进程有以下组成部分:
• 已分配内存的地址空间;
• 安全属性,包括所有权凭据和特权;
• 程序代码的一个或多个执行线程;
• 进程状态。
程序: 二进制文件,静态 /usr/bin/passwd ,/usr/sbin/useradd
进程: 是程序运行的过程, 动态,有生命周期及运行状态。
进程管理
进程分类
R(TAKS_RUNNING) //可执行态(running,ready)
S(TASK_INTRRUPTABLE) //可唤醒休眠
D(TASK_UNINTRRUPTABLE) //不可唤醒休眠
T(TASK_STOP) //停状态
Z(EXIT_ZOMBIE) //僵死态
静态查看进程
ps aux
pidof 进程 //查看进程pid
ps aux |grep 进程 //查询进程
- USER: 运行进程的用户
- PID: 进程ID
- %CPU: CPU占用率
- %MEM: 内存占用率
- VSZ: 占用虚拟内存
- RSS: 占用实际内存
- TTY: 进程运行的终端
- STAT: 进程状态
- START: 进程的启动时间
- TIME: 进程占用CPU的总时间
- COMMAND: 进程文件,进程名
进程排序
ps aux --sort %cpu
ps aux --sort -%cpu //减号是降序
进程的父子关系
ps -ef PID和PPID为父子关系
PID和PPID为父子关系
自定义显示字段
ps axo 查找字段,查找字段,查找字段
动态进程查看top
top
动态查看进程 top,像windows的任务管理器
[root@localhost ~]# top //回车,立刻刷新。按z彩色显示,按F,通过光标设置列的顺序。
[root@localhost ~]# top -d 1 //每1秒刷新。
[root@localhost ~]# top -d 1 -p 10126 //查看指定进程的动态信息
[root@localhost ~]# top -d 1 -p 10126,1 //查看10126和1号进程
top内部常用指令
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
< 向前
> 向后
z 彩色,Z设置彩色,使用数字调整
使用使用信号控制进程kill
kill -l
kill 进程信号 pid
killall 进程信号 进程名字
pkill 进程信号 进程条件
这里只解释常用
- 1)SIGHUP 重新加载配置
- 2)SIGINT 键盘中断Ctrl+C
- 3)SIGQUIT 键盘退出Ctrl+\,类似SIGINT
- 9)SIGKILL 强制终止,无条件
- 15)SIGTERM 终止(正常结束),缺省信号
- 18)SIGCONT 继续
- 19)SIGSTOP 暂停
- 20)SIGTSTP 键盘暂停Ctrl+Z
示例
1 创建2个文件,查看终端号。
[root@localhost ~]# touch file1 file2
2 通过一个终端,打开一个vim
[root@localhost ~]# vim file1
3 通过另一个终端,打开一个vim
[root@localhost ~]# vim file2
3 通过另一个终端,查询两个进程。
[root@localhost ~]# ps aux |grep vim
root 4362 0.0 0.2 11104 2888 pts/1 S+ 23:02 0:00 vim file1
root 4363 0.1 0.2 11068 2948 pts/2 S+ 23:02 0:00 vim file2
4 发送信号15 和信号9 ,观察两个终端程序状态。
[root@localhost ~]# kill -15 4362
[root@localhost ~]# kill -9 4363
观察两个终端,一个正常终止,一个非法杀死。
进程优先级nice
Linux 进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。
如何确定任务的重要性?系统有一个对进程优先级的排序。
“优先级” 范围: 0–139
内核自控优先级范围: 0-99
用户可控优先级: 100-139
nice -20~19
nice
renice -n -5 43331 //更改优先级
nice -n -5 vim & //指定优先级打开进程
作业控制
jobs & 后台运行程序
jobs 查询后台
kill %1 停止后台进程
nlnlznl