Linux进程管理

一、学习路线如下:

image

二、了解进程

1.什么是进程?

    进程是正在执行的一个程序或命令,每一个进程都是一个运行的实体,都有自己的地址空间,并占用一定的系统资源。

    进程具有自己的生命周期和不同的状态。

2.进程的特点

   1)独立性。

    进程是系统中独立存在的实体,它可以拥有自己的独立资源,每一个进程都有自己的私有地址空间;在没有经过进程本身允许的情况下,一个用户进程不可以直接访问其他进程的地址空间。

    2)动态性

    进程与程序的区别在于,程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合;进程具有自己的生命周期和各种不同的状态。
     3)并发性
         多个进程可以在单个处理器上并发执行,多个进程之间不会互相影响。

3.进程的生命周期

        父进程,复制自己的地址空间(fork)创建一个新的(子)进程结构。每个新进程分配一个唯一的进程 ID (PID),满足跟踪安全性之需。PID 和 父进程 ID (PPID)是子进程环境的元素,任何进程都可以创建子进程,所有进程都是第一个系统进程的后代:Centos5/6: init Centos7: systemd


     子进程,继承父进程的安全性身份、过去和当前的文件描述符、端口和资源特权、环境变量,以及程序代码。随后,子进程exec 自己的程序代码。通常,父进程在子进程运行期间处于睡眠(sleeping)状态。当子进程完成时发出(exit)信号请求,在退出时, 子进程会关闭或丢弃了其资源环境,剩余的部分称之为僵停(僵尸Zombie)。父进程在子进程退出时收到信号而被唤醒,清理剩余的结构,然后继续执行其自己的程序代码。

image

三、进程信息的查看

1.ps命令

    常用组合:

    ps aux #查看系统中所有进程,使用BSD操作系统格式
     ps -le #查看系统中所有进程,使用linux标准命令格式

    常用选项:

        a 显示当前终端下的所有进程,包括其他用户的进程
         u 显示进程拥有者、状态、资源占用等的详细信息(注意有“-”和无“-”的区别)
         x 显示没有控制终端的进程。通常与a这个参数一起使用,可列出较完整信息
         o 自定义打印内容
         -e 显示所有进程。
         -f 完整输出显示进程之间的父子关系
         -l 较长、较详细的将该进程的信息列出

[root@jiangfeng1 ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.0  0.1  19348  1560 ?        Ss   02:24   0:01 /sbin/init
root          2  0.0  0.0      0     0 ?        S    02:24   0:00 [kthreadd]
………………

    ps命令的输出

USER:该进程是由哪个用户产生的;
PID:进程的ID号;
%CPU:该进程占用CPU资源的百分比,占用越高,进程越耗资源;
%MEM:该进程占用物理内存的百分比,占用越高,进程越耗资源;
VSZ:该进程占用虚拟内存的大小,单位KB;
RSS:该进程占用实际物理内存的大小,单位KB;
TTY:该进程是在哪个终端运行的。
STAT:进程状态。
    R:运行
    S:睡眠
    T:停止状态
    s:包含子程序
    +:位于后台
START:该进程的启动时间
TIME:该进程占用CPU的运算时间
COMMAND:产生此进程的命令名

2.top命令

top [选项]
         -d 秒数:指定top命令每隔几秒更新。默认是3秒
         -b :使用批处理模式输出。一般和“-n”选项合用
         -n 次数 :指定top命令执行的次数。
     在top命令的交互模式当中可以执行的命令:
         ?或h :显示交互模式的帮助
         P :以CPU使用率排序,默认就是此项
         M :以内存的使用率排序
         N :以PID排序
         q :退出top

top - 22:33:23 up 3:13, 2 users, load average: 0.00, 0.01, 0.05 Tasks: 93 total, 1 running, 92 sleeping, 0 stopped, 0 zombie %Cpu(s): 0.2 us, 0.2 sy, 0.0 ni, 99.7 id, 0.0 wa, 0.0 hi, 0.0 si, 0.0 st KiB Mem : 1867048 total, 1566448 free, 96856 used, 203744 buff/cache KiB Swap: 4194300 total, 4194300 free, 0 used. 1588808 avail Mem 第一行:系统当前时间 ; 系统的运行时间 ; 当前登录了两个用户 ; 系统在之前1分钟,5分钟,15分钟的平均负载。一般认为小于1时,负载较小。如果大于1,系统已经超出负荷。

第二行:系统中得进程总数 ; 正在运行的进程数 ; 睡眠的进程 ; 正在停止的进程 ; 僵尸进程

第三行:用户模式占用的cpu百分比 ; 系统模式占用的cou百分比 ; 改变过优先级的用户进程占用的cpu百分比 ; 空闲CPU的CPU百分比 ; 等待输入/输出的进程的占用CPU百分比 ; 硬中断请求服务占用的CPU百分比 ; 软中断请求服务占用的CPU百分比 ; st(Steal time)虚拟时间百分比。就是当有虚拟机 时,虚拟CPU等待实际CPU的时间百分比(注:CPU占用率一般不能高于80%

第四行:整体内存 ; 使用的内存 ; 空闲的内存 ; 缓冲

第五行:交换分区的总大小 ; 使用的交换分区的大小 ; 空闲交换分区的大小 ; 作为缓存的交换分区的大小 注: 缓冲:加速数据的写入 缓存:加速数据的读取

 

四、修改进程的优先级

Linux操作系统是一个多用户、多任务的操作系统,Linux系统中通知运行着非常多的进程。但是CPU在同一个时钟周期内只能运算一个指令。进程优先级决定了每个进程处理的先后顺序。

[root@jiangfeng1 ~]# ps -le | head
F S   UID    PID   PPID  C PRI  NI ADDR SZ WCHAN  TTY          TIME CMD
4 S     0      1      0  0  80   0 -  4837 poll_s ?        00:00:01 init
1 S     0      2      0  0  80   0 -     0 kthrea ?        00:00:00 kthreadd
1 S     0      3      2  0 -40   - -     0 migrat ?        00:00:00 migration/0


     PRI代表Priority,NI代表Nice。这两个值都是优先级,数字越小代表该进程优先级越高
         注:用户只能更改Nice,不能更改Priority
             NI的值得范围是-20到19
             普通用户调整NI的范围是0到19,而且只能调整自己的进程
             普通用户只能调高NI值,而不能降低
             root用户才能设定进程NI值为负值,而且可以调整任何用户的进程
             PRI(最终值)=PRI(原始值)+NI

1.调整正在运行进程的优先级

    1)在top中修改

        在top中按’r’,输入你想要调整的PID,再输入想要更改的ni值

image

image

    2)命令行使用renice调整

    renice NI值 PID

    实例:

[root@jiangfeng1 ~]# renice -10 2972
2972: old priority 0, new priority -10

[1]+  Stopped                 top

image

2.程序运行时指定优先级(nice)


[root@jiangfeng1 ~]# nice -n -5 sleep 500 &
[2] 3025
[root@jiangfeng1 ~]# ps axo command,pid,priority,nice | grep sleep
sleep 500                     3025  15  -5
grep sleep                    3040  20   0

 

五、进程的运行状态控制

    用户通过给进程发送信息来控制进程的状态。

    常见的信号如下:

image

杀死进程的命令:

1.kill -HUP PID

2.killall [选项][信号] 进程名
             -i:交互式
             -I:忽略进程名的大小写
3.pkill [选项] [信号] 进程名
           -t:终端号

4.杀死用户进程

    注:只能超级用户才能踢出用户

image

 

六、进程的其他命令

# jobs 查看当前终端后台的进程
# fg  把后台进程放到前台来运行
# bg  把后台暂停的进程放到后台运行
# fg %1 将作业1调回到前台
# bg %2 把后台编号为2的进程恢复运行状态
posted @ 2019-07-18 21:47  better_feng  阅读(163)  评论(0编辑  收藏  举报