码迷,mamicode.com
首页 > 系统相关 > 详细

Linux进程管理

时间:2017-09-11 00:46:32      阅读:252      评论:0      收藏:0      [点我收藏+]

标签:进程管理

什么是进程?

Linux 系统中,触发任何一个事件,系统都将会将它定义为一个进程,并且给予这个进程一个编号ID,称为PID,同时根据触发这个进程的用户与相关属性关系,给予这个PID一组有效的权限设置。

进程与程序:

程序(program):通常为二进制程序放置在存储媒介中,以物理文件的形式存在。

进程(process):程序在被触发后,执行者的权限与属性、程序的程序代码与所需数据都会被加载到内存中,操作系统并给及这个内存内的单元一个标示符(PID)。总的来说,进程就是运行中的程序的一个副本,是被载入内存的一个指令集合。

    进程ID Process  ID,PID)用来标记每一个进程

    UIDGIDSELinux 语境决定对文件系统的存取和访问权限

    通常从执行进程的用户来继承

    存在生命周期

子进程与父进程:

 子进程是由一个进程所产生的进程,产生这个子进程的进程称为父进程;父进程终止子进程自然终止。

 子进程与父进程之间的关系最大的复杂点在于进程相互之间的调用,在linux中的过程调用中通常称为fork-and-exec的流程,进程都会通过父进程以复制的方式产生一个一模一样的子进程,然后被复制出来的子进程再以exec的方式来执行实际要进行的进程,最终就成为一个子进程的存在。

 进程的创建:

第一个进程(父子关系):init (centos6)

systemd (centos7 )

   进程:都是由父进程创建  方法fork(),clone()

进程的优先级:

  系统优先级:数字越小,优先级越高

 0-139CentOS4,5):各有140个运行队列和过期队列

   0-9899CenOS6

实时优先级:99-0:值最大优先级最高

Nice值:-2019对应系统优先级100-13999

技术分享

技术分享进程状态:

 运行态:running

   就绪态:ready

    睡眠态:可中断:interruptable

              不可中断:uninterruptable

     停止态:stopped,暂停于内存中,但不会被调度,除非手动启动

     僵死态:zombie,结束进程,父进程结束前,子进程不关闭

进程管理工具:

ps命令:ps命令用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。ps命令是最基本同时也是非常强大的进程查看命令,使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等,总之大部分信息都是可以通过执行该命令得到的

命令语法:ps   [OPTION] ….

支持三种风格的选项:

    UNIX 风格:ps  -ef

    BSD风格:ps axo

    GNU风格:ps  --help

默认显示当前终端中的进程

              a选项包括所有终端中的进程

              x选项包括不链接终端的进程

   u选项显示进程所有者的信息

              f选项显示进程的父进程

              o属性选项显示定制的信息

pid(进程id)、comm(进程命令)、%cpu%mem(内存)、state(状态)、tty(终端)、euser(有效用户)、ruser(发起命令的用户)

技术分享

STAT:进程状态

  • Rrunning

  • S:     interruptable sleeping

  • D:     uninterruptable sleeping

  • T: stopped

  • Z: zombie

  • +: 前台进程

  • l: 多线程进程

  • N:低优先级进程

  • <: 高优先级进程

  • s: session     leader,会话(子进程)发起者

命令常用组合:

     -ef

         -e: 显示所有进程

    -f: 显示完整格式程序信息

     -eFH

     -F: 显示更完整格式的进程信息

     -H: 以进程层级格式显示进程相关信息

     ni: nice

    pri: priority,优先级

    psr: processor, CPU编号 (使用的是哪颗cpu)

    rtprio: 实时优先级技术分享

ps –C processname :单独显示某个进程,可以使用-o 扩展参数选项

技术分享

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

pstree  –p  :在进程树状图中显示进程ID

技术分享

nice/renice命令:调整优先级。静态优先级:100-139,进程默认启动时的nice值为0,优先级为120,只有跟用户才能降低nice值(提高优先性)。

nice  –n  xx Command:以指定的优先级运行某个命令,xx的范围是-20~19

技术分享

renice –n  xx COMMAND : 在运行中的进程,修改优先级

技术分享

pgrep命令:搜索进程

    -u uid:effective user,生效者

    -U uid: real user,真正发起运行命令者

    -t terminal: 与指定终端相关的进程

    -l: 显示进程名

    -a: 显示完整格式的进程名

    -P pid: 显示父进程为此处指定的进程的进程列表

pgrep [options]  pattern  支持正则表达式技术分享

pidof命令:按确切的程序名查看pid

命令绝对路径:/sbin/pidof

用法:pidof COMMAND

将来可以用来脚本中监控一个重要的服务是否开启

技术分享

uptime:显示启动状态,显示当前时间,系统已启动的时间、当前上线人数,系统平均负载(1510分钟的平均负载,一般不会超过1)。(没有明确的单位。)

技术分享

              系统平均负载:指在特定时间间隔内运行队列中的平均进程数。

    通常每个CPU内核的当前活动进程数不大于3,那么系统的性能良好。如果每个CPU内核的任务数大于5,那么此主机的性能有严重问题。

 如果linux主机是1个双核CPU,当Load Average 6的时候说明机器已经被充分使用。

top命令:显示进程使用系统资源情况

技术分享

第一行:相当于uptime命令
第二行:进程信息
第三行:CPU使用情况
第四行:内存使用情况
第五行:交换分区swap使用情况

cpu那行:

  • ususer, 用户空间占用

  • sysystem, 内核空间占用

  • ni:调整nice时间

  • ididle,空闲

  • wawait, 等待IO时间

  • hihard interupt, 硬中断

  • sisoft interupt, 软中断(模式切换)

  • ststole, 虚拟机偷走的时间

排序:

在打开top后,可以按快捷键进行自定义排序:

P:以占据的CPU百分比,%CPU

M:占据内存百分比,%MEM

T:累积占据CPU时长,TIME+

首部信息是否显示

  • uptime信息:l(字母l

  • taskscpu信息:t

  • cpu分别显示:1(数字1

  • memory信息:m

  • 退出命令:q

  • 修改刷新时间间隔:s

  • 终止指定进程:k

  • 保存文件:W

也可以使用命令行的方式对top显示的信息进行管理

选项:

d #: 指定刷新时间间隔,默认为3

-b: 全部显示所有进程

-n #: 刷新多少次后退出

htop命令:是一个Linux下交互式的进程浏览器,可以用来代替top命令。默认没有安装,需要从EPEL源安装。

技术分享

子命令:

  •     s: 跟踪选定进程的系统调用

  •     l: 显示选定进程打开的文件列表

  •     a:将选定的进程绑定至某指定CPU核心

  •     t: 显示进程树

使用命令直接对显示信息进行操作:

选项:

    -d #: 指定延迟时间;

    -u UserName: 仅显示指定用户的进程

    -s COLUME: 以指定字段进行排序

vmstat 命令:含义是显示虚拟内存状态,但是它还可以报告关于进程、内存、I/0等系统整体运行状态。

技术分享

命令默认显示一次就退出。可以设置间隔几秒刷新一次,也可以定义刷新次数

技术分享

显示中的各项含义:

procs:

r:可运行(正运行或等待运行)进程的个数,和核心数有关

b:处于不可中断睡眠态的进程个数(被阻塞的队列的长度)

memory

swpd: 交换内存的使用总量

free:空闲物理内存总量

buffer:用于buffer的内存总量

cache:用于cache的内存总量

swap:

si:从磁盘交换进内存的数据速率(kb/s)

增加si:dd if=/dev/zero of=/dev/null 

so:从内存交换至磁盘的数据速率(kb/s)

增加so:dd if=/dev/zero of=/dev/null  bs=3Gcount=1

io

bi:从块设备读入数据到系统的速率(kb/s)

增加bi:dd if=/dev/sda of=/dev/null

bo: 保存数据至块设备的速率

增加bo:dd if=/dev/zero of= /app/f1 

system

in: interrupts 中断速率,包括时钟

cs: context switch 进程切换速率

      cpu

us:Time spent running non-kernel code

sy: Time spent running kernel code

id: Time spent idle. Linux 2.5.41,包括IO-wait time.

wa: Time spent waiting for IO.2.5.41前,包括in idle.

st: Time stolen from a virtualmachine.2.6.11, unknown.

iostat命令:统计CPU和设备IO信息

pmap命令:显示进程和内存间的映射关系

    pmap  –x PID显示详细格式的信息

技术分享

glances命令:系统监控工具,通过glances工具我们可以监视CPU、平均负载、内存、网络流量、磁盘I/O,其他处理器和文件系统空间的利用情况。

C/S模式下运行glances命令

服务模式:

   glances-s -B IPADDR

   IPADDR: 指明监听的本机哪个地址

客户端模式:

    glances-c IPADDR

    IPADDR:要连入的服务器端地址

示例:

技术分享

dstat命令:dstat命令是一个全能系统信息统计工具。拥有一个彩色的界面,在手动观察性能状况时,数据比较显眼容易观察;而且dstat支持即时刷新,如输入dstat 3即每三秒收集一次,但最新的数据都会每秒刷新显示。dstat也可以收集指定的性能资源,如dstat -c即显示CPU的使用情况。

dstat[-afv] [options..] [delay [count]]

-c: 显示cpu相关信息

-C #,#,...,total

-d: 显示disk相关信息

-D total,sda,sdb,...

-g:显示page相关统计数据

-m: 显示memory相关统计数据

-n: 显示network相关统计数据

-p: 显示process相关统计数据

-r: 显示io请求相关的统计数据

-s: 显示swapped相关的统计数据

默认采用-cdngy参数

技术分享进程管理工具:

Kill 命令:向进程发送控制信号,以实现对进程的管理,每一个信号对应一个数字。

Kill –l :显示当前系统可用信号

技术分享

常用信号:man 7 signal

1) SIGHUP: 无须关闭进程而让其重读配置文件

2) SIGINT: 中止正在运行的进程;相当于Ctrl+c

3) SIGQUIT:相当于ctrl+\

9) SIGKILL: 强制杀死正在运行的进程

15) SIGTERM:终止正在运行的进程

18) SIGCONT:继续运行

19) SIGSTOP:后台休眠

注:

(1)不是所有的进程都可以使用发信号9 的方式结束的,对于终端进程就会失效。

技术分享    (2)Kill -0 pid选项检查某个进程是否正常工作,(以后可以用来检查摸个服务是否正常工作)killall命令:根据进程名管理进程(有时候一个服务开启的进程太多,根据进程号一个一个删除太麻烦。)

技术分享


Linux进程管理

标签:进程管理

原文地址:http://13136984.blog.51cto.com/13126984/1964179

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!