linux中的进程管理

linux进程概述

      进程是操作系统结构的基础;是一个正在执行的程序;是计算机中正在运行的程序实例;可以分配给处理器

并由处理器执行的一个实体;由单一顺序的执行显示,一个当前状态和一组相关的系统资源所描述的活动单元。

    换个角度说,进程是抽象概念,就像程序是实体概念一样。程序是储存在磁盘上包含可执行机器指令和数据的

静态实体,我们可以看到的是一个一个.exe文件(windows下)或者可执行的任何名称的文件(unix等操作系统下)

而进程是在操作系统中执行的特定任务的动态实体。Linux系统中每个运行中的程序至少由一个进程组成,每个进程

与其他进程都是彼此独立的,都有自己独立的权限与职责。一个用户的应用程序不会干扰到其他用户的程序或者操作

系统本身。

Linux操作系统包含如下3种不同类型的进程,每种进程都有其自己的特点和属性。

1.交互进程:有一个Shell启动的进程。交互进程既可以在前台运行,也可以再后台运行。

2.批处理进程:这种进程和终端没有联系,是一个进程序列。

3.守护进程:Linux系统启动时启动的进程,并在后台运行。

 linux进程状态

      通常在操作系统中,进程至少要有3种基本状态,分别为运行态,就绪态和封锁态(阻塞态)。

     运行状态是指当前进程已分配到cpu,它的程序正在处理器上执行时的状态。处于这种状态的进

程个数不能大于CPU的数目。在一般单CPU机制中,任何时刻处于运动状态的进程至多有一个。

     就绪状态是指进程已具备运行条件,但因为其他进程正占用CUP,所以暂时不能运行而等待分配

CPU的状态。一旦把CPU分给它,立即就可运行,在操作系统中,处于就绪状态的进程数目可以是多个。

     封锁状态是指进程因等待某种事件发生(如等待某一输入/输出操作完成,等待其他进程发来的信号

等)而暂时不能运行的状态。也就是说,处于封锁状态的进程尚不具备运行条件,即使CUP空闲,它也

无法使用。这种状态有时也称为不可运动状态或挂起状态,系统中处于这种状态的进程也可以是多个。

手工启动

      由用户输入命令,直接启动一个进程便是手工启动进程,但手工启动进程又可以分为很多种,根据

启动的进程类型不同、性质不同,实际结果也不同。

台前启动

      用户输入一个命令“ls -l,这就已经启动了一个进程,而且是一个前台的进程。这时候系统其实已经

处于一个多进程状态。通常情况下,用户在启动进程时,系统中已经存在了许多运行在后台的、系统启动

时就已经自动启动的进程。

后台启动

      直接从后台手工启动一个进程用的比较少,除非该进程甚为耗时,且用户也不急于看到处理结果。假设

用户要启动一个要长时间运行的格式化文本文件的进程,为了不使整个Shell在格式化过程中都处于”瘫痪“状

态(长时间看不到任何运行结果),选择从后台启动进程是明智的选择。

      上述两种启动方式有个共同的特点,就是新进程都是由当前Shell这个进程产生的。也就是说,是Shell创

建了新进程,于是就称这种关系为进程间的父子关系。这里Shell是父进程,而新进程是子进程。一个父进程可

以有多个子线程,一般地,子进程结束后才能继续父进程:如果从后台启动,那就不用等待子进程结束了

      一种比较特殊的情况是在使用管道符的时候:

这个时候同时启动了2个进程,它们都是Shell的子线程,互为兄弟进程。

进程中的系列命令

      ps命令是Linux中查看进程状态的最常用命令,能显示系统中运行的进程,进程号,命令,cpu使用量、内

存使用量等。

ps [选项]

-a  显示系统中与tty相关的(除会话组长之外)所有的进程的信息。

-e  显示所有进程的信息。

-f   显示进程的所有信息

-l   以长格式显示进程信息

r   只显示正在运行的进程

u   显示面向用户的格式(包括用户名、cpu及内存使用情况等信息)

x   显示所有非控制终端上的进程信息

--pid   显示由进程 ID指定的进程信息

--tty  显示指定终端上的进程信息。

pstree命令

      linux中每一个进程都是由其父进程创建的。此命令以可视化方式显示进程,通过显示进程的树状图来展示

进程间关系。还可指定树的根线程

 

top命令

      top命令和ps命令的基本作用是相同的,即显示系统当前的进程及其状态,但top是一个动态显示过程,可

以通过用户按键来不断刷新当前状态。如果在前台执行代码,该命令将独占前台,直到用户终止该程序为止。top

命令的一般格式 top [bciqsS][d<间隔秒数>][n<执行次数>]

b   使用批处理模式

c   列出程序时,显示每个程序的完整指令,包含指令名称、路径和参数等相关信息

i    执行top指令时,忽然闲置或已成为Zombie的程序

q   持续监控程序执行的状况

s   使用保密模式,消除互动模式下的潜在危机

S   使用累计模式

d<间隔秒数>:设置top监控程序执行状况的间隔时间,以秒为单位。

n<执行次数>:设置监控信息的更新次数。

使用top命令,每30秒实时更新一次系统中运行进程的状态

nice命令

      在linux中通过nice命令的帮助,用户可以设置和改变进程的优先级。提高一个进程的优先级,内核会分配更

多cpu时间片给这个进程。默认情况下,进程以0的优先级启动。进程优先级可以通过top命令显示的NI(nice value)

列查看

      进程优先级值的范围从-20到19.值越低,优先级越高。若调整后的程序运行优先级高于-20,则就以优先级-20来运

行命令行;若调整后的程序运行优先级低于19,则就以优先级19来运行命令行。若 nice命令未指定优先级的调整值,则

以缺省值10来调整程序运行优先级,既在当前程序运行优先级基础之上增加10。

语法:

nice [-n <优先级>] [--help] [--version] [执行指令]

选项介绍:
    -n <优先级>    指定优先级;
    --help         帮助信息;
    --version      版本信息;

 

      sudo是linux系统管理指令,是允许系统管理让普通用户执行一些或者全部的root命令的一个工具,如halt
reboot,su等等。这样不仅减少了root用户的登录 和管理时间,同样也提高了安全性。sudo不是对shell的一个
代替,它是面向每个命令的。

rennice命令

      renice命令类似nice命令,使用该命令可以改变正在运行的进程优先值。但请注意,该用户只能改变属于他

自己的进程优先值。

     

语法

renice priority [[-p] pid ...] [[-g] pgrp ...] [[-u] user ...]

参数说明

  • -p pid 重新指定行程的 id 为 pid 的行程的优先序

  • -g pgrp 重新指定行程群组(process group)的 id 为 pgrp 的行程 (一个或多个) 的优先序

  • -u user 重新指定行程拥有者为 user 的行程的优先序

 
初始值为19的1092号进程优先值已经变成了4

 用户为root的所有进程优先值变为-3

kill命令

      通常终止一个前台进程可以使用Ctrl+C组合键,但是对于一个后台进程就需要用kill命令来终止。kill命令

通过向进程发送指定的信号来结束相应的进程。在默认的情况下,采用编程号为15的TERM信号将终止所有不能

捕获该信号的进程。对于那些可以捕获该信号的进程,就要用编号为9的kILL信号强行杀掉该进程。

kill 命令的一般格式如下:

kill [-s 信号 |-p ] 进程号

kill  -l  [信号]

-s  指定要发送的信号,既可以是信号名(如 kill),也可以是对应信号的号码(如9)

-p  指定kill命令只是显示进程的PID(进程标识号),并不真正发出结束信号

-l   显示信号名列表

ulimit命令

       ulimit用于启动进程所占用的资源.对于系统管理员是最有用的,可以管理重度使用和存在性能问题

的系统。限制资源大小可以确保重要进程持续运行,其他进程不会占用过多资源。
语法格式:
       ulimit [-acdfHlmnpsStvw] [size]
参数介绍:
   -H    设置硬件资源限制.
   -S    设置软件资源限制.
    -a     显示当前所有的资源限制.
    -c     size:设置core文件的最大值.单位:blocks
    -d     size:设置数据段的最大值.单位:kbytes
    -f     size:设置创建文件的最大值.单位:blocks
    -l      size:设置在内存中锁定进程的最大值.单位:kbytes
    -m    size:设置可以使用的常驻内存的最大值.单位:kbytes
    -n     size:设置内核可以同时打开的文件描述符的最大值.单位:n
    -p    size:设置管道缓冲区的最大值.单位:kbytes
    -s     size:设置堆栈的最大值.单位:kbytes
    -t     size:设置CPU使用时间的最大上限.单位:seconds
    -v     size:设置虚拟内存的最大值.单位:kbytes

 

 w 命令

      w命令提供当前登录的用户及其正在执行的进程的信息。显示信息头包含信息,如当前时间、系统运行时长

登录用户总数、过去的1,5,15分钟内的负载均衡数。

语法格式如下:

  w -[husfV]  [user]

   下面对参数进行说明:

   -h 不显示标题。

   -u  当列出当前进程和CPU时间时忽略用户名。这主要是用于执行su命令后的情况。

   -s 使用短模式。不显示登录时间、JCPU和PCPU时间。 

   -f 切换显示FROM项,也就是远程主机名项。默认值是不显示远程主机名,当然系统管理员可以对源文件 作一些修改使得显示该项成为默认值。 

   -V 显示版本信息。

 who是与w类似的命令,提供当前登录用户列表、系统启动时间、运行级别等。

whoami 命令输出当前用户ID

 pgrep命令

      pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。每一个进程ID以一个十进制数表示,通过一个分割字符串和下一个ID分开,默认的分割字符串是一个新行。对于每个属性选项,用户可以在命令行上指定一个以逗号分割的可能值的集合。

语法格式

pgrep(选项)(参数)

参数

-o:仅显示找到的最小(起始)进程号;

-n:仅显示找到的最大(结束)进程号;

-l:显示进程名称

-P:指定父进程号

-g:指定进程组

-t:指定开启进程的终端

-u:指定进程的有效用户ID。

ipcs命令

       ipcs命令报告进程间通信设施状态。(共享内存,消息量和消息队列)用-p参数联合-m、-s、-q使用

可以获得相关的进程间通信的进程ID。

         

posted on 2016-04-11 21:21  ZQ园林  阅读(564)  评论(0编辑  收藏  举报