码迷,mamicode.com
首页 > 系统相关 > 详细

进程管理

时间:2019-07-22 21:25:46      阅读:154      评论:0      收藏:0      [点我收藏+]

标签:etc1   内核   RoCE   share   pgrep   查看进程   多任务   分配   反转   

一、名词解释

1、什么是进程(what is process)?

答:进程是程序运行的过程,伴有动态,生命和运行状态。(组成:1.已分配内存的地址空间  2.安全属性,包括所有权凭据和特权  3.程序代码的一个或多个执行线程  4.进程状态。通俗来说即进程会有:进程标识PID和PPID;状态;disk IO:需要分配;mem:需要分配;cpu:需要分配;net:需要分配。)

2、什么是进程的生命周期(process life cycle)?

答:父进程复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程ID(PID),满足跟踪安全性之需。PID和父进程PPID是子进程环境的元素,任何进程都可以创建子进程。子进程继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程可能exec自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时,子进程已经关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

3、进程状态(process states)?

答:在多任务处理操作系统中,每个CPU(或核心)在一个时间点上只能处理一个进程。在进程运行时,它对CPU 时间和资源分配的要求会不断变化,从而为进程分配一个状态,它随着环境要求而改变。
有runing、sleeping、stopped、zombie(僵尸进程)四种状态。

二、查看进程

1、静态查看进程ps

  1.1 静态查看进程 ps
[root@tianyun ~]# ps aux |less
USER        PID    %CPU   %MEM    VSZ        RSS    TTY      STAT    START     TIME    COMMAND
root             1        0.0           0.6       128096    6708     ?         Ss         16:20       0:01     /usr/lib/systemd/systemd
————————————————————————————
USER: 运行进程的用户
PID: 进程ID
%CPU: CPU占用率
%MEM: 内存占用率
VSZ: 占用虚拟内存
RSS: 占用实际内存
TTY: 进程运行的终端   //可以开启vim 查询到终端名称
STAT: 进程状态 man ps (/STATE)
———————————————————————————
R 运行
S 可中断睡眠 Sleep,(休眠中, 受阻, 在等待某个条件的形成或接受到信号)
D 不可中断睡眠,(收到信号不唤醒和不可运行, 进程必须等待直到有中断发生)
T 停止的进程
Z 僵尸进程
X 死掉的进程
————————————————————————————
[了解]
Ss s进程的领导者,父进程
S< <优先级较高的进程
SN N优先级较低的进程
R+ +表示是前台的进程组
Sl 以线程的方式运行
————————————————————————————
START: 进程的启动时间  //可以开启vim ,在用date验证。
TIME: 进程占用CPU的总时间
COMMAND: 进程文件,进程名

1.2        ps a  显示现行终端机下的所有程序

             ps u 以用户为主的格式来显示程序状态

             ps x 不以终端机来区分

1.3 按占比升降序排列
  示例1:[root@tianyun ~]# ps aux --sort %cpu |less      //--sort排序,升序(小到大)
  示例2:[root@tianyun ~]# ps aux --sort -%cpu |less     //-%CPU降序(-表示降序)
  示例3:[root@tianyun ~]# ps aux --sort rss |less    //以驻留内存升序排序
  示例4:[root@tianyun ~]# ps aux --sort -rss |less 

1.4 自定义显示字段
  [root@tianyun ~]# ps axo user,pid,ppid,%mem,command   //xo指定列显示
  [root@tianyun ~]# ps axo user,pid,ppid,%mem,command |grep httpd
  root 8310 1 0.1 /usr/sbin/httpd
  apache 8311 8310 0.0 /usr/sbin/httpd
  apache 8312 8310 0.0 /usr/sbin/httpd
  apache 8313 8310 0.0 /usr/sbin/httpd
  apache 8314 8310 0.0 /usr/sbin/httpd
  apache 8315 8310 0.0 /usr/sbin/httpd
  apache 8316 8310 0.0 /usr/sbin/httpd
  apache 8318 8310 0.0 /usr/sbin/httpd
  apache 8319 8310 0.0 /usr/sbin/httpd
  root 9236 6798 0.0 grep httpd
-----------------------------------------------------------
[root@tianyun ~]# ps axo user,pid,ppid,%mem,%cpu,command --sort -%cpu |less    //针对某些程序,显示某些列,再进行排序。简洁明了

1.5 查看指定进程的PID,四种方法(该处指定进程为sshd)
  第一种。cat
[root@localhost ~]$ cat /run/sshd.pid
830
  第二种。ps
[root@localhost ~]# ps aux |grep sshd
root 10180 0.0 0.0 7224 1024 ? Ss 16:00 0:00 /usr/sbin/sshd

  第三种。pgrep
[root@localhost ~]# pgrep -l sshd
10180 sshd
[root@localhost ~]# pgrep sshd
10180
  第四种。pidof
[root@localhost ~]# pidof sshd
10180

1.6 查看进程树

  [root@localhost ~]# pstree

2.1 动态查看ps进程

2.1.1 上半部分:
第一部分:系统整体统计信息
top - 11:45:08 up 18:54,  4 users,  load average: 0.05, 0.05, 0.05 

//当前时间;系统运行时间,时:分;当前登录用户数;系统负载,即任务队列的平均长度。三个数值分别为1分钟 、5分钟 、15分钟
Tasks: 176 total,   1 running, 175 sleeping,   0 stopped,   0 zombie  %Cpu(s):  0.0 us,  0.3 sy,  0.0 ni, 99.7 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

total 进程总数   running 正在运行的进程数    sleeping 睡眠的进程数    stopped 停止的进程数    zombie 僵尸进程数
Cpu(s):
 us 用户空间占用CPU百分比
 sy 内核空间占用CPU百分比
 ni 用户进程空间内改变过优先级的进程占用CPU百分比
 id 空闲CPU百分比
 wa 等待输入输出的CPU时间百分比
 hi:硬件CPU中断占用百分比
 si:软中断占用百分比
 st:虚拟机占用百分比
KiB Mem :  3865520 total,  1100000 free,   580268 used,  2185252 buff/cache
KiB Swap:  4063228 total,  4063228 free,        0 used.  2917828 avail Mem (avail Mem表示可用于进程下一次分配的物理内存数量,这个大小一般比free大一点,因为除了free的空间外,系统还能立即释放出一些空间来。)

负载加权值解释:小于1正常
load average: 0.86, 0.56, 0.78 系统最近 1分钟,5分钟,15分钟平均负载

关于buffers的小实验:做个小实验,观察缓存的作用。
  time cp -rf /etc /tmp/etc1
  time cp -rf /etc /tmp/etc1
  注意观察两次复制的时间,大大缩小,是因第二次的数据已经到了buffer了。在top的buffer/cache会有体现。

2.1.2下半部分:

字段介绍

虚拟内存(VIRT):virtual memory usage :(1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量需要这些内存,但并没有占满。)

常驻内存(RES):resident memory usage :(1、进程当前使用的内存大小 2、包含其他进程的共享 3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反用了多少内存)。

共享内存(SHR):shared memory:(1、除了自身进程的共享内存,也包括其他进程的共享内存  2、计算某个进程所占的物理内存大小公式:RES – SHR

3.1  进程信息
命令
h|?帮助
M 按内存的使用排序
P 按CPU使用排序
N 以PID的大小排序
R 对排序进行反转
f 自定义显示字段
1 显示所有CPU的负载
< 向前
> 向后
z 彩色,Z设置彩色,使用数字调整
W 保存top环境设置
 

4.1信号种类

kill -9 pid   强制杀死

kill -1 pid  重新加载配置,进程不会死

kill -15 pid   正常结束

kill -18 pid 继续

kill -19 pid 停止

 

四、nice优先级设置(人为可设置nice范围-20到19)

法一 :nice -n -5 sleep 6000 &

发二  :top -d 1 -p pid

按r键 //调整进程的优先级(Nice Level) (-20高) ---0--- (19低)(直接回车)
回车 //确认该程序。
-20
回车  //确认修改nice值。
如果直接使用top,使用R调整nice值,先输入PID,再输入nice值即可。

法三:renice -20 pid

 

进程管理

标签:etc1   内核   RoCE   share   pgrep   查看进程   多任务   分配   反转   

原文地址:https://www.cnblogs.com/zjz20/p/11228463.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!