程序管理

程序管理学习目标 程序和程式 程序的观察 ps pstree top 动态观察程序的变化 具有 SUID SGID 权限的指令执行状态 学习内容 1 程序和程式 程式 program 通常为 binary program 放置在存储介质中 如硬盘 光碟

大家好,我是讯享网,很高兴认识大家。

学习目标:

程序和程式
程序的观察(ps pstree )
top:动态观察程序的变化
具有 SUID/SGID 权限的指令执行状态

学习内容:

1、程序和程式
程式 (program):通常为 binary program ,放置在存储介质中 (如硬盘、光碟、磁帶等),为实体档案的型态存在;一个程式可以生成多个程序。

程序(process):程式被触发后,执行者的权限与属性、程式的程式码与所需资料等都会被载入内存中,作业系统并给予这个内存的单元一个识别码(PID),可以说,程序就是一个正在运作中的程式。

程式一般是放置在实体磁碟中,然后透过使用者的执行來触发。触发后会载入到记忆体中成為一个个体,那就是程序。 為了作业系统可管理這个程序,因此程序有給予执行者的权限/属性等参数,并包括程式所需要的指令码与资料或档案资料等,最后再给予一个PID 。系統就是透过这个PID 來判断该 process 是否具有权限进行工作的!
在这里插入图片描述
讯享网
父进程与子进程

我们登入系統后,会取得一个 bash 的 shell ,然后,我们用這个 bash 提供的介面去执行另一个指令,例如 /usr/bin/passwd 或者是 touch 等等,那些另外执行的指令也會被触发成为PID ,那个后來执行指令才产生的 PID 就是子程序,而在我们原本的 bash 环境下,就称为父程序

在这里插入图片描述
2、程序的观察
ps与 pstree

-A :所有的 process 均显示出來,与 -e 具有同样的效用;
-a :不与 terminal 有关的所有 process ;
-u :有效使用者 (effective user) 相关的 process ;
-x :通常与 a 这个参数一起使用,可列出较完整信息。 输出格式规则:

-l :较长、较详细的将该 PID 的的信息列出
-j :工作的格式 (jobs format)
-f :做一个更为完整的输出

pstree 显示出程序关系树 -A
在这里插入图片描述
pstree - Aup 额外显示用户资料与PID
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
F (flag):代表程序的总结旗标,常见为4 代表 root
S (stat):状态列,主要的分类项目有:
R (Running):该程式正在运作中;
S (Sleep):该程式目前正在睡眠状态(idle),但可以被唤醒(signal)。
D :不可被唤醒的睡眠状态,通常这支程式可能在等待 I/O 的情況(ex>列印)
T :停止状态(stop),可能是在工作控制(背景暂停)或除错 (traced) 状态;
Z (Zombie):僵尸状态,程序已经终止但却无法被移除至内存外。
UID/PID/PPID:代表此程序被该 UID 所拥有/程序的 PID 号码/此程序的父程序 PID 号码
C:代表 CPU 使用率,单位为百分比;
PRI/NI:Priority/Nice 的缩写,代表此程序被 CPU 所执行的优先顺序,数值越小代表该程序越快被 CPU 执行。
ADDR/SZ/WCHAN:都与内存有关,ADDR 是 kernel function,指出该程序在内存的哪个部分,如果是个 running 的程序,一般就会显示- / SZ 代表此程序用掉多少内存 / WCHAN 表示目前程序是否运作中,同样的, 若为-表示正在运作中。
TTY:登入者的终端机位置,若为远端登入则使用动态终端介面 (pts/n);
TIME:使用掉的 CPU 时间,注意,是此程序实际花费 CPU 运作的时间,而不是系统时间;
CMD:就是 command 的缩写,造成此程序的触发程式之指令为何

3、top:动态观察程序的变化
id 越高代表系统越闲置,wa 越高代表程序卡在硬盘或者网络上,此时系统性能比较差
选项与参数:
-d :后面可以接秒数,就是整个程序更新更新的秒数。默认是 5 秒
-b :以批次的方式执行 top ,还有更多的参数可以使用
通常会搭配资料流重导向来将批次的结果输出成为档案
-n :与 -b 搭配,意义是,需要进行几次 top 的输出结果
-p :指定某些个 PID 来进行观察检测而已 在 top 执行过程当中可以使用的按键指令:

? :显示在 top 当中可以输入的按键指令
P :以 CPU 的使用资源排序显示
M :以 Memory 的使用资源排序显示
N :以 PID 来排序
T :由该 Process 使用的 CPU 时间累计 (TIME+) 排序
k :给予某个 PID 一个信号 (signal)
r:给予某个 PID 重新定制一个 nice 值
q :离开 top 软件的按键
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4具有 SUID/SGID 权限的指令执行状态

SUID 权限仅对二进制程式(binary program)有效;
. 执行者对于该程式需要具有 x 的可执行权限
.本权限仅在执行该程式的过程中有效(run-time)
. 执行者将具有该程式拥有者 (owner) 的权限

对于文档SGID 的功能為为:
.SGID 对二进制程式有用
.程式执行者对于该程式来说,需具备 x 的权限
. 执行者在执行的过程中将会获得该程式群组的支援

对于目录来说SGID ,当一个目录设定了 SGID 之后,会具有如下的功能:
. 使用者若对于此目录具有 r 与 x 的权限时,该使用者能够进入此目录
. 使用者在此目录下的有效群组(effective group)将会变成该目录的群组
. 用途:若使用者在此目录下具有 w的权限(可以新建文档),则使用者所建立的新文档,该新文档的群组于此目录的群组相同

5 、程序的优先序PRI与 NI
有时候 有些程序需要优先执行 ,这时候需要设置他的PRI值 ,PRI数值越小,优先级越高 。
在这里插入图片描述
在这里插入图片描述

PRI(new) = PRI(old) + nice
nice 值可调整的范围为-20 ~ 19 ;
root 可随意调整自己或他人程序的Nice 值,且范围为-20 ~ 19 ;
一般使用者仅可调整自己程序的Nice 值,且范围仅为0 ~ 19 (避免一般用户抢占系统资源);
一般使用者仅可将nice值越调越高,例如本来nice 为5 ,则未来仅能调整到大于5;

bash 环境下的工作管理

6、job control 工作管理
工作管理 是用在bash 环境下的 ,当我们登入系统取得bash shell 后,在单一端机界面下同时进行多个工作的行为管理。举个例子,我们登入bash后,想要一边复制档案,一边进行资料搜索,一边进行编译。使用job control 可以在一个bash 内达成 。
1、&:把程序放到后台中去运行
在这里插入图片描述
在这里插入图片描述
2、将运行中的程序放到后台中去暂停

[ctrl]-z:当程序运行时,摁下[ctrl]-z程序就会停止并存入后台方便后面拿出来运行
在这里插入图片描述
3观察后台工作状态 jobs

-l :除了列出 job number 与指令串之外,同时列出 PID 的号码;
-r :仅列出正在背景 run 的工作;
-s :仅列出正在后台中暂停(stop) 的工作。
在这里插入图片描述
在这里插入图片描述
4、fg 将后台的程序拿到前台来运行完成

在这里插入图片描述

在这里插入图片描述
5 把后台暂停的程序变成运行中完成 bg

6、kill

kill:将后台的程序杀死掉
kill 后面接的数字预设会是 PID ,如果想要管理 bash 的工作控制,就得要加上 %数字 了
-l :这个是 L 的小写,列出目前 kill 能够使用的信号 (signal) 有哪些
signal :代表给予后面接的那个工作什么样的指示,用 man 7 signal 知:

-1 :重新读取一次参数的设定档 (类似 reload)
-2 :代表与由键盘输入 [ctrl]-c 同样的动作
-9 :立刻强制删除一个工作
-15:以正常的程序方式终止一项工作。与 -9 是不一样的

在这里插入图片描述

在这里插入图片描述
7、离线管理的问题

在工作管理当中提到的后台指的是在终端机模式下可以避免 [ctrl]-c 中断的一个情景,你可以说那个是 bash的后台,并不是放到系统的后台
at 是将程序放置到系统后台,nohup 可以让你在离线或登出系统后,还能够让程序继续进行
在这里插入图片描述

小讯
上一篇 2025-01-16 18:58
下一篇 2025-04-06 09:47

相关推荐

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容,请联系我们,一经查实,本站将立刻删除。
如需转载请保留出处:https://51itzy.com/kjqy/29595.html