您的位置:首页 > 运维架构 > Linux

Linux程序、进程管理

2013-07-01 00:16 148 查看
Linux程序、进程管理

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

(1)交互进程:由shell启动的进程。可在前台运行,也可在后台运行;

(2)批处理进程:一个进程序列;

(3)守护进程:守护进程(Daemon,也称为精灵进程)是指在后台运行而又没有启动终端或登录shell。守护进程一般由系统开机时通过脚本(script)自动激活启动或者由root用户通过shell启动。守护进程总是活跃的,一般在后台运行,所以它所处的状态是等待处理任务的请求。

启动守护进程有如下几种方法:

1)在引导系统时启动:通过脚本启动,这些脚本一般位于/etc/rc.d中。在/etc目录下的很多rc文件都是启动脚本 。rc0.d,rc1.d,rc2.d,rc3.d,rc4.d,rc5.d,rc6.d,其中的数字代表在指定的runlevel下运行相应的描述,0代表关机,6代表重启。其中,以k开头的文件表示关闭,以s开头的文件表示重启。可查看相应文件夹中的readme文件。rc0.d,rc1.d,rc2.d,rc3.d,rc4.d,rc5.d,rc6.d,rcS.d都连接到/etc/init.d文件夹,该目录中存放着守护进程的运行文件。

2)人工手动从shell提示符启动:任何具有权限的用户都可以启动相应的守护进程

root@Ubuntu:~#/etc/init.d/vsftpd start//启动FTP服务器,ubuntu下默认已经安装了vsfptd服务器

3)使用crond守护进程启动

4)执行at命令启动

后台进程:在shell下直接输入命令后,shell将进程放到前台执行。如果要将进程放到后台执行,需要在命令行的结尾加上一个 “ & ” 符号。例如: root@Ubuntu:~# find / -name passwd&

一般将一些比较耗时的操作放到后台执行。

前台进程与后台进程的区别:前台进程有控制终端,后台进程没有控制终端,所以没有结果可以显示。 前台进程绝大部分是用户进程,后台的一般(大多数是)系统进程。守护进程都是后台进程

进程的执行模式划分为用户模式和内核模式:系统进程,只运行在内核模式,执行操作系统代码,完成一些管理性的工作。用户进程,运行在用户模式下,通过系统调用或在出现中断、异常时进入内核模式。

进程管理常用命令:

jobs 命令:显示当前正在后台执行的任务,得到相关的信息之后,可以对任务进行一步操作,如果用fg命令调用前台程序运行,或者使用kill命令结束任务。

ps只为您提供当前进程的快照。要即时查看最活跃的进程,可使用 top。

top实时地提供进程信息。它还拥有交互式的状态,允许用户输入命令,如 n 后面跟有 5 或 10 等数字。其结果是指示 top 显示 5 或 10 个最活跃的进程。Top 持续运行,直到您按"q" 退出 top 为止。

查看进程状态——ps命令

ps [option]

-e显示所有进程.//包括有终端的和没有终端的

-f全格式显示进程信息.

-h不显示标题.

-l长格式.

-w宽输出.

a显示终端上的所有进程,包括其他用户的进程.

-r只显示正在运行的进程.

x显示没有控制终端的进程.

u显示用户名和进程的起始时间

ps命令输出字段的含义:

root@Ubuntu:~# ps //显示终端内正在运行的进程。

PID TTY TIME COMMAND

5800 ttyp0 00:00:00 bash

5835 ttyp0 00:00:00 ps

$ ps u   

USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND

test 5800 0.0 0.4 1892 1040 ttyp0 S Nov27 0:00 -bash

test 5836 0.0 0.3 2528 856 ttyp0 R Nov27 0:00 psu

查看某进程是否启动

ps -ax | grep xxx进程

比如ps –ef| grep less

ps -aux | grep firefox //查看firefox进程是否启动

|:一个管道符号将ps的结果导向到grep去查找特定的进程;即将标准输出传递给grep作为输入ps | grep后面要加要找的进程。

结束进程

root@Ubuntu:~#kill -9 6388 //结束进程号是6388的进程

-9表示无条件的结束一个进程

大多数情况下,不带参数的kill就可以结束大多数进程。

kill的操作对象是PID。一般都要先用ps或top等命令查处PID 后,才能工作。kill的实际工作是对PID发送一个信号。

SIGTERM 15终止进程。这也是默认值。

SIGKILL 9强制终止进程。

SIGSTOP 19暂停进程。

SIGCONT 18继续进程。

SIGHUP 1一般程序收到此信号会退出,有些程序能够用此信号来reload。

使用方法:kill [信号] 进程号

CTRL+C也可以结束前台进程,但对于后台进程只能用kill结束。

killall可以不用找出PID,直接加上CMD就可杀除进程,但是,也有些缺点,它会把任何同名的程序全部删除。

[root@ht root]# killall bash

会杀掉所有正在使用的bash。

进程的挂起及恢复

挂起前台进程:CTRL+Z

恢复进程执行,两种方法

1.用fg命令将挂起的作业放到前台执行

2.用bg命令将挂起的作业放到后台执行

优先级的设置

Linux可以动态修改进程的优先级,以确保每个进程都可以得到一些CPU时间。在Linux中进程的优先级从最低19到最高-20。数字越小,优先级越高。优先级具有继承性。子进程会从父进程处获得优先级指数。设置优先级主 要使用nice和renice命令。

为程序定义一个初始化优先级指数。

[root@htroot]# nice -19 tail –f message&

接着大家使用ps可以查看该程序所对应的那行,NI的值是19,系统最低的优先级,获得最少的CPU时间。

[root@ht root]# nice --20 message &

给一个程序加上最高的优先级,最高的优先级指数是- 20,注意这里是2个“-”号。

进程为什么要挂起?

在多进程程序系统中,进程在处理器上交替运行,在运行、就绪和阻塞3种基本状态之间不断地发生变化。由于进程的不断创建,系统资源(特别是主存资源)已不能满足进程运行的要求。此时就必须将某些进程挂起,对换到磁盘镜像区,暂时不参与进程调度,以平衡系统负载的目的。如果系统出现故障,或者是用户调试程序,也可能需要将进程挂起检查问题。

所谓挂起状态,实际上就是一种静止的状态。一个进程被挂起后,不管它是否在就绪状态,系统都不分配给它处理机。(区别于阻塞状态)。这样进程的三态模型(执行、就绪、阻塞)就变为五态模型:执行状态、活动就绪状态、静止就绪状态、活动阻塞状态和静止阻塞状态

活动就绪:指进程在主存并且可被调度的状态 (对应于三态的就绪状态)

静止就绪:指进程被对换到辅存时的就绪状态,是不能被直接调度的状态,只有当主存中没有活动就绪态进程,或者是挂起态进程具有更高的优先级,系统将把挂起就绪态进程调回主存并转换为活动就绪。

活动阻塞:指进程在主存中。一旦等待的事件产生,便进入活动就绪状态(对应于三态的阻塞状态)

静止阻塞:指进程对换到辅存时的阻塞状态。一旦等待的事件产生,便进入静止就绪状态
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐