linux中的进程管理

  • 一、进程和线程
    • 1、进程
    • 2、线程
  • 二、进程查看命令(man ps)
    • 1、图形查看进程
    • 2、ps命令(用来查看进程信息)
      • 1、bsd风格
      • 2、unix风格
      • 3、gun风格
    • 3、pgrep和pidof 命令的用法
    • 4、top 动态进程查看
  • 三、系统优先级
  • 四、进程前后台调用
  • 五、进程信息号
  • 六、守护进程
    • 1、设定实验环境
    • 2、利用守护进程控制服务
  • 七、系统登录审计体系
    • 1、w   显示正在登陆系统的账号
    • 2、last   登陆成功现在已经退出的
    • 3、lastb   试图登陆但未成功

一、进程和线程

1、进程

程序是静态的代码文件;进程是指程序运行时的形态
进程是程序的一个副本(复制程序到内存,相当于副本)
进程是有生命周期的
    准备期:准备资源(类似于执行“打扫教室任务”前,“拿扫把”)
    运行期:执行过程
    终止期:执行后程序所占用的系统资源被回收

程序存在硬盘上,硬盘中的内容要先放到内存中进行缓存,才能被cpu读到,之后才能进行相应运算。
同样的,在内存中计算出的结果,要放到硬盘中进行永久保存。

2、线程

进程是资源调用的最小单位
线程是进程的最小单位
程序执行流是从上倒下贯穿运行的
当进程是多任务物,cpu是多核心,多任务应该同时被每个核心处理,每个核心处理的任务叫线程
线程资源是共享的。

进程状态

    R(TASK_RUNNING)   可执行态(running,ready):正在被cpu处理,或已经加载好等待被cpu处理
    S(TASK_INTRRUPTABLE)   可唤醒休眠:使用cpu超时,进入休眠,再次使用时需要被激活
    D(TASK_UNINTRRUPTABLE)   不可唤醒休眠:使用cpu超时,仍有资源没有被加载好,不可以使用cpu,等待加载的时间段就是不可唤醒状态。
    T(TASK_STOP)   暂停状态:暂停状态都是人为的在操作,人为的把一个程序暂停,关闭无法使用或暂时不需要的程序,可以人为唤醒
    Z(EXIT_ZOMBLE)   僵死态:**进程已经结束,却占用资源不放,需要手动结束程序。**这是一种“bug”、是系统的漏洞。

二、进程查看命令(man ps)

1、图形查看进程

方法一:gnome-system monitor gnome:图形界面

方法二:或者在有图形的情况下,选择utilities-system monitor
但是在企业中一般不用。

2、ps命令(用来查看进程信息)

ps命令也是用来查看进程信息的,但不该命令不依赖于图形。在文本界面下就可以显示进程信息。

命令的三种执行风格 unix bsd GNU
所谓执行风格,就是一种书写规范:
Unix风格的参数,前面加单破折线;
BSD风格的参数,前面不加破折线;
GNU风格的长参数,前面加双破折线。

1、bsd风格

a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)
x 与终端无关相关的进程
u 用户信息归类的查看方式
f 进程层级关系
o 显示指定参数( pid comm nice pri pcpu ppid stat,user,group等)

(1)ps #a 与终端相关的进程(当用户登陆系统后产生的进程都是带终端的)

我们可以看到tty这一列有三种tty1,tty1,pts/0,
先说pts/0吧,man里面是这样说的:ptmx and pts - pseudo-terminal master and slave,pts是所谓的伪终端或虚拟终端 (虚拟终端(VT)是一种提供类似于Internet的Telnet协议的远程终端仿真的国际标准化组织(ISO)协议。在远程终端的用户,可以在远程计算机上运行应用程序,就象他们是坐在这台计算机前面一样)。

具体表现就是你打开一个终端,这个终端就叫pts/0,如果你再打开一个终端,这个新的终端就叫pts /1,依此类推。

tty:终端设备的统称。

tty一词源于Teletypes,或者teletypewriters,原来指的是电传打字机,是通过串行线用打印机键盘通过阅读和发送信息的东西,后来这东西被键盘与显示器取代,所以现在叫终端比较合适。终端是一种字符型设备,它有多种类型,通常使用tty来简称各种类型的终端设备。

tty1~6是文本型控制台,tty7是X Window图形显示管理器。

ps ax显示信息如下:
#PID        进程id(进程的唯一标识)
#TTY       进程用到的终端
#STAT      进程状态
#TIME      进程占用cpu时长
#COMMAND   进程名称
(2)ps #x 与终端无关相关的进程

当然ps -ax可以组合使用。
(3)ps u 用户信息归类的查看方式

#ps aux显示信息如下:
#USER       进程所有人
#PID       进程id
#%CPU     进程使用cpu的用量
#%MEM     进程所用到的内存用量
#VSZ       进程使用的虚拟内存大小,(进程在内存中的大小,以千字节(KB)为单位)
#RSS       进程常驻内存中的数据大小,(进程在未换出时占用的物理内存)
#TTY       进程用到的终端
#STAT       进程状态
#START       进程运行时长
#TIME         进程占用cpu时长
#COMMAND       进程名称

(4)ps f 进程层级关系

(5)ps o user,pid,gid等 (显示指定参数)

2、unix风格

-e 显示所有进程
-f 显示信息的完整格式
-H 显示进程的层级结构
-o 显示指定参数
–sort=

(1)、ps -e显示所有进程
等同于ps ax
(2)、ps -f 显示信息的完整格式
可以看到后面的参数

(3)、ps -H 显示进程的层级结构

(4)、ps -o 显示指定参数(和ps o 一样)

(5)、–sort=
ps -eo %cpu --sort=%cpu 正序排列
ps -eo %cpu --sort=-%cpu 倒序排列
(6)、ps -l 查看自己bash进程

3、gun风格

3、pgrep和pidof 命令的用法

(1)、pgrep命令
pgrep命令以名称为依据从运行进程队列中查找进程,并显示查找到的进程id。
通过程序的名字来查询进程的工具,一般是用来判断程序是否正在运行

-u uid/user 显示指定用户进程
-U user 显示指定用户进程
-t tty 显示指定终端进程
-l 返回进程ID同时显示进程名
-a 显示进程的完整名称
-P pid 进程的子进程

(1)、-u uid 显示指定用户进程
进入westos用户后 打开两个shell

(2)、-U user | 显示指定用户进程

(3)、-t tty |显示指定终端进程
(4)、-a | 显示进程的完整名称

注意:关于pgrep的命令,一定要牢记此命令是通过进程名称来查询进程的工具,一般是用来判断程序是否正在运行。
所以除了-u和-U后面跟的是用户名称或uid;
其他的参数都是跟进程名称,比如:

(2)、pidof 命令
根据进程名称来查看进程id。

4、top 动态进程查看


(1)、#top -

#09:48:51        系统时间
#up 18:54        运行时长
#2 users       系统中有两个用户登陆
#load average: 0.75, 0.53, 0    Load Average 就是一段时间 (1 分钟、5分钟、15分钟) 内平均 等待时长就是进程等待被cpu处理的时间。

(2)、#Tasks:

#331 total     任务总量
#3 running     正在运行
#329 sleeping   休眠人物数量
#0 stopped   被暂停数量
#0 zombie   僵死人物数量

(3)、#%Cpu(s)
#1.5 us     用户空间
#1.9 sy    内核空间
#0.0 ni    nice值调整时间
#58.9 id     空闲时间
#0.0 wa   等待io时间
#2.1 hi   处理硬件中断时间
#0.2 si处   理软件中断时间
#0.0 st被偷走的时间(vm使用时间)

(4)、#MiB Mem
#7664.6 total     总量
#5383.9 free    空闲
#1312.1 used     占用
#968.8 buff/cache    缓存
从硬盘里面加载数据到内存,这种数据叫缓冲 (buff)
将要从内存到硬盘中的数据 叫缓存。

(5)、MiB Swap: 交换分区用量
交换分区在硬盘上。
#PID   进程id
#USER   进程所有者的用户名
#PR   优先级
#NI    nice值。负值表示高优先级,正值表示低优先级
#VIRT   进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES
#RES   进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA
#SHR   共享内存大小,单位kb
#S   进程状态(D=不可中断的睡眠状态,R=运行,S=睡眠,T=跟踪/停止,Z=僵尸进程)
#%CPU   上次更新到现在的CPU时间占用百分比
#%MEM   进程使用的物理内存百分比
#TIME+   进程使用的CPU时间总计,单位1/100秒
#COMMAND   命令名/命令行
(6)、top命令的参数

-d 指定刷新频率
-b 以批次方式显示 这个得和d、n搭配使用,他是按批次显示 每三秒都是开一个新的静态top 一直往下走
-n 指定显示的批次数量 比如top -n 2 显示两次以后就停止

(7)、top内部指令

#P    排序
#M    内存排序
#T    累计展铜cpu时间排序
#l    关闭/开启uptime信息
#t    关闭/开启cpu&task
#s    指定刷新频率
#k    操作进程
#u    查看指定用户进程

三、系统优先级

系统时多任务多用户的操作模式
任务的重要性是有区分的
如何确定任务的重要性
---->使用“优先级”
范围: 0–139
内核自控优先级范围:0-99
所以用户可控优先级:100-139

nice:-20-19

普通用户只能调低自己的优先级而不能调高。
所谓nice值,就是我们的用户发扬风格,把自己能够使用到的系统资源调低,使别人能够运行的更快。
nice值越负,优先级越高。所以普通用户只能把自己的nice值调大。

(1)更改进程nice值
renice -n -5 43331 ##更改优先级
nice -n -5 cat ##指定优先级打开进程

S    #sleeping
<    #优先级高
s     #顶级进程
T    #stop(当前状态是一个暂停状态)
N    #优先级低
R    #running
‘+’    #运行在前台
那为什么cat后面没有显示小s?因为他是某一个程序的子进程。

(2)、kill进程

(3)、开启进程并指定其优先级
nice -n -5 cat &
在开启程序时就指定它的优先级。后台运行。

四、进程前后台调用

有些进程在使用的时候,是占用系统终端的一个状态。比如:gedit
此时,系统终端已经不能在和我们进行正常交流,那如何解决?

涉及到的命令:

ctrl+z  ##把占用shell的进程打入后台挂起
bg     ##把后台挂起的进程运行起来
fg     ##把后台进程调回前台
&    ##运行进程在后台
jobs   ##查看当前shell中在后台的所有工作

(1)、ctrl+z 把占用shell的进程打入后台挂起
会显示stopped 暂停状态。

后面的”+“表示,我在操作的过程中,默认就是使用这条命令。
后面的”-“表示,稍后要处理的进程
(2)、fg 把后台进程调回前台
把(1)中的进程打入后台挂起以后,就不能在操作gedit页面。如何解决?使用fg。
输入fg,就是带”+“的被调回前台。
输入fg 【num】(jobs中的数字)就是调用指定进程进入前台。

(3)、bg 使进程在后台运行

问题:能让cat在后台自动运行起来吗?
cat在后台运行的时候 会自动进入到暂停状态
因为cat需要有字符的输入才能生效,cat在开启的时候需要开启自己的工作界面,如果不具备这样的界面控制能力的话,证明他的资源是缺失的。
如下图可知,cat确实在后台运行的过程,但是运行完毕以后又立即被系统停止了。
同理,vim也和cat一样,也需要一个自己的工作界面。

(4)、& 直接使进程在后台开启。
这样可以正常和系统终端交流

(5)、结束在后台的进程
fg 把它调回前台,使用完毕以后 正常结束掉
比如vim
cat的话 ctrl+c 结束掉也可以
或者kill -9 【num】 (num是jobs中的编号)

五、进程信息号

引言:
对进程的处理,就是对内核进行控制。
操作者要使用信号对内核进行沟通,让他对相应的进程进行处理。
内核也用信号对进程进行沟通,把数字传递给进程以后,让进程自己去处理。

(1)、man 7 signal 查看进程信息号

(2)、进程信号
1    #重新家在系统配置文件(source)
2    #清空内存中的进程数据
3    #清空内存中的鼠标(ctrl+)
9    #强行结束进程(不能被阻塞)
15    #正常关闭进程(会被阻塞)
18    #运行被暂停的进程
19    #暂停进程(不会被阻塞)
20    #暂停进程(会被阻塞的)

(3)、实验部分:
①kill -2
第一行的字母我们不要的话可以使用ctrl+c 推出
实际上使用kill -2 就是ctrl+c

②kill -15正常关闭进程
在shell中开启子进程,使用-15并不会关掉前面那个shell,
这是因为命令被系统阻塞掉了,因为系统认为做了这样的操作以后会对系统造成不良影响。

当然也可以使用kill -9 强制关闭。

③19 #暂停进程(不会被阻塞)
 20 #暂停进程(会被阻塞的)

4658的shell 已经不能正常交互
只有kill -18 4658 运行之后 才能交互
kill -20 会被阻塞

2、进程信号控制工具
kill  进程信号 pid
killall  进程信号 进程名字
pkill  进程信号 进程条件

kill不做过多解释。
(1)、kill all 进程信号 进程名字
当shell中后台开启多个vim,怎么才能一次性把这些vim都关掉。

(2)、pkill  进程信号 进程条件
经常使用 pkill -U 进程信号 进程条件
就是关闭指定用户进程
进程信号可以在pkill --help中参考。

六、守护进程

把程序的管理权交给某一个进程,从而分担内核的压力。
而这个进程,我们就可以把他称作守护进程。

守护进程:替内核分担程序控管的程序
#通常pid为1
就是上图所示的systemd

systemd -----> systemctl
Systemd(系统管理守护进程)
systemctl命令 (系统管理服务) systemd这个启动服务的机制,主要通过systemctl这个命令来完成。

1、设定实验环境

我们的主机位置是172.25.254.50
所以设定另一台主机(虚拟机)的设备是172.25.254.150

对虚拟机网络进行配置,为接下来的操作做准备。

2、利用守护进程控制服务

所谓服务,就是对操作者以外的人是有意义的。
比如,上课用的远程连接服务,对老师是没有意义的,但是对于上视频课的人是有意义的。
这种雷锋程序,就叫服务。

#systemd -----> systemctl
#systemctl 管理系统服务
#服务指在系统中开启的共享系统资源到网络中的程序
(1)、status ##查看状态

(2)、stop ##关闭

(3)、start ##开启

(4)、restart ##重新启动服务
相当于先stop再start
为什么要重启,因为如果对程序做了相应的设定,那目前为止是不生效的,只有重启之后才生效。
重启之后 。main pid会发生变化。

(5)、reload ##重新加载
在配置进程以后,不关闭进程,而是直接加载。
有的进程支持,有的进程不支持。
比如ssh就不支持。
而httpd就支持,这是服务本身决定的。
(6)、enable
enable ##设定服务开机启动
enable --now ##设定服务开机启动并当前开启服务
disable ##设定服务开启不其动

只使用disable,当前还是running状态

使用了disable --now 就关闭了

使用systemctl enable sshd 就是设置其开机启动。
(7)、list-units ##查看系统所有服务当前状态

(8)、list-unit-files ##查看服务开机状态

图中,static表示的是固定的,不需要去管,这种服务通常都是其他服务运行的依赖性。
(9)、list-dependencies ##列出服务依赖性

就是我们再开启一个服务的时候,另一个服务会因为当前服务的开启而自动打开,不需要人为进行管理。
(10)、mask ##冻结服务
    unmask ##解锁
之前我们可以使用stop和start进行开启关闭服务
在冻结之后,stop和start就不再起作用。

(11)、 set-default ##设定系统运行模式

set-default multi-user.target 无图形网络模式
set-default graphical.target 有图形的网络模式

get-default ##查看系统运行模式

##系统运行模式
#0-6
#0   POWEROFF(关机)
#1   single
#2   noG+NETWORK
#3
#4
#5   G+NETWORK
#6   REBOOT(重启)(调用命令 init 6)

无图形的网络模式就是黑的界面。运行速度会更快。

七、系统登录审计体系

1、w   显示正在登陆系统的账号

w    显示正在登陆系统的账号
w -i    显示登陆来源
上面两个命令显示的其实是/var/run/utmp 这个文件,这两个文件不能使用cat进行查看。

此时主机也显示连接到了 当前虚拟主机上。

2、last   登陆成功现在已经退出的

last ##登陆成功现在已经退出的
该命令查看的是 /var/log/wtmp这个文件


真机退出连接后,图上图所示

3、lastb   试图登陆但未成功

lastb ##试图登陆但未成功
该命令查看的是/var/log/btmp这个文件
真机显示连接时密码错误

虚拟主机就会显示登陆失败的主机:

(六)linux中的进程管理相关推荐

  1. 专业介绍Linux中的进程管理

    Linux中的进程管理 1.什么是进程? 1)进程就是系统中处于执行期的工作. 对于[执行]两个字需要作出特别解释:执行并不同于运行,因为系统中的进程的状态大概分为四种: 进程状态 R(Running ...

  2. Linux中的进程管理

    Linux中的进程管理 Linux中的进程管理 Linux中的进程管理 1.进程 进程的定义 进程和线程 进程状态 2.进程查看命令 ps pgrep pidof top 3.进程优先级 4.进程前后 ...

  3. 【Linux操作系统基础】第六章 Linux中的进程管理

    一.进程及其状态 程序是静态的代码文件,没有生命周期.进程是指程序运行时的形态,是程序的一个副本,进程有生命周期(准备期,运行期,终止期) 进程是资源调用的最小单位,系统中的资源在同一时间只能被同一个 ...

  4. Linux 中的进程管理

    ### 1.进程定义 ### #进程的定义: 程序是静态的代码文件 进程是指程序运行时的形态 进程是程序的一个副本 进程是有生命周期的(准备期,运行期,终止期) #进程&线程 进程是资源调用的 ...

  5. Linux中的进程管理类、ps 查看当前系统进程状态、内存置换算法LRU、查看与sshd相关进程

    文章目录 1.10 进程管理类 1.10.1 ps 查看当前系统进程状态 1.10.1.1基本语法 1.10.1.2选项说明 1.10.1.3功能说明 1.10.1.4经验技巧 1.10.1.5内存置 ...

  6. 【Linux 内核】进程管理 ( Linux 内核中的进程状态 | TASK_RUNNING | TASK_INTERRUPTIBLE | __TASK_STOPPED | EXIT_ZOMBIE )

    文章目录 一.Linux 内核中的进程状态 二.TASK_RUNNING 状态 三.TASK_RUNNING 状态 四.TASK_UNINTERRUPTIBLE 状态 五.__TASK_STOPPED ...

  7. Linux系统中的进程管理

    Linux系统中的进程管理 了解进程 进程是已启动的可执行程序的运行实例,进程有以下组成部分: • 已分配内存的地址空间: • 安全属性,包括所有权凭据和特权: • 程序代码的一个或多个执行线程: • ...

  8. 【Linux 内核】进程管理 ( 进程状态 | 进程创建 | 进程终止 | 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 )

    文章目录 一.进程状态 二.进程创建 三.进程终止 ( 调用 exit 系统调用函数主动退出 | main 函数返回自动退出 | kill 杀死进程 | 执行异常退出 ) 一.进程状态 Linux 进 ...

  9. 【Linux 内核】进程管理 ( 内核线程概念 | 内核线程、普通进程、用户线程 | 内核线程与普通进程区别 | 内核线程主要用途 | 内核线程创建函数 kernel_thread 源码 )

    文章目录 一.内核线程概念 二.内核线程.普通进程.用户线程 三.内核线程.普通进程区别 四.内核线程主要用途 五.内核线程创建函数 kernel_thread 源码 一.内核线程概念 直接 由 Li ...

  10. 【Linux 内核】进程管理 task_struct 结构体 ⑤ ( files 字段 | nsproxy 字段 | 信号处理相关字段 | 信号量和共享内存相关字段 )

    文章目录 一.task_struct 结构体字段分析 1.files 字段 2.nsproxy 字段 3.信号处理相关字段 4.信号量和共享内存相关字段 在 Linux 内核 中 , " 进 ...

最新文章

  1. 6分钟完成ImageNet训练,NVIDIA创下六项AI性能新记录!
  2. C#之foreach语句
  3. 【Python】编程笔记9
  4. 自用Excel VBA技巧整理
  5. LeetCode 815. 公交路线(最少换乘,BFS)
  6. xtrabackup部分备份数据库 Partial Backups
  7. WPS Office 2019 For Linux 8722 发布,引入pdf组件
  8. apache http server 停止工作_Tomcat9配置HTTP/2
  9. Innodb 与自增长auto_increment
  10. c语言编程模拟银行取钱代码,C语言 用初等函数模拟银行取款
  11. 企业微信机器人python脚本执行报错-‘errcode‘: 40008, ‘errmsg‘: ‘Warning: wrong json format. invalid message type
  12. CC2530 实现无线串口
  13. 2016年农民工监测调查报告(zz)
  14. SumatraPDF一个很nice的PDF开源项目
  15. asp上传头像mysql_asp 会员头像上传 代码
  16. 信息系统项目管理师知识点(第 1 章)-信息系统基础知识
  17. python使用win32和flask实现接收请求发送QQ消息
  18. 揭秘 2023 年 Navicat 两大重磅功能 Redis + OceanBase 发布计划
  19. matlab测量平差实验报告,测量平差实习心得精选三篇
  20. Echarts折线图X轴Y轴图例位置调整

热门文章

  1. python商业爬虫教程_python爬虫课程
  2. 【Python】使用Python调用Fragstats批量进行万级及以上数据的景观指数运算
  3. 推荐一个下载简历模板的网站工具
  4. html页面透明背景,css 背景透明 元素(标签)背景透明的css设计
  5. CSDN论坛新手指南
  6. 全网最全Java微服务面试题总结(SpringCloud+Spring Boot)
  7. 详解最实用的几种dll注入方式
  8. 计算机科学基础慕课答案,大学计算机基础mooc习题整理(含答案)
  9. 《天勤数据结构》笔记——顺序栈和链栈及其代码实现(C/C++)
  10. 【UWB定位】 - DWM1000模块调试简单心得 - 1