进程管理

来源:互联网 发布:淘宝店主不同意退货 编辑:程序博客网 时间:2024/06/18 14:18

1 进程的概念

1.1 进程和程序的区别

程序是静态概念,本身作为一种软件资源长期保存;而进程是程序的执行过程,它是动态概念,有一定的生命期,是动态产生和消亡的;

程序和进程无一一对应关系。一个程序可以由多个进程共用;

【/etc/rc.d/init.d/httpd status】查看httpd的运行状态

【/etc/rc.d/init.d/httpd   start】启动http服务

【ps -le | grep httpd】查看httpd相关的所有进程


另一方面,一个进程在活动中也可顺序地执行若干个程序。

【pwd ; date ; find / -name abc】

1.2 父进程与子进程

子进程是由一个进程所产生的进程,产生这个子进程的进程成为父进程

在Linux系统中,使用系统调用fork创建进程。fork复制的内容包括:父进程的数据和堆栈段,以及父进程的进程环境。

父进程终止子进程自然终止。

1.3 前台进程和后台进程

前台进程:【find / -name init

在Shell提示处打入命令后,创建一个子进程,运行命令,Shell等待命令退出,然后返回到对用户给出提示符。这条命令与Shell异步运行,即在前台运行,用户在它完成之前不能执行另一条命令

后台进程:【find / -name init > ./test/init.find  &

在Shell提示处打入命令,若后随一个&,Shell创建的子进程运行此命令,但不等待命令退出,而直接返回到对用户给出提示。这条命令与Shell同步运行,即在后台运行。后台进程必须是非交互式的。

1.4 进程状态

就绪:进程已经分配到资源,但因为其他进程正占用CPU,所以暂时不能运行而等待分配CPU的状态;

等待:因等待某种事件而暂时不能运行的状态;

运行:进程分配到CPU,正在处理器上运行;

   

进程状态细化:

        

2 进程管理命令

2.1 查看用户信息【w】


  • JCPU:以终端代号来区分,该终端所有相关的进程执行时,所消耗的CPU时间会显示在这里;
  • PCPU:CPU执行程序耗费的时间;
  • WHAT:用户正在执行的操作;

【w  用户名】查看个别用户信息

  • load average:分别显示系统在过去1、 5、 15分钟内的平均负载程度;
  • FROM:显示用户从何处登录系统,“:0”的显示代表该用户是从X Window下,打开本模式窗口登录的;
  • IDLE:用户闲置的时间。这是一个计时器,一旦用户执行任何操作,该计时器便会被重置;

2.2  查看进程信息【ps】


【ps】查看隶属于自己的进程

【ps -u】【ps -l】查看隶属于自己进程的详细信息

【ps -aux】【ps -le】查看所有用户执行的进程的详细信息

【ps -aux --sort pid】可按进程执行的时间、PID、UID等对进程进行排序


  • PID:进程号;
  • PPID:父进程的进程号;
  • TTY:进程启动的终端;
  • STAT:进程当前状态:S休眠状态,D不可中断的休眠状态,R运行状态,Z僵死状态,T停止;
  • NI:进程优先级;
  • TIME:进程自从启动以来启用CPU的总时间;
  • COMMAND/CMD:进程的命令名;
  • USER:用户名
  • %CPU:占用CPU时间和总时间的百分比;
  • %MEM:占用内存与系统内存总量的百分比;

【ps -le | grep httpd】查询指定应用的进程信息


【ps -aux | grep xiaoming】【px -uU xiaoming】查询系统中指定用户执行的进程

【ps -le | grep init】查看指定进程信息

【pstree】查看父进程和子进程树



2.3 kill--杀死进程

需要杀死进程的情况:

  • 该进程占用了过多的CPU时间;
  • 该进程锁住了一个终端,使其他前台进程无法运行;
  • 运行时间过长,但没有预期效果;
  • 产生了过多到屏幕或磁盘文件的输出;
  • 无法正常退出;
关闭进程:【kill   进程号】
强行关闭:【kill   -9   进程号】
重启进程:【kill  -1    进程号】
关闭图形程序:【xkill】
结束所有进程:【killall】如:[killall  httpd]
查找服务进程号:【pgrep  服务名称】
关闭进程:【pkill 进程名称】

2.4  通过proc目录查看进程和系统详细信息

【ls  /proc】查看所有进程相关文件(伪文件系统,该目录存放在内存中)

【cat    /proc/cpuinfo】查看cpu信息

【cat   /proc/meminfo】查看内存信息

【cat   /proc/partitions】查看分区信息

2.5 进程优先级nice

优先级取值范围:(-20, 19); 值越小,越优先

【nice -优先级数值  程序名称】指定程序的运行优先级

  •  如:【nice --5 /etc/rc.d/init.d/httpd start】指定优先级为-5

【renice  优先级数值  进程号】改变一个正在运行的进程的优先级

  • 如:【renice -9 `pgrep httpd`】指定优先级为-5

2.6 nohup指定进程在用户退出后继续执行

nohup使进程在用户退出登录后,仍旧继续执行,nohup命令将执行后的数据信息和错误信息默认存储到文件nohup.out中

格式:【nohup  find / -name init*   >   /test/init.find   &】

2.7 进程的挂起和恢复

进程的中止(挂起)和终止:

  • 挂起(Ctrl+Z)
  • 终止(Ctrl+C)

进程的恢复:

  • 恢复到前台继续运行(fg)
  • 恢复到后台继续运行(bg)
查看被挂起的进程,以及后台正在运行的进程(jobs)

【find /  -name init > find.init】

Ctrl+Z  挂起

【jobs】           [1]+  Stopped                 find / -name init > find.init

【fg 1】 前台继续执行编号为1的进程   【bg 1】后台继续执行编号为1的进程

2.8 top动态进程显示

进程状态显示和进程控制,每5秒自动刷新一次(动态显示)
常用选项:
  • d:指定刷新的时间间隔
  • c:显示整个命令行,而不仅仅显示命令名
  • u:查看指定用户的进程
  • k:终止执行中的进程
  • h   or  ? :获得帮助
  • r:重新设置进程优先级
  • s:改变刷新的时间间隔
  • W:将当前设置写入~/.toprc文件中

此时直接输入u,再输入用户名,如xiaoming,即可显示xiaoming相关的动态进程信息



3 计划任务

实现自动化管理,减轻管理工作

计划任务的命令:

  • at:安排作业在某一时刻执行一次
  • batch:安排作业在系统负载不重时执行一次
  • cron:安排周期性运行的作业

3.1  at

安排一个或多个命令在指定时间运行一次

3.1.1 at命令格式及参数

  • 【at  -f 文件名   时间】
  • 【at -d  任务序号】或【atrm  任务序号】删除队列中的任务
  • 【at -l】或【atq】查看队列中的任务
  • 任务存放路径【ls  -l    /var/spool/at/】

3.1.2 at命令指定时间的方式

  • 绝对计时方法
       
  • 相对计时方法
       

示例:


3.1.3 示例--两分钟后广播文件中的内容

使用at时,首先检查atd服务是否启动;如果没有启动,则启动atd

【ps -le | grep atd】查看

【/etc/rc.d/init.d/atd start】启动

【at now +2 minutes】设置计划任务,两分钟后执行


按Ctrl+D结束编辑

3.1.4 at配置文件

如果/etc/at.allow文件存在,那么只有列在此文件中的用户才可以使用at命令;

若/etc/at.allow文件不存在,则检查/etc/at.deny文件是否存在。若/etc/at.deny存在,则在此文件中列出的用户都不能使用at命令。

如果两个文件都不存在,则只有超级用户可以使用at命令;

如果两个文件都存在,而且均为空,则所有用户都可以使用at命令。

3.2 batch

安排一个或多个命令在系统负载轻时运行一次(一般情况下负载较轻指平均负载降到0.8以下)

使用方法同at

3.3 crontab

用于生成cron进程所需要的crontab文件

3.3.1 crontab命令格式

【crontab  选项】

  • -l:显示当前的crontab
  • -r:删除当前的crontab
  • -e:使用编辑器编辑当前的crontab文件

3.3.2 crontab文件格式





【2,5】表示2和5
【1-3】表示1,2,3
【*/2】表示每个2分钟、小时、天
【*】表示不限制
crontab文件采用24小时制

注意事项:
  • 这些选项都不能为空,必须填入
  • 如果用户不需要指定其中的几项,那么可以使用统配符*表示任何时间
  • 每个时间字段都可以指定多个值,他们之间用逗号间隔
  • 命令应该给出绝对路径
  • 用户必须具有运行所对应的命令或程序的权限

3.3.3 应用范例



3.3.4 crontab配置文件

【/etc/crontab】配置文件
限制哪些用户可以使用【/etc/cron.allow】等,与at同

4  进程处理方式

  • standalone:独立运行
响应速度快,占用资源多
服务启动以后,一直驻留在系统内存,占用系统资源
【netstat -an | grep "LISTEN" | more】
  • xinetd:进程托管
响应速度慢,通过inetd托管
【ps -le | grep  inetd】
  • atd、crond计划任务