Linux进程管理1

1. 进程基本概述

进程是已启动的可执行程序的运行中实例。

/proc目录下以数字为名的目录,每一个目录代表一个进程,保存着进程的属性信息。每一个进程的PID是唯一的,就算进程退出了,其它进程也不会占用其PID。

1.1进程的组成部分

  1. 已分配内存的地址空间
  2. 安全属性,包括所有权凭据和特权
  3. 程序代码的一个或多个执行线程
  4. 进程状态
  5. 进程的环境
  6. 本地和全局变量
  7. 当前调度上下文
  8. 分配的系统资源,如文件描述符和网络端口

1.2进程的环境

  1. 本地和全局变量
  2. 当前调度上下文
  3. 分配的系统资源,如文件描述符和网络端口

1.3进程的分类

前台进程: 与终端相关的进程,通过终端启动的进程
注意: 也可把在前台启动的进程送往后台,以守护模式运行
守护进程:daemon,与终端无关的进程(如内核),在系统引导过程中启动的进程

2. 进程状态

Excuting                              *//运行态*
Ready                                 *//就绪态,也可以称作睡眠态*
Uninterruptible sleep                 *//不可中断的睡眠。不可随时唤醒,只有当IO资源加载成功后才能唤醒*
Interruptible sleep                   *//可中断的睡眠。可随时唤醒*
Zombie                                *//僵尸进程。正常运行结束了,但是不释放占据的内存* 
Stopped                               *//停止态,暂停于内存中,但不会被调度,除非手动启动之*

3. 进程优先级

<0-139>:数字越小,优先级越高!
<0-99>:实时优先级,内核调整
<100-139>:静态优先级,用户可控制

4. 进程管理命令

ps(process state)命令用于列出当前的进程。可以显示详细的进程信息

*//常用选项*:
a                 *//显示所有与终端有关的进程*
u                 *//显示进程是由哪个用户启动的*
x                 *//显示所有与终端无关的进程*

-e                *//显示所有进程,与-A效果相同*
-l                *//以长格式显示*
-F                *//显示更详细的完整格式的进程信息*
-f                *//显示更详细的完整格式的进程信息*
-H                *//以进程层级格式显示进程相关信息*
-o                *//根据自己的需要选择要显示的字段*  

[root@localhost ~]# ps -o pid,comm,ni       *//表示只显示进程号,命令,nice值三个字段*
   PID COMMAND          NI
  8828 bash              0
  9844 ps                0

    
*//aux结果解析:*
    VSZ            *//Virtual memory SiZe,虚拟内存集*
    RSS            *//ReSident Size,常驻内存集*
    STAT           *//进程状态*
    TIME           *//运行时的累积时长*
    
*//ps命令结果解析:*
    NI             *//nice值*
    PRI            *//优先级*
    PSR            *//进程运行在哪个CPU核心上*
    RTPTRIO        *//实时优先级*
    C              *//运行的CPU编号*
    STIME          *//进程的启动时间*
    VSZ            *//Virtual memory SiZe,虚拟内存集*
    RSS            *//ReSident Size,常驻内存集*
    STAT           *//进程状态*
    TIME           *//运行时的累积时长*

vmstat虚拟内存状态查看命令

[root@localhost ~]# vmstat 1000



procs:
    r(running)                  *//表示等待运行的队列长度,也即等待运行的进程的个数*
    b(block)                    *//表示阻塞队列长度,也即处于不可中断睡眠态的进程个数*
memory:
    swpd                          *//交换内存的使用总量*
    free                          *//空闲物理内存总量*
    buffer                        *//用于buffer的内存总量*
    cache                         *//用于cache的内存总量*
swap:
    si(swap in)                 *//表示从物理内存有多少页面换进swap,也即数据进入swap的数据速率(kb/s)*
    so(swap out)                *//表示从swap有多少页面换进物理内存,也即数据离开swap的数据速率(kb/s)*
io:
    bi(block in)                *//表示磁盘块有多少个被调入内存中,也即从块设备读入数据到系统的速率(kb/s)*
    bo(block out)               *//表示有多少个磁盘块从内存中被同步到硬盘上去了,也即保存数据至块设备的速率(kb/s)*
system:
    in( interrupts)             *//表示中断的个数,也即中断速率(kb/s)*
    cs(context switch)          *//表示上下文切换的次数,也即进程切换速率(kb/s)*
CPU:
    us                            *//表示用户空间*
    sy                            *//表示内核空间*
    id                            *//表示空闲百分比*
    wa                            *//表示等待IO完成所占据的时间百分比*
    st                            *//表示steal,被虚拟化技术偷走的时间(比如运行虚拟机)*

5. 在后台运行作业

*//在命令后跟上&符号可以生成一个后台作业*
[root@localhost ~]*# sleep 1000 &*
[1] 1819

*//jobs命令用于显示当前所有的后台作业*
[root@localhost ~]*# jobs*
[1]+  Running                 sleep 1000 &

*//fg命令用于将后台作业调至前台运行*
[root@localhost ~]# *fg*
*//当只有一个后台作业时,直接使用fg命令,不跟任何参数即可将后台作业调至前台运行,但是当有多个作业时则必须跟上%+作业号,也就是上面命令执行结果中以[]括起来的数字。*
[root@localhost ~]*# jobs*
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 500 &
[root@localhost ~]*# fg %1*

*//使用ctrl+z可将前台进程发送到后台,此时作业将处于停止状态*
[root@localhost ~]*# fg %1*
sleep 1000
^Z
[1]+  Stopped                 sleep 1000

*//使用bg命令+作业号可使后台已停止的作业重新运行*
[root@localhost ~]*# bg %1*
[1]+ sleep 1000 &
[root@localhost ~]*# jobs*
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 500 &

*//kill加上作业号可以手动杀死指定作业*
[root@localhost ~]*# jobs*
[1]-  Running                 sleep 1000 &
[2]+  Running                 sleep 500 &
[root@localhost ~]*# kill %1*
[1]-  Terminated              sleep 1000
[root@localhost ~]*# jobs*
[2]+  Running                 sleep 500 &

//jobs命令的结果中
    +     //命令将默认操作的作业
    -     //命令将第二个默认操作的作业
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值