linux基础篇之管理Linux系统中的进程

什么是进程 (process)?

• 程序是静态的文件
• 进程是运行中的程序的一个副本
• 进程存在生命周期(准备期,运行期,终止期)
注:线程是进程的最小单位,进程是资源调配的最小单位。

进程状态

状态定义
R(TASK_RUNNING)可执行状态(RUNNING,READY)
S(TASK_INTERRUPTIBLE)可唤醒睡眠状态
D (TASK_UNINTERRUPTIBLE)不可唤醒睡眠状态
T(TASK_STOPPED)暂停状态
z( EXIT_ZOMBIE僵死态

进程查看

pstree查看进程树

在这里插入图片描述
systemd为守护进程,其作用对子进程进行初始化,在系统开启时会自动打开。

ps 命令

显示当前命令执行时进程状态。
在这里插入图片描述
在这里插入图片描述

ps功能
a显示与终端相关进程(BSD)
x显示所有与终端无关进程(BSD)
u以用户为归类来显示进程状态信息(BSD)
f层级结构显示进程信息
o指定查看选项,pid,comm,nice,pri,pcpu,stat,ppid
-e显示所有进程(uinx)
-f显示完整格式信息(unix)
-H层级结构显示进程的相关信息
-o指定查看选项,pid,comm,nice,%cpu,%mem,nice
ps a   ##显示与终端相关进程(BSD)

我们可以看到,进程显示共分为5列分别表示:PID:进程的id。TTY:进程所使用的终端,STAT:进程的状态,TIME:进程占用cpu的总时间,COMMAND:进程的名字。

ps x      ##显示所有与终端无关进程(BSD)

在这里插入图片描述

ps ax   ## 系统中所有进程

在这里插入图片描述

ps aux   ##以用户为归类来显示所有进程状态信息(BSD)

在这里插入图片描述

pa auxf  ##以用户为归类来显示所有进程状态信息(BSD)并显示层级结构。

在这里插入图片描述

ps axo pid,comm,nice stat 查看指定选项

在这里插入图片描述

ps -e    ##显示所有进程(unix)

在这里插入图片描述

ps -ef   ##显示所有进程的完整格式信息(unix)

在这里插入图片描述
我们可以看到,第一列为所属用户,第二列为pid,第三列为ppid(副级进程),第四列c为cpu用量,第五列stime代表进程运行时间,第六列tty代表进程运行所在的终端,第七列time代表进程被cpu处理的时间,第八列com代表进程的名字。

ps -efH   ##显示所有进程的完整格式信息,并显示层级结构。(unix) (缩进形式)

在这里插入图片描述

ps -eo pid,user,group,comm,%cpu,%mem,nice  ##unix风格查看指定选项

在这里插入图片描述利用sort对进程进行排序:

ps axo pid,comm,%cpu,%mem --sort=%mem          ## 对显示的进程以占用内存大小由小到大排序

若要由大到小排序,可以ps axo pid,comm,%cpu,%mem --sort=-%mem
在这里插入图片描述

PS命令显示信息

字段解释
USER用户名称
PID进程id
%CPUcpu用量百分比
%MEM内存用量百分比
VSZ占用虚拟内存大小
RSS常驻内存大小
TTY字符终端
STAT进程状态
TIME占用cpu时间
COMMAND进程名称

pgrep 显示指定信息进程

pgrep功能
-u uid显示指定用户进程
-U name显示指定用户进程
-t tty显示指定终端进程
-l显示进程名称
-a显示完整格式进程名
-P(pid)显示指定进程的子进程
pgrep -u uid   ##显示指定用户进程

显示root用户进程

pgrep -l -u uid            ##显示指定用户的进程并显示及进程名称

在这里插入图片描述

pgrep -l -U  用户名称        ##显示指定用户的进程并显示进程能名称。

在这里插入图片描述

pgrep -l -t tty          ##显示指定终端进程并显示进程名称

在这里插入图片描述pgrep -a -u 0 ##显示root用户的进程并显示完整格式名
在这里插入图片描述

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

显示守护进程的子进程

pidof根据进程名称获取pid

pidof vim        ##获取vim的pid

在这里插入图片描述

top 命令

在这里插入图片描述
top内部参数:对于上图来说,8:07:00为当前系统时间,up 54 min为系统运行时间,1 user为当前1名用户登陆系统load average: 0.00, 0.00, 0.00为系统的负载,分别为1分钟内,5分钟内,及15分钟内cpu处理的进程长度,也就是显示数值越高,队列长度越长,说明cpu负载越高。Tasks: 250 total为任务总量,1 running为1个正运行, 249 sleeping为有249的水面状态的进程,0 stopped0个暂停状态的进程。0 zombie0个僵死态进程。%Cpu(s)为cpu使用量,6.5 us为用户占用的cpu,0.7 sy为内核cpu用量,0.0 ni为进程优先级调整占用的cpu,92.6id为cpu空闲时间,0.0 wa为输入输出等待时间, 0.2 hi为硬件中断时间, 0.0 si为软件中断时间,0.0 st为被偷走的cpu用量(真机内虚拟机cpu占用),1829.1 total为物理内存总量,227.4free为空闲内存量.985.8 used为被使用的内存量,615.9buff/cache为缓存量。MiB Swap为虚拟内存用量。
在这里插入图片描述
显示的信息有PID为进程id,USER为用户名称,PR表示优先级,NI代表nice值,VIRT,为虚拟内存,RES为常驻内存,SHR为共享的资源,S为状态,% CPU为cpu用量,%MEM为内存用量,TIME+为占用cpu时间,COMMAND为进程名称。
总结如下:

top系统当期时间
up系统运行时常
user登录当前系统的用户数量
load average平均负载1分钟 5分钟 15 分钟的队列长度(uptime)
task任务
%cpucpu占用百分比
us用户空间
sy内核空间
ninice调整时间
id空闲时间
wa等待io
hi处理硬件中断
si处理软件中断
st被虚拟化程序占用的百分比
mem物理内存
swap交换分区占用

top 内部参数

参数功能
Pcpu百分比排序
M内存百分比排序
T累计占用cpu时间排序
l开启/关闭uptime信息
t开启/关闭task&cpu信息
s调整刷新频率
k终止进程
u查看指定用户进程

在top内按l开启/关闭uptime信息:
默认开启状态。
按下l后,关闭 uptime信息
在这里插入图片描述
关闭后,再次按l开启显示uptime信息

同样,在top中按t 开启/关闭task&cpu信息:
在这里插入图片描述
在top里按1,显示整体内核cpu负载:
在这里插入图片描述
按下s调整刷新频率:
在这里插入图片描述
按下k 输入进程id进行终止进程:

在这里插入图片描述
在这里插入图片描述在这里插入图片描述
按下u查看特定用户进程:
在这里插入图片描述
按下u后 输入需要查看的用户,回车:
在这里插入图片描述
在这里插入图片描述

top命令参数

top功能
-d指定刷新间隔
-b以批次方式显示
-n显示批次数量

top -d指定刷新间隔:
指定书信间隔为0.5s

top -b                ##以批次方式显示,默认时间间隔为3秒。
top -n 数量           ##指定显示批次

进程优先级

按照资源占用划分进程类型:

资源使用进程类型
cpu使用密集CPU-Bound
I/O使用密集I/O-Bound

cpu使用密集的计算量一般很大,例如视频图像处理。
|I/O使用密集的输入输出比较高,例如编译器编译。
如果cpu使用密集的程序占用的cpu比较高,就会造成i/o使用会受阻。这样显然不合适,所以在cpu使用密集的程序多分配cpu的同时调高i/o使用密集程序的优先级。

优先级范围

对Linux而言优先级被划分成固定个数(0-139)。
1-99为实时有优先级,数字越大优先级越高,不用手动处理系统自用。不能人为干预。
100-139为静态优先级,数字越小优先级越高。通常可以人为干预。
通常将100-139称为NICE值。共40个。

NICE值

NICE值:-20~19对用静态优先级。(对应静态优先级100-139,NICE值越高,优先级越低)
普通用户只可以调低优先级,超级用户任意调整。
关于优先级的命令:
查看优先级:ps ax –o stat,nice,pid,comm
在这里插入图片描述
默认情况下,进程的优先级为120,NICE值为0。
在这里插入图片描述
可以看到,此时vim的nice值为0。
使用 renice -n 优先级 程序id来修改vim程序的nice值。

在这里插入图片描述在这里插入图片描述
vim的NICE值被修改为10。
开启进程时指定优先级:
新打开vim并将其后台运行:vim&
ps ax –o stat,nice,pid,comm查看
在这里插入图片描述
使用 nice -n 5 vim&将后台的vim的优先级调至5:
在这里插入图片描述

进程前后台调用

在终端运行一些指令的时候,往往会占用整个终端例如gedit:
在这里插入图片描述
如果在终端中ctrl+c将进程结束,会发现gedit就被结束。如果需要用到终端而且也要用到gedit程序,我们就需要使gedit在后台进行运行。
进程前后台调用相关命令:

指令含义
jobs查看后台任务
ctrl+z将前台运行进程打入后台
bg激活后台进程
fg调回进程
&运行在后台

利用ctrl+z将gedit后台运行:
在这里插入图片描述
使用ps o stat comm 查看进程状态和进程名称:
在这里插入图片描述
可以看到,gedit的状态为Tl暂停状态,此时刚打开的gedit不可用。
用jobs查看在后台的进程:
在这里插入图片描述
我们可以使用bg+job号将后台进程进行激活:
在这里插入图片描述
在这里插入图片描述
此时gedit有stopped变为Running、

  • 但是不能用bg将vim唤醒:
    在这里插入图片描述
    我们可以看到,使用bg将vim进行唤醒后的结果 vim状态仍然为Stopped。因为vim运行时必须占用终端,当被激活后又被系统打入后台挂起,所以需要将其调回前台:fg 2
    在这里插入图片描述
    或者使用gedit & 或者vim &可在进程开启时将进程后台运行。

进程的信号

  • nam 7 signal
    在这里插入图片描述可以看到进程的信号为1-30

可控信号类型

可控信号含义
1刷新
2中断键盘输入
3退出键盘
9强制结束
15正常关闭
18激活进程
19强制暂停
20正常暂停

2:中断键盘输入
在这里插入图片描述
可以看到pid为2723的 bash进程,在pts/0终端,键盘在终端输入会被捕捉。
在这里插入图片描述新打开一个shall,使用kill -2 pid 终止键盘输入。等同 ctrl+c。

3:退出键盘,快捷键使用ctrl+/可以中断鼠标退出键盘。
9:强制结束
killall -9 comm 可以结束comm的所有进程
在这里插入图片描述
15:正常关闭
在这里插入图片描述
19:正常暂停
在这里插入图片描述
18:对暂停的进程进行激活
在这里插入图片描述
19:强制暂停,不会被系统阻塞
20:正常暂停,可能会被系统阻塞

信号指令

  • kill 信号 pid
  • pkill 信号 进程
  • killall 信号 comm
  • 在这里插入图片描述

系统守护进程

  • 守护进程就是通常讲Daemon进程
  • 是linux后台执行的服务进程
  • 是独立于控制终端、周期性地执行某种任务或等待处理某些发生事件
  • 不会随终端关闭而停止,直到接受停止信息才会结束

实验环境的设定:
使用nm-connection-editor 设定虚拟机网络:
真实主机网关为:172.25.254

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
可以看到网络设置成功,并用 ipaddr show查看:
在这里插入图片描述
可以看到我们设置的虚拟机网络, 此时用虚拟机ping真机看为网络是否连通:
在这里插入图片描述
在ping时如果失败尝试关闭真机的火墙:systemctl stop firewalld
在真实主机尝试连接虚拟机:ssh -l 172.25.254.119
在这里插入图片描述
在这里插入图片描述
输入虚拟机root用户密码之后成功连接上虚拟机,此时我们做的所有操作均在虚拟机里。
真实主机之所以能连接上虚拟机,是因为虚拟机李默认开启了sshd进程,允许其他人连接:
在这里插入图片描述
而sshd是由许多的程序组成的一个程序簇,具有复杂个功能,我们将它叫做服务(service)。服务是提供给别人使用的。注意这种服务型的进程不能用kill pkill killall进行管理,而是用systemctl。

系统中所有进程的开启都是守护进程的子进程,所以守护进程也对于服务进程进行控管。

守护进程类型

守护进程类型使用系统及特点
Sysv init经典的守护进程类型延用到rhel6
upstar做到并行启动rhel6中应用
systemd独立完成启动,rhel7中
  • Sysv init 按照次序将服务依次启动(链式开启),启动速度慢。
  • upstart 并行启动服务进程,只在rhel6中应用。
  • systemd可以独立完成启动,只需打开systemd,其他后续的服务会根据systemd的控制进行初始化。大幅度加快系统启动速度。

systemctl用法之一

指令用途
systemctl list-unit-files查看服务开机运行情况
systemctl list-units查看服务当前运行情况
systemctl list-dependencies查看服务依赖性
systemctl status service查看服务状态
systemctl start service开启服务
systemctl stop service关闭服务
systemctl reload service重新加载服务

systemctl list-units 查看服务当前运行情况:
在这里插入图片描述
systemctl list-unit-files 查看服务开机运行情况:
在这里插入图片描述
enabled为开机自动开启,disabled为开机不自动开启,static为静态(需要时候就自动打开)通常根据某些服务的需要而打开。
systemctl list-dependencies service查看服务依赖性
在这里插入图片描述
systemctl status service 查看服务状态:
在这里插入图片描述
systemctl stop service 关闭服务:
在这里插入图片描述
sstemctl start service 开启服务:
在这里插入图片描述
systemctl reload service 重新加载服务:
当更改完系统配置时,不能重启服务的情况下,可以用systemctl reload service 重新加载服务。

systemctl用法之二

指令用途
systemctl restart servic重新启动服务
systemctl enable servic设定服务开启启动
systemctl enable --now servic设定服务开机启动并开启服务
systemctl disable servic设定服务开机关闭
systemctl set-default multi-user.target设定系统运行级别为无图形网络模式
systemctl set-default graphical.target设定系统运行级别为图形网络
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值