进程管理

一.进程的基本概念

1.进程的定义

是指程序关于某个数据集合的一次运行活动

2.Linux进程状态

 

wKioL1nlxhjg49ciAAEW2dk4OQk912.jpg-wh_50

3.进程的类型

1)交互进程:由shell启动,可以工作在前后台

2)批处理进程:不需要与终端相关,提交在等待队列的作业

3)守护进程:shell/linux系统自动启动/用户手工启动,工作在后台,用于监视特定服务

 4.进程启动方法

 (1)手工启动

l 前台:直接输入程序名(如:#vi

l 后台:程序名后加&(如:#vi&

  2)调度启动

l 系统在指定时间运行指定的程序(at.batch.cron

二.进程管理的常用命令

1.ps

  功能:显示系统的进程信息

格式:ps  [参数]

参数-a 显示所有进程(不包括没有终端的进程)

-u显示用户名和启动时间

-x显示没有终端的进程

-e 显示所有进程(不显示进程状态)

-f 全格式

 实例:# ps  显示当前用户进程

# ps –aux   显示所有进程信息

 USER PID%cpu %mem  vsz  rss    tty  stat start  time command

   Root  10.0  .3   1096 476   ?   s    18:20  0:04    init

USER  进程的启动用户

PID:      进程号(进程的唯一标识)

CPU:   CPU的百分比

MEM:  占用内存百分比

VSZ    虚拟内存大小

RSS    内存大小(真实)

TTY:  进程的工作终端(?表示没有终端)

STAT:  进程的状态(D: 不可中断的静止 
R: 
正在执行中 
S: 
静止状态 
T: 
暂停执行 
Z: 
不存在但暂时无法消除 
W: 
没有足够的记忆体分页可分配 
<: 
高优先序的行程 
N: 
低优先序的行程
<: 高优先级别

Start  :启动时间

  Time  :占用的cpu的时间

Command : 运行的程序

2.top

功能:动态显示系统进程信息

格式:#top  [参数]

参数:

指定每两次屏幕信息刷新之间的时间间隔。当然用户可以使用s交互命令来改变之。

  q 该选项将使top没有任何延迟的进行刷新。如果调用程序有超级用户权限,那么top将以尽可能高的优先级运行。

  S 指定累计模式。

  s 使top命令在安全模式中运行。这将去除交互命令所带来的潜在危险。

  使top不显示任何闲置或者僵死进程。

  c 显示整个命令行而不只是显示命令名

实例#top  (默认每5秒钟刷新一次)

top的操作命令:

h/?: 获取top的帮助

kPID:杀死指定的进程

q 退出top

空格:立即刷新

s:改变刷新间隔

3.kill

功能:给进程传递信号

格式kill [信号值] PID

信号值:-24/SIGSTOP:暂停某个进程

-18/SIGCONT:继续暂停的进程

-1/SIGHUP:挂起一个进程

-15/SIGTERM:软中断,正常退出一个软件

-9/SIGKILL:杀死一个进程

-20/SIGTSTP:键盘停止信号,ctrl+z

实例

        #kill  -9   3

# kill  -9  3,5,8  一次杀死多个程序

# kill  - 9  1-8   杀死1到8号进程

# kill  -9  0    表示所有后台进程

4.killall

功能:给指定程序名的进程发送信息

格式#killall  程序名

实例#killall   -9  vsftpd(杀死所有对应vsftpd程序的进程)

5.设置进程优先级

优先级范围:-20-19(值越小表示级别越高,默认为0

(1)  nice(设置程序运行时优先级)

  格式#nice 优先级 命令

 实例# nice –5  ls

      #nice --5  vi

(2) renice

格式:#renice  优先级 PID

 

实例#renice   -6  727

      #renice   12  888

6.作业的前后台操作

1jobs

功能:查看后台作业

实例:# jobs

2fg

功能:把后台的程序调入前台运行

格式#fg   [作业编号]

实例#fg(队首的作为调入前台运行,最后入队列作业处于队首)

      #fg 2(将队列中的2号调入前台运行)

3bg

功能:将后台等待程序转入后台运行

格式bg  [作业编号]ctrl+z将前台程序转入后台停止运行)

               ctrl+c将终止前台程序的运行)

实例#bg  (将队首的作业调入后台运行,最后入队列作业处于队首)

#bg 3 (将3号作业调入后台运行)

7.pstree

功能:显示进程树

格式:#pstree

三.任务的自动化

1.at

功能:安排系统在指定时间运行指定的作业,需要有atd服务的支持

格式#at   [参数]    时间

参数-m 指任务结束后会发送mail通知用户

     -f 文件名:从指定文件中读取执行的命令

     -g [a-z]:指定使用的队列

    时间的表示方法:

            midnight   (当天午夜)

            noon      (当天中午)

            teatime   (当天下午4点)

            hh:mm   mm/dd/yy  (指定年月日,时分)

            now+n minutes (从现在起向后n分钟)

            now+n days  (从现在起向后n天)

            now+nhours (从现在起向后n小时)

            now+n weeks (从现在起向后n周)

      实例:# at21:00 3/17/2004

>ls

>cd /etc

>init 0

ctrl+d(结束作业步)

at相关命令:

(1)      atq

功能:查询at队列中的作业

实例:#atq

(2)      atrm

功能:删除at队列中的作业

实例:#atrm  2

2.cron

  功能:安排系统在指定时间周期内执行作业

    原理cron进程,每隔一分钟,检查/var/spool/cron目录下用户提交的作业文件中有无作业需要运行(和windows系统计划任务差不多)

配置1)建立crontab文件

    # vi  /root/root.cron

格式                     星期        要运行的程序

       0   12      1      1        *      /sbin/shutdown–r now

(数字表示具体时间,*表示任何时间)

0   8—12    *      *        *        /sbin/tar –xzfvetc.tar.gz /etc/

8-12从某时间到某时间)

25  0-23/2    *      12       *          rm –f /tmp/*

0等同于**/n:N///月,0-23/2表示每隔2小时,即:0:25,2:25,4:25

30    *      *      1,3,5    *           dump   

135:多种可用“,”隔开)

2)运行crontab命令

功能:生成用户的cron文件

格式:crontab [参数] [文件名]

参数:-u 用户名:指定具体用户的cron文件

      -r         删除用户的crontab文件

      -l          显示用户的cron文件

      -e          编辑用户的cron文件

  实例# crontab /root/root.cron (建立当前标准格式用户crontab文件)

      # crontab  –r  删除当前用户的cron文件

配置案例:root用户在每周2,4,6早上3点启重系统

  # vi /root.cron(以root用户登录)

 0   3   *  *   2,4,6   /sbin/shutdown   -r    now

   # crontab   /root.cron

注意:/etc/at.denyetc/at.allow用于控制用户运行at的任务