linux 进程管理

linux进程:

内核的功用: 进程管理,文件系统,网络功能,内存管理,驱动程序,安全功能。

1、在用户空间里运行的进程,就是用户进程,所属的状态为用户态

 2、在内核空间里运行的进程,就是系统进程,所属的状态为内核态

process是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源(内存、CPU)分配和调度的一个独立单位

1、进程控制块(PCB)

  是系统感知进程存在的唯一凭证,是数据结构,占用内存空间。

2、进程上下文

  1、上文:已执行过的进程指令和数据在相关寄存器和堆栈中的内容称为上文。

  2、正文:正在执行的指令和数据在相关寄存器和堆栈中的内容。

  3、下文:待执行的指令和数据在相关寄存器和堆栈中的内容。

进程上下文切换:

  指多任务系统中,CPU的控制权由运行任务,转移到另外一个就绪任务时所发生的事件;当前运行任务转为就绪(或者挂起、删除)状态,另一个被选定的就绪任务成为当前任务

一个进程包含多个属性参数,这些参数决定了进程被处理的先后顺序、能够访问的资源等

常用参数:

PID:进程的ID。

PPID:父进程的ID。应用程序只能通过克隆自己来产生新的进程。子进程应该是父进程的克隆体。

UID和EUID:真实和有效的用户ID。

GID和EGID:真实和有效的组ID。

谦让度和优先级:进程的优先级决定了受到CPU‘优待的程度,优先级越高的进程能够更早的被处理,并获得更多的处理器时间。绝大多数下进程何时被处理是内核的事,用户不需要 插手,用户可以通过设置进程的‘谦让度’来影响内核的想法。谦让度与优先级是相反的,高谦让度意味着低优先级。用户可以吧它谦让度设置低一些,让进程更早的被处理。

监视进程:ps命令

   最常用的方法是ps aux,然后再通过管道使用grep命令过滤查找特定的进程,然后再对特定的进程进行操作。
     ps aux | grep program_filter_word,ps -ef |grep tomcat

ps aux命令用于显示当前系统运行的所有进程的信息。    

[songshichao@song ~]$ ps aux  
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  1.1  0.4 128164  6820 ?        Ss   21:51   0:03 /usr/lib/systemd/syst
root          2  0.0  0.0      0     0 ?        S    21:51   0:00 [kthreadd]

...... 

 root          648 0.0 0.0 84500    888 ?        S<sl 21:51 0:00 /sbin/audispd
 root          650 0.0 0.0 24052    900 ?        S< 21:51 0:00 /usr/sbin/sedispatch
 libstor+      672 0.0 0.0 8532     804 ?        Ss 21:51 0:00 /usr/bin/lsmd -d
 dbus          673 0.3 0.2 36388    3352 ?       Ssl 21:51 0:00 /bin/dbus-daemon --sy

  USER :进程创建者的用户名。

  PID :进程的ID。

  %CPU:进程占用CPU的百分比。

  %MEM:进程占用内存的百分比。

  VSZ:进程占用的虚拟内存的大小。

  RSS:内存中的也的数量(页是管理内存的单位,在pc通常为4k)

  STAT:进程状态,常用字母如下:

            R:正在运行 ;D:睡眠中(不可被唤醒,通常是在等待I/O设备);S:睡眠中(可以被唤醒);T:停止;Z:僵进程(已经结束但没有释放系统资源)

              常用附加标志:<:进程拥有比普通优先级高的优先级;N:进程拥有比普通优先级低的优先级;L:有些页面被锁在内存中;s:会话的先导程序;+:前台进程;l:多线程进程;

  ATART:线程启动时间。

  TIME:进程已占用的CPU时间。

  COMMAND:命令和参数。   

ps lax 命令提供父进程(PPID)和谦让度(NI)

[songshichao@song ~]$ ps lax
F   UID    PID   PPID PRI  NI    VSZ   RSS WCHAN  STAT TTY        TIME COMMAND
4     0      1      0  20   0 128164  6820 ep_pol Ss   ?          0:03 /usr/lib/systemd
1     0      2      0  20   0      0     0 kthrea S    ?          0:00 [kthreadd]
1     0      3      2  20   0      0     0 smpboo S    ?          0:00 [ksoftirqd/0]

pstree命令以树状图的方式展现进程之间的派生关系,显示效果比较直观

ps -ef  命令显示所有进程信息,连通命令行

top命令,即时跟踪进程信息,显示的信息会占满一页,自动更新,使用CPU最多的程序会排在最前面。用户可以即时观察当前系统CPU使用率,内存占有率等,使用q退出这个监视程序

[songshichao@song ~]$ top

top - 22:24:50 up 33 min,  2 users,  load average: 0.00, 0.01, 0.09
Tasks: 182 total,   1 running, 181 sleeping,   0 stopped,   0 zombie
%Cpu(s):  0.3 us,  0.7 sy,  0.0 ni, 98.7 id,  0.2 wa,  0.0 hi,  0.2 si,  0.0 st
KiB Mem :  1646888 total,   481764 free,   680660 used,   484464 buff/cache
KiB Swap:  2097148 total,  2097148 free,        0 used.   756604 avail Mem 

   PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND           
   700 root      20   0  305296   6296   4916 S   1.0  0.4   0:03.71 vmtoolsd          
  1805 songshi+  20   0 2080076 190236  51904 S   0.7 11.6   0:31.08 gnome-shell       
  3203 songshi+  20   0  157716   2264   1548 R   0.7  0.1   0:00.29 top           

lsof命令,查看占用文件的进程,获得某个特定文件正在被哪些进程使用,需要提供文件名。如果不写就累出当前系统所有打开文件的进程信息。

free命令可以显示当前系统未使用的和已使用的内存数目,还可以显示被内核使用的内存缓冲区。

kill命令,向进程发送信号。

  kill [-signal] pid

  kill 12974  等同于 kill -TERM 12974

  kill -9 pid  #强制关闭

  sudo kill -KILL pid :在内核的级别上杀死一个进程,绝大多数情况下可以确保结束进程号PID的进程

nicerenice :调整进程的谦让度

  nice命令可以在启动程序的时候设置其谦让度  ,谦让度的值应该在-20~+19之间浮动

         nice -n 2 bc :设置bc以谦让度增量2启动

    nice bc : 将谦让度增量设置为10

  renice命令可以在进程运行的时候调整其谦让度。

    renice +12 -p 8567# -p选项制定进程的PID,此命令将bc程序谦让度调整为12

  

  

原文地址:https://www.cnblogs.com/master-song/p/8811212.html