Linux——进程管理

什么是进程

进程是已启动的可执行程序的运行实例,(其实进程不执行的时候就是一个文件),进程有以下组成部分:

  • 已分配内存的地址空间;
  • 安全属性,包括所有权凭据和特权;
  • 程序代码的一个或多个执行线程;
  • 进程状态。

程序∶具有执行代码和执行权限的文本文件,是静态的,如:/usr/bin/passwd ,/usr/sbin/useradd
进程∶是程序运行的过程,动态,有生命周期及运行状态。

一个文件如何变成进程

在这里插入图片描述

windows上的进程

在任务管理器上可以查看:
在这里插入图片描述

进程的生命周期

在这里插入图片描述

  • 父进程复制自己的地址空间( fork )创建一个新的(子)进程结构。一般父进程fork子进程之后,父进程的状态就变成sleeping,子进程的状态就是runing。
  • 每个新进程分配一个唯一的进程ID(PID ),满足跟踪安全性之需。
  • 任何进程都可以创建子进程。
  • 任何系统都会有一个电源接通就执行的进程,所有进程都是第一个进程的后代,第一个进程就称为系统进程:
    Centos5/6系统进程: init
    Centos7系统进程: systemd, 该进程的PID是1

进程的状态

  • R:running运行状态
  • T:stopped状态
  • Z:zombie卡死状态
  • S:sleeping休眠状态

进程管理

静态查看进程ps

基本用法

ps是查看进程linux进程的工具。
命令 ps aux:用于查看系统运行的进程
ps aux | head -2: 之查看前两行的进程
ps aux | grep vim: 查找vim进程

eg运行:ps aux | head -2输出如下内容:

USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  1.8  0.3 128436  6384 ?        Ss   23:08   0:09 /usr/lib/systemd/systemd --switched-root --system --deserialize 22

列:

  • USER :运行进程的用户
  • PID:进程的唯一标识
  • %CPU:CPU占用率
  • %MEM:内存占用率
  • VSZ:占用虚拟内存
  • RSS:占用实际内存
  • TTY:进程运行的终端, 不同的终端窗口有自己的标识。如果是?表示本机启动的进程。
  • STAT:进程的状态:s(进程sleeping)、
  • START:进程的启动时间
  • TIME:占用CPU的总时间
  • COMMAND:路径,表示哪个程序

携带参数

ps a 显示终端机下的所有进程
ps u 以用户为主的格式来显示程序状况
ps x 不以终端机来区分

进程排序查看

ps aux --sort -需要排序的列(-减号表示降序, 没有减号默认升序)
eg:
ps aux --sort %cpu: 表示以%cpu列升序排列

父子进程

ps -ef : 可以查看进程的父子关系
PPID:表示父进程的PID是多少
PID:表示该进程的唯一标识
eg:
执行ps -ef 后:
在这里插入图片描述

查看进程指定列

ps axo 需要查看的列(以,进程分割)
eg:

ps axo user,pid,ppid,%mem,command | head -3

输出:

USER        PID   PPID %MEM COMMAND
root          1      0  0.3 /usr/lib/systemd/systemd --switched-root --system --deserialize 22
root          2      0  0.0 [kthreadd]

动态查看进程top

top可以实时查看进程状态。
命令:top(只有一个top),效果如下
在这里插入图片描述
其他参数

  • top -d 3:系统每3秒刷新一次
  • top -p 进程号:只查看某一个程序(查看多个进程,进程号使用,分隔)

系统的性能部分

第一行:

top - 00:42:01 up 17 min,4 users,load average: 0.400.240.32
  • top: 程序名
  • 00:42:01: 系统时间
  • up 17 min:程序运行时间
  • 4 users:登陆用户数
  • load average: 0.40,0.24,0.32:CPU负载, 在5分钟,10分钟,15分钟的CPU占用率。

第二行:

Tasks: 217total, 2 running,215 sleeping,0 stopped, 0 zombie
  • Tasks: 217total : 总进程数,计算机开了多少个程序
  • 2 running:两个运行的进程
  • 215 sleeping:215个睡眠的程序
  • 0 stopped:0个停止的进程
  • 0 zombie:0个卡死的进程

第三行:

Cpu(s): 7.1 us,17.3 sy,0.0 ni,75.3 id,0.0 wa,0.0 hi,0.3 si,0.0 st

CPU占用率:

  • 7.1 us:用户进程占用率
  • 17.3 sy:系统进程占用率
  • 0.0 ni:ni表示优先级进程占用率
  • 75.3 id:id表示cpu空闲的占用率
  • 0.0 wa:wa表示cpu等待时间
  • 0.0 hi:表示硬件占用的内存
  • 0.3 si:表示软件占用的内存
  • 0.0 st:表示虚拟机占用的内存

第四行:

KiB Nem : 2027864 total, 549988 free, 758648 used, 719228 buff/cache

物理内存占用情况
KiB Nem :

  • 2027864 total :系统总内存:2个G
  • 549988 free:0.5G的空闲内存
  • 758648 used:0.7G的已占用内存
  • 719228 buff/cache:0.7G的缓存

第五行:

KiB Swap: 2097148 total,2097148 free,used.1097756 avail Mem

虚拟内存(交换分区——存放常用数据)占用情况:
KiB Swap:

  • 2097148 total:系统的虚拟内存2个G
  • 2097148 free:系统的空闲虚拟内存2个G
  • 0used:系统使用中的虚拟内存0个G

系统的进程

和ps查看进程类似

PID USER PR  NI  VIRT  RES  SHR  S  %CPU  %MEM TIME+ COMMAND
  • PID:进程的唯一标识
  • USER:运行进程的用户
  • PR :进程在系统中的优先级
  • NI:进程的nice优先级(该优先级可以手动调整,+20就是系统优先级PR)
  • VIRT:
  • RES:
  • SHR:
  • S:进程的状态
  • %CPU:CPU占用率
  • %MEM:内存占用率
  • TIME+:占用CPU的总时间
  • COMMAND:路径,表示哪个程序

top常用内部指令

运行成功top指令后,页面停留在上述界面,此时可以使用如下指令进行内存的查看。

  • h|? :帮助
  • M:按内存的使用排序
  • P:按CPU的使用排序
  • N:以PID的大小排序
  • <:向前
  • >:向后
  • z:彩色,Z设置彩色,使用数字调整

使用信号控制进程

信号种类

执行kill -l 可以查看所有的信号种类:

编号信号名
1SIGHUP重新加载配置
2SIGINT键盘中断Ctrl+C
3SIGQUIT键盘退出Ctrl+\,类似SIGINT
9SIGKILL强制终止,无条件,直接从内存杀死
15SIGTERM终止(正常结束),默认值
18SIGCONT继续
19sIGSTOP暂停
20SIGTSTP键盘暂停Ctrl+Z

15号比9号更安全,当程序卡死的时候可以直接使用9

使用控制信号

kill -信息编号 进程号 (信息编号不写的话默认是15)
kill -1 进程号 : 重新加载进程的配置信息
kill -2 进程号 : 中断进程,等效于ctrl + c

进程优先级nice

每个CPU在一个时间点上只能处理一个进程,通过时间片技术来同时运行多个程序,默认情况下所有进程占用的时间片是一样的,也就是说优先级是一样的。

优先级特性

nice的数值表示优先级的大小,优先级的取值是-20到19
nice值越大,表示优先级越低,例如+19
nice值越小,表示优先级越高,例如-20

系统的优先级

系统的优先级有两种:

  • 一种是用nice值控制的,取值是-20到19,我们可以调整,
  • 还有一种是比nice权重更大的优先级PR,我们不能控制。取值是-99到39,其中0到39是由nice控制的。
    在这里插入图片描述

查看进程的nice级别

  • ps指令查看优先级
    ps axo pid,command,nice --sort=-nice
    展示进程的pid(进程id),command(进程名),nice(优先级)列。

eg:执行ps axo pid,command,nice --sort=-nice命令:

 PID COMMAND                      NICE
  32 [khugepaged]                 19
 766 /usr/sbin/alsactl -s -n 19   19
2379 /usr/libexec/tracker-extrac  19
2382 /usr/libexec/tracker-miner-   -
2386 /usr/libexec/tracker-miner-  19
2392 /usr/libexec/tracker-miner-   -
  • top指令查看优先级
    top -d 1 -p 32
PID USER      PR  NI    VIRT    RES    SHR S %CPU %MEM     TIME+ COMMAND            
 32 root      39  19       0      0      0 S  0.0  0.0   0:01.08 khugepaged 

PR表示的是该进程在系统中的优先级
NI表示的是该进程的nice优先级
NI+20 = PR

设置进程的优先级

  • 默认进程下,启动进程时,通常会继承父进程的nice级别,默认为0。
    我们可以在启动进程的时候设置进程的优先级,nice值:
    nice -n -5 启动进程的命令
    eg:
    nice -n -5 sleep 6000 &:就是启动一个sleep6000秒的进程并且优先级是-5
    sleep 6000 &:是sleep进程的启动命令,&表示在后台进行,不影响页面的正常输入。
[root@localhost ~]# nice -n -5 sleep 6000 &
[1] 4532
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
  4546 sleep 60                      0
  4550 grep --color=auto sleep       0
  4532 sleep 6000                   -5
  • 已经运行的程序也可以设置优先级
    renice 优先级 进程号
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
  4546 sleep 60                      0
  4550 grep --color=auto sleep       0
  4532 sleep 6000                   -5
[root@localhost ~]# renice -20 4532
4532 (进程 ID) 旧优先级为 -5,新优先级为 -20
[root@localhost ~]# ps axo pid,command,nice --sort=-nice | grep sleep
  4719 sleep 60                      0
  4759 grep --color=auto sleep       0
  4532 sleep 6000                  -20

作业控制

作业控制的概念

作业控制是一个命令行功能,也叫后台运行。

前台进程和后台进程

前台进程:(foreground:fg)在终端中运行的命令,站领终端。
后台进程:(background:bg)没有控制终端,他不需要终端的交互,看不见,但是在运行

后台进程控制

设置后台进程

  • &:正常情况下在终端输入的命令就是前台进程,例如当我们在终端输入sleep 5,5秒内终端是被占用的状态我们无法再执行其他的命令。
    此时我们将进程放置到后台就不会影响页面的操作。
    放置后台的操作:执行进程的时候再末尾添加&符号即可,如sleep 5 &
  • ctrl + z:表示将当前运行的前台进程直接放置到后台,但是通过这种方式伸直的后台进程的状态是终止

查看后台进程

job 命令可以直接查看后台运行的进程
eg:

[root@localhost ~]# jobs
[1]   运行中               nice -n -5 sleep 6000 &
[2]   运行中               sleep 6000 &
[3]-  运行中               sleep 5000 &
[4]+  运行中               sleep 7000 &

+ 表示最新的后台进程
第一列表示进程在后台进程的进程号

调动后台进程到前台

  • fg 后台进程的进程号表示将后台指定进程调动到前台
    eg:fg 4, 就表示将 sleep 7000 &进程放置到前台
  • bg 后台进程的进程号 可以重新将后台停止运行的程序运行起来

消灭后台进程

kill %后台进程号
注意:“kill 1”和“kill%1”不同,前者终止PID为1的进程,后者杀死作业序号为1的后台程序。

虚拟文件系统proc

虚拟文件系统是指不是真实存在的,虚拟内容一般存储在/proc文件夹中,虚拟文件系统采集服务器自身内核、进程运行的状态信息。

  • 系统CPU的信息:/proc/cpuinfo,存储cpu的各种文件参数
  • 系统内存信息:/proc/meminfo,存储系统的内存信息
  • 系统内核信息:/proc/cmdline,存储系统的内核信息

补充:内存和外存

内存和外存是计算机中两种重要的存储设备,它们的工作原理和作用不尽相同:

  • 存储方式:
    内存(RAM):也被称为主存储器或RAM(随机存取存储器),是一种暂时存储数据的装置,供计算机在运行时直接使用。数据在内存中的存储极易被更改,并且当计算机断电时,内存中的所有数据将被清除。
    外存储器:也被称为辅助存储器,是用来长期保存数据的装置,如硬盘、U盘等。

  • 存储容量:
    内存:内存的大小通常较小,一般在GB或TB规模,以满足计算机快速处理任务的需要。
    外存储器:外存储器的容量很大,可以达到数GB甚至TB。

  • 存取速度:
    内存:内存的访问速度非常快,能够满足处理器快速处理信息的需求
    外存储器:外存储器的访问速度相对较慢,但用于存储长期的,不经常变。

  • 价格
    内存:贵。
    外存:便宜。

内存和外存的合作关系:

  • 运行过程中,处理器运行程序必须要从内存中读取,因为内存的读写速度非常快,能够满足高速运行计算机程序的需要。而内存中的数据需要提前从外存加载到内存中以供处理器(CPU)快速处理。内存是计算机的临时存储设备,当程序运行完毕,不再需要这些数据时,这部分内存可以被清空,释放出来。
  • 外存的读取速度大概是 50MB/S,内存的读取速度大概是800MB/S,CPU的读取速度大概是1000MB/S,显然外存的速度远远达不到CPU运行的速度, 所以,内存存在的原因是因为它可以提供给处理器极高的数据访问速度,是计算机运行必不可少的部分。

其实内存也并不是一个虚无飘渺的东西,它也需要物理介质来存储数据,如:内存条。内存的物理介质通常是半导体器件(如DRAM芯片),它能够存储并快速获取数据,从而实现计算机程序的运行。同时这种物理介质是易失的,也就是说,当断电或重新启动计算机后,其中的数据将消失。

补充:查看内存的指令

free -查看的单位
m: MB单位
g:GB单位
k:KB单位
eg:

[root@localhost ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           1980         782         126          19        1072        1028
Swap:          2047           0        2047

补充:查看磁盘空间

df -hT

[root@localhost ~]# df -hT
文件系统                   类型      容量  已用  可用    已用% 挂载点
devtmpfs                devtmpfs  974M     0  974M    0% /dev
tmpfs                   tmpfs     991M     0  991M    0% /dev/shm
tmpfs                   tmpfs     991M   11M  980M    2% /run
tmpfs                   tmpfs     991M     0  991M    0% /sys/fs/cgroup
/dev/mapper/centos-root xfs        17G  5.4G   12G   32% /
/dev/sda1               xfs      1014M  172M  843M   17% /boot
tmpfs                   tmpfs     199M   40K  198M    1% /run/user/0
/dev/sr0                iso9660   4.4G  4.4G     0  100% /run/media/root/CentOS 7 x86_64
  • 17
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值