Linux进程管理

内核的功能:

    进程管理 文件系统 网络功能 内存管理 驱动程序 安全功能等

    rocess:运行中的程序的一个副本,是被载入内存的一个指令集合

     进程ID(Process ID,PID)号码被用来标记各个进程 UID,GID,和SElinux语境决定对文件系统的存取和访问权限,通常从执行进程的用户来继承,存在生命周期。

    task struct:Linux内核存储进程信息的数据结构格式

task  list:多个任务的task Struct组成的链表

        进程创建:

             init:第一个进程

父子进程

        进程:

            都由其父进程创建,COW

             fork(),clone()

        进程优先级:

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

            0-139(centos4,5)

            各有140个运行队列和过期队列

            0-98,99(centos6)

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

            Nice值:-20,19对应系统优先级100-139或99

            big O:时间复杂度,有时和规模的关系

            O(1),O(logn),O(n)线性,O(n^2)抛物线,O(2^n)

        进程内存:

            Page Frame:页框,用存储页面数据,存储Page 4K

            LRU:Least Recently Used 近期最少使用算法,释放内存物理地址空间和线性地址空间

            MMU:Memory Management unit 负责转换线性和物理地址

            IPC:Inter Process Communication

        同一主机上:

            signal

            shm:shared memory

            semophore:信号量,一种计数器

        不同主机上:

            rpc:remote procedure call

socket:IP号和端口号

    

        Linux内核:抢占式多任务

        进程类型:

            守护进程:daemon,在系统引导过程中启动的进程,和终端无关进程

            前台进程:跟终端相关,通过终端启动的进程

            注意:两者可相互转化

        进程状态:

            运行态:running

            就绪态:ready

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

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

        睡眠态:

            可中断:interruptable

    不可中断:uninterruptable

        进程的分类:

            CPU-Bound:CPU密集型,非交互式

             IO-Bound: IO密集型,交互

            Linux系统状态的查看及管理工具:

            pstree,ps,pidof,pgrep,top,htop,glance,pmap,vmstat,dstat,kill,pkill,job,bg,fg,nohup

         pstree命令:

            pstree – display a tree of processes

            ps命令:process state

            ps -report a snapshot of the current processes

            Linux系统各进程的相关信息均保存在/proc/PID目录下的各文件中

       支持三种选项:

            unix选项  如-A -e

            BSD选项   如a

            GUN选项   如–help

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

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

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

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

            f选项显示进程的父进程

            o属性….选项显示定制的信息pid  comm %cpu %mem state tty euser ruser

        VSZ:virtual Memory size 虚拟内存集 线性内存

        RSS:ReSident Size  常驻内存集

        STAT: 进程状态

            R:running

            S:interruptable sleeping

            D:uninterruptable sleeping

            T:stopped

            Z:zombie

            +:前台进程

            I:多线程进程

            N:低优先级进程

            <:高优先级进程

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

        常用组和:-ef

            -e:显示所有进程

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

        常用组和:-eFH

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

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

        常用组和:自定义

            -eo:显示所有进程,     定制属性 例如:[root@nzg7 ~]# ps -eo pid,tid,class,rtprio,ni,pri,psr,pcpu,stat,comm

            -axo: 所有终端所有进程,定制属性 例如:[root@nzg7 ~]# ps -axo stat,euid,ruid,tty,tpgid,sess,pgrp,ppid,pid,pcpu,comm

            ni:nice值

            pri:priority,优先级

              psr:processor,cpu编号

          rtprio:实时优先级

       最灵活:ps 选项 | 其他命令

         按预定义的模式:pgrep

            pgrep [options] pattern

            -u uid:effective user,生效者

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

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

            -l 显示进程名

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

            -P pid:显示指定进程的子进程

        按确切的程序名称:/sbin/pidof

        $pidof bash

        uptime

              显示当前时间,系统已启动的时间,当前上线人数,系统平均负载(1、5、10分钟的平均负载,一般不会超过1)

        系统平均负载:

            指在特定时间间隔内运行队列中的平均进程数

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

            如果linux主机是1个双核cpu的话,当load Average 为6的时候说明机器已经充分使用了

    

     top:内置命令

 排序:

            p:已占据的cpu百分比,%cpu

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

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

        首部信息显示:

             uptime信息:   |命令

            tasks及cpu信息:+命令

                cpu分别显示:   1(数字)

                Memory信息:   m命令

                退出命令:   q

                修改刷新时间间隔:s

                终止指定进程:k

                保存文件:W

          

        栏位信息简介

              us:用户空间

              sy:内核空间

              ni:调整nice时间

              id:空闲

              wa:等待IO时间

              hi:硬中断

              si:软中断(模式切换)

              s+:虚拟机偷走的时间

       PID (Process Id):任务的进程ID

            PPID (Parent Process Pid):父任务的进程ID

            RUSER (Real User Name):任务的所有者真实名称

            UID (User Id):任务所有者ID

            USER (User Name):任务所有者名称

            GROUP (Group Name):任务所有者群组名

            TTY (Controlling Tty):终端

            PR (Priority):优先级

            %CPU (CPU usage):CPU使用率

            %MEM (Memory usage (RES)):内存使用率

            S (Process Status):进程状态

            TIME+ (CPU Time, hundredths):CPU时间,精确到秒

        选项:

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

             -n #:以批次方式

            -b:以批次方式

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

            -sCOLUME:以指定字段进行排序

                  #htop需要自己下载

        子命令:

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

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

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

            t: 显示进程树

            vmstat命令:虚拟内存信息

            vmstat [options] [delay [count]]

            vmstat 2 5

        procs:

            r:等待运行的进程的个数,和核心数有关

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

            memory: 

            swpd:   交换内存的使用总量

            free:  空闲物理内存总量

            buffer:用于buffer的内存总量

            cache: 用于cache的内存总量

        swap:

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

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

            io:

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

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

            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 virtual machine. 2.6.11前, unknown.

        选项:

            -s: 显示内存的统计数据

        dstat命令:

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

             -c:显示cpu相关信息

             -d:显示disk的相关信息

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

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

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

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

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

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

             –tcp tcp链接数

             –udpudp链接数

             –socket 查看详细监控信息

             –top-cpu:显示最占用cpu的进程

             –top-io:显示最占用io的进程

             –top-mem:显示最占用内存的进程

             –top-latency:显示延迟最大的进程

    进程管理工具

        kill:

             向进程发送控制信号 ,以实现对进程管理

             显示当前系统可用信号:kill -1

             常用信号:man 7 signal

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

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

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

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

             18)SIGCONT:继续运行

             19)SIGSTOP:后台休眠

              指定信号的方法:

             (1)信号的数字标识:1,2,9

             (2)信号的完整名称:SIGHUP

             (3)信号的简写名称:HUP

              按PID: kill [-SIGNAL] pid …

              按名称:killall [-SIGNAL] comm …

              按模式:pkill [options] pattern

               -SIGNAL

               -u uid:effective user,生效者

               -Uuid:real user,真正发起运行命令着

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

               -l:显示进程名

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

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

        linux作业控制:

             前台作业:通过终端启动,且启动后一直占据终端

             后台作业:可通过终端启动,但启动后即转入后台运行(释放终端)

       如何让作业运行在后台?

                 运行中的作业:ctrl+z

        尚未启动的作业:COMMand &

                 后台作业虽然被送往后台运行,但其依然与终端相关,退出终端,将关闭后台作业,如果希望送往后台后,剥离与终端的关系

             #nohup COMMAND& #screen:COMMAND

          查看所有作业;

                jobs

        作业控制:

             #fg [[%]JOB_NUM]:把指定的后台作业调回前台

             #bg [[%]JOB_NUM]: 让送往后台的作业在后台继续运行

             #kill [%JOB_NUM]: 终止指定的作业

        进程优先级:

             默认优先级:100-139

             进程默认启动时的nice值为0,优先级为120

             只有根用户才能降低nice值(提高优先级)

        nice命令:

            nice [OPTION] [COMMAND [ARG]…]

        renice命令:

            renice [-n] priority pid…

        查看:

            ps axo pid,comm,ni

原创文章,作者:闹钟哥,如若转载,请注明出处:http://www.178linux.com/45692

(0)
闹钟哥闹钟哥
上一篇 2016-09-12
下一篇 2016-09-12

相关推荐

  • KeepAlived高可用集群详解及拓扑实验搭建配置

    Linux Cluster:KeepAlive 1.集群类型:LB(负载均衡集群),HA(高可用集群),HP(高性能集群)     LB:均衡负载的实现LVS     HA:高可用的实现KeepAlived 2.RS:健康状态检测方式: (1)网络层:icmp ping (2)传…

    Linux干货 2016-11-01
  • httpd配置

    httpd配置 修改监听的IP和端口(port) 持久连接 MPM DSO(Dynamic Shared Object) main server的文档页面路径 站点访问控制 定义站点主页面 定义路径别名 设定默认字符集 日志 基于用户的访问控制 虚拟主机 httpd状态页面 使用压缩模块mod_daflate优化速度 基于IP 为每个虚拟主机至少准备一个IP…

    Linux干货 2016-12-21
  • Linux系统启动流程与内管管理(上)

    在讲linux系统启动流程之前,来讲讲linux的组成,这样能能帮助我们深入了解系统的启动流程,废话不多说直接上系统启动流程图 linux组成 linux:kernel+rootfs kenrel的作用:进程管理、内存管理、网络管理、驱动程序、文件系统、安全管理等   rootfs:程序和glibc 库:函数结合,function,调用接口(头文件…

    系统运维 2016-09-14
  • bash的特性和目录管理命令

    bash的特性和目录管理命令 bash特性     1. 命令补全机制: 所谓的命令补全,就是当输入命令的前几个字符的时候,按下tab,此时,bash根据输入的字符串,到path路径下进行寻找,把找到的且能唯一根据这个字符串标识的命令,予以补全。 如果根据这个字符串能在一个目录下面找到多个相同的命令,则再按一下tab就能列出所有…

    Linux干货 2016-10-29
  • Linux启动流程

    内核级别: 1、POST开机加电自检 BIOS加载CMOS信息并进行开机自检,检测硬件设备是否正常并进行硬件设备初始化 2、Boot Sequence(BIOS):定义设备启动顺序 BIOS定义设备启动顺序,并读取启动设备数据加载硬盘上的第一个扇区MBR。 3、Boot Loader(MBR):bootloader功能实现 Boot Loader提供一个菜单…

    Linux干货 2016-11-23
  • Linux下的网络配置方法(二)

    Linux下配置网络的方法还可以通过修改配置文件和使用nmcli命令来完成:     1. 修改配置文件:         网络接口的配置文件为:/etc/sysconfig/network-scripts/ifcfg-INTERFACE_…

    Linux干货 2015-12-15