进程管理


进程管理:正在运行的程序管理;

进程管理

进程简介:

进程:进程是已启动的可执行程序的运行实例

程序:具有执行代码和执行权限的文本文件;

进程由以下组成部分:

  • 一个文件;
  • 被配内存的地址空间;
  • 有权限限制;
  • 程序代码的一个或多个副本(也叫执行线程);
  • 拥有状态

进程拥有的资源权限:

  • 内存
  • CPU(分片:1s分成1000份,200份浏览器,200粉word。。。)
  • 网络
  • 名字PID(process   identi进程的身份证号)
  • 权限
  • 自我复制
  • 磁盘空间
  • 磁盘IO(输入和输出)
  • ......

进程的生命周期

由系统程序,fork出来的子程序。
具有一定的父资源(权利,内存空间,PID);
运行完毕,退出程序;

进程状态

R:run:运行
T:stop:停
Z:zombie:退出
S:sleep:休眠

进程管理process

目标:

  • 了解进程的相关信息
  • PID,PPID
  • 当前的进程状态
  • 内存的分配情况
  • CPU和已花费的实际时间
  • 用户UID,它决定进程的特权
  • 进程名称

静态查看进程ps

ps aux命令:查看进程管理器
ps aux | head -2
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND root 1 0.0 0.3 193580 6716 ? Ss 16:07 0:01 /usr/lib/systemd/systemd --switched-root --system --deserialize 21
USER:运行进程的用户;
PID:进程ID;(编号,不可重复)
%CPU:CPU占用率;
%MEM:内存占用率
VSZ:占用虚拟内存
RSS:占用实际内存
TTY:进程运行的终端类型
STAY:进程状态
START:进程的启动时间
TIME:进程占用CPU的总时间
COMMAND:进程文件,进程名
命令参数声是
ps  a:显示现行终端机下的所有程序
ps  u:以用户为主的格式来显示程序状况
ps  x:不以终端机来区分;

进程排序

ps aux   --sort  (-)列名:进程排序(降)升序

eg:
[root@localhost 001]# ps aux --sort -%cpu      降序排列进程cpu
[root@localhost 001]# ps aux --sort  %cpu      升序排列进程cpu

进程的父子关系

ps   -ef  查看进程的父子关系
root      15428  14967  0 11:30 pts/1    00:00:00 ps -ef
[root@localhost 001]# ps -ef | head -1
UID         PID   PPID  C STIME TTY          TIME CMD
PID:程序的名字
PPID :父系程序的名字
查看进程的父子关系,看PID和PPID。

自定义显示字段

ps  axo    想显示的列名
[root@localhost 001]# ps axo user,pid,ppid        |head -3
USER        PID   PPID
root          1      0
root          2      0

动态查看进程top

Q键退出去;

top - 23:17:52 up 46 min,  2 users,  load average: 0.00, 0.01, 0.05
Tasks: 236 total,   2 running, 234 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.4 sy,  0.0 ni, 99.2 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st
KiB Mem :  1867292 total,   590728 free,   583916 used,   692648 buff/cache
KiB Swap:  4194300 total,  4194300 free,        0 used.  1065592 avail Mem 
系统的性能信息
第一行:top - 23:17:52  up 46 min,  2 users,  load average: 0.00, 0.01, 0.05
      
   程序名-系统时间 运行时间 登录用户数 CPU负载 1分钟 5 15

程序的名称和时间
第二行:Tasks: 236 total, 2 running, 234 sleeping, 0 stopped, 0 zombie
             总进程数         运行数       睡眠数            停止数       僵死数  
进程的数量
第三行:
%Cpu(s): 0.3 us, 0.4 sy, 0.0 ni, 99.2 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st

CPU使用占比 u$用户 sy系统 ni优先级 id空闲 wa等待 hi硬件 si软件 st虚拟机
CPU占比
第四行:KiB Mem :  1867292 total,   590728 free,   583916 used,   692648 buff/cache

物理内存K total总共4G free空闲1G userd使用500M cache缓存硬盘内容2G
存储方面的占比

第五行:
KiB Swap: 4194300 total, 4194300 free, 0 used. 1065592 avail Mem


存储方面的占比(交换分区)

下半部分

   PID        USER    PR  NI    VIRT RES SHR   S    %CPU %MEM     TIME+ COMMAND   
进程号 启动的用户 优先级 内存 状态 cpu占比 运行时间

其它

h|?帮助
M按内存的使用排序
P按CPU使用排序
N以PID的大小排序

<向前
>向后
z彩色
Z设置彩色,使数字对齐

eg:top -d n:计算机n秒刷新一次
top -d n -p 10126 查看指定进程的动态信息

使用信号控制进程

信号种类

给进程发送信号(kill -l列出所有支持的信号)
kill  -n
编号  信息号
1.SIGHUP  重新加载配置
2.SI1GINT   键盘中断CTRL+C
3.SIGQUIT  键盘退出CTRL+\,类似SIGINT
9.SIGKILL   强制允许,无条件
15.SIGTERM  终止(正常结束),缺省信号
18.SIGCONT  继续
19.SIGSTOP  暂停
20.SIGTSTP   键盘暂停ctrl+z
eg:
信号9.15
kill    -n    pid号

会查看,管理,控制。(ps,top,kill)

进程优先级nice 

简介:Linux进程调度及多任务
每个CPU在一个时间点上只能处理一个进程,通过时间片技术,来同时运行多个程序。

优先级范围和特性

系统中二种优先级
在top中显示的优先级有二个,PR值和nice值。
NI:实际nice值。
PR(+20):将nice级别显示位映射到更大优先级队列,-20映射到0,+19映射到+39-20——+19

优先级特性: nice值越大:表示优先级越低; nice值越小,表示优先级越高;

查看进程的nice级别

[root@localhost 001]# ps axo pid,command,nice --sort=-nice 
ps  axo指定显示的列;
第一列:ID
第二列:程序名
第三列:优先级

启动具有不同nice级别的进程

(每个进程在启动时,都会进程父进程,优先级为0;)

sleep   +n  倒计时程序;启动让计算机延后n秒

eg:
[root@localhost 001]# sleep  9 &
[1] 15243
[root@localhost 001]#

更改现有进程的nice级别

创建一个睡眠程序
[root@localhost 001]# sleep 00 &                                      #把系统丢到后台运行
[1] 15511
[1]+  完成                  sleep 00
[root@localhost 001]# ps axo pid,command,nice | grep sleep
 15281 sleep 999                    -5
 15397 sleep 7000                    0
 15471 sleep 60                      0
 15516 grep --color=auto sleep       0
[root@localhost 001]# renice -20 15281
15281 (进程 ID) 旧优先级为 -5,新优先级为 -20
[root@localhost 001]# ps axo pid,command,nice | grep sleep
 15281 sleep 999                   -20
 15397 sleep 7000                    0
 15539 sleep 60                      0
 15541 grep --color=auto sleep       0

或者运用top命令来查看优先级为多少

[root@localhost 001]#
[root@localhost 001]# top -d 1 -p 15281

 

作业控制jobs

作业控制是一个命令行功能,也叫后台运行。
fg:foreground:前台进程:是终端中运行的命令,占领终端。
bg:background:后台进程:没有控制终端,它不需要终端的交互。看不见,但是在运行;
后台程序控制示例:
[root@localhost 001]# sleep 9999
^C
[root@localhost 001]#

&运行后台程序(把程序丢到后台执行)
[root@localhost 001]# sleep 388 &
[1] 55810
[root@localhost 001]# 

ps 查询所有程序
[root@localhost 001]# ps aux | grep sleep
root      15397  0.0  0.0 107896   608 ?        S    21:05   0:00 sleep 7000
root      55810  0.0  0.0 107896   608 pts/2    S    22:07   0:00 sleep 388
root      55824  0.0  0.0 107896   608 ?        S    22:08   0:00 sleep 60
root      55827  0.0  0.0 112664   956 pts/2    S+   22:08   0:00 grep --color=auto sleep
[root@localhost 001]# 

jobs查看后台进程
[root@localhost 001]# jobs
[1]+  运行中               sleep 388 &
[root@localhost 001]# 

调动后台程序至前台
[root@localhost 001]# fg 1
sleep 388
^Z
[1]+  已停止               sleep 388

消灭后台进程kill  %n
[root@localhost 001]# kill %1

虚拟文件系统proc

简介:虚拟文件系统:采集服务器自身内核,进程运行的状态信息。
CPU:cat /proc/cpuinfo 
内存less /proc/cmdline
内核:cat /proc/cmdline