首页 > 系统相关 >进程管理

进程管理

时间:2023-11-23 21:56:18浏览次数:69  
标签:00 21 管理 0.0 44 进程 root

一、初始进程

1.进程、线程和程序的区别

(1)进程:进程是程序在处理机上的一次执行过程,是一个动态的概念。

进程具有创建其他进程的功能,它由程序段、数据段和进程控制块三部分组成。

进程具有独立性、并发性和相互制约性。同一程序可以对应多个进程,也就是说同一程序可以同时执行于若干个数据集合上。在传统的操作系统中,程序并不能独立运行,作为资源分配和独立执行的基本单元都是进程。

每个进程都有唯一的进程标识PID,一个PID只能标识一个进程,PPID为父进程ID,需要该进程分配系统资源。

(2)线程:线程是操作系统能够进行运算调度的最小单位。

线程被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。

和进程一样,同样具有就绪、阻塞和运行三种基本状态。线程之间可以并发执行,从而提高了程序的并发性。
(3)程序:程序是指令和数据的有序集合,本身没有任何运行的含义,是一个静态的概念。它是一个软件资料,可以长期存在。

(4)总的来说,程序是静态的软件资料,可以长期存在;进程是动态的概念,是程序在处理机上的执行过程,具有独立性、并发性和相互制约性;线程是进程中的实际运作单位,是操作系统能够进行运算调度的最小单位,线程之间可以并发执行。

 

2.进程的6种状态

(1)就绪状态(Ready) :该进程满足被CPU调度的所有条件但此时并没有被调度执行,只要得到CPU就能够直接运行。意味着该进程已经准备好被CPU执行,当一个进程的时间片到达操作系统调度程序会从就绪态链表中调度一个进程。

(2)运行状态(Running) :指该进程当前正在被CPU调度运行,处于就绪态的进程得到CPU调度就会进入运行。

(3)阻塞状态(Blocked) :也叫等待状态,表示进程正在等待某种条件成立,等待某种资源,或者等待I/O操作完成。即使处理器空闲,该进程也不能运行。

(4)可中断睡眠状态(Interruptible Sleep) :可中断睡眠也称为浅度睡眠,表示睡的不够“死”,还可以被唤醒,一般来说可以通过信号来唤醒。

(5)不可中断睡眠状态(Uninterruptible Sleep) :可中断睡眠称为深度睡眠,深度睡眠无法被信号唤醒,只能等待相应的条件成立才能结束睡眠状态。

(6)僵尸状态(Zombie) :表示一个进程即将死亡的状态。

二、查看进程

1.静态查看进程

(1)ps aux 命令:查看当前目录的进程(查看静态进程)

[root@localhost ~]# ps aux
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root          1  0.6  0.1 193936  7096 ?        Ss   21:44   0:02 /usr/lib/syste
root          2  0.0  0.0      0     0 ?        S    21:44   0:00 [kthreadd]
root          4  0.0  0.0      0     0 ?        S<   21:44   0:00 [kworker/0:0H]
root          6  0.0  0.0      0     0 ?        S    21:44   0:00 [ksoftirqd/0]
root          7  0.0  0.0      0     0 ?        S    21:44   0:00 [migration/0]
root          8  0.0  0.0      0     0 ?        S    21:44   0:00 [rcu_bh]
root          9  0.1  0.0      0     0 ?        S    21:44   0:00 [rcu_sched]
root         10  0.0  0.0      0     0 ?        S<   21:44   0:00 [lru-add-drain
root         11  0.0  0.0      0     0 ?        S    21:44   0:00 [watchdog/0]
root         12  0.0  0.0      0     0 ?        S    21:44   0:00 [watchdog/1]
root         13  0.0  0.0      0     0 ?        S    21:44   0:00 [migration/1]
root         14  0.0  0.0      0     0 ?        S    21:44   0:00 [ksoftirqd/1]
root         16  0.0  0.0      0     0 ?        S<   21:44   0:00 [kworker/1:0H]
root         17  0.0  0.0      0     0 ?        S    21:44   0:00 [watchdog/2]
root         18  0.0  0.0      0     0 ?        S    21:44   0:00 [migration/2]
root         19  0.0  0.0      0     0 ?        S    21:44   0:00 [ksoftirqd/2]
root         21  0.0  0.0      0     0 ?        S<   21:44   0:00 [kworker/2:0H]
root         22  0.0  0.0      0     0 ?        S    21:44   0:00 [watchdog/3]
……
示例

 

(2)ps -ef命令:可以查看UID、PID、PPID等信息

[root@localhost ~]# ps -ef
UID         PID   PPID  C STIME TTY          TIME CMD
root          1      0  0 21:44 ?        00:00:02 /usr/lib/systemd/systemd --swi
root          2      0  0 21:44 ?        00:00:00 [kthreadd]
root          4      2  0 21:44 ?        00:00:00 [kworker/0:0H]
root          6      2  0 21:44 ?        00:00:00 [ksoftirqd/0]
root          7      2  0 21:44 ?        00:00:00 [migration/0]
root          8      2  0 21:44 ?        00:00:00 [rcu_bh]
root          9      2  0 21:44 ?        00:00:00 [rcu_sched]
root         10      2  0 21:44 ?        00:00:00 [lru-add-drain]
root         11      2  0 21:44 ?        00:00:00 [watchdog/0]
root         12      2  0 21:44 ?        00:00:00 [watchdog/1]
root         13      2  0 21:44 ?        00:00:00 [migration/1]
root         14      2  0 21:44 ?        00:00:00 [ksoftirqd/1]
root         16      2  0 21:44 ?        00:00:00 [kworker/1:0H]
root         17      2  0 21:44 ?        00:00:00 [watchdog/2]
root         18      2  0 21:44 ?        00:00:00 [migration/2]
root         19      2  0 21:44 ?        00:00:00 [ksoftirqd/2]
root         21      2  0 21:44 ?        00:00:00 [kworker/2:0H]
root         22      2  0 21:44 ?        00:00:00 [watchdog/3]
……
示例

 

(3)ps axo命令:可自定义显示字段

[root@localhost ~]# ps axo pid,ppid,user,%cpu
   PID   PPID USER     %CPU
     1      0 root      0.3
     2      0 root      0.0
     4      2 root      0.0
     6      2 root      0.0
     7      2 root      0.0
     8      2 root      0.0
     9      2 root      0.0
    10      2 root      0.0
    11      2 root      0.0
    12      2 root      0.0
    13      2 root      0.0
    14      2 root      0.0
    16      2 root      0.0
……
示例

 

(4)ps aux --sort -%cpu命令:用户在查看CPU占用率时,可让进程按照CPU占用百分比的降序排列

[root@localhost ~]# ps aux --sort -%cpu
USER        PID %CPU %MEM    VSZ   RSS TTY      STAT START   TIME COMMAND
root       2215  1.9  5.3 3449720 215284 ?      Sl   21:45   0:15 /usr/bin/gnome
ciji       3183  1.3  5.1 3653284 209000 ?      Sl   21:45   0:09 /usr/bin/gnome
root       1678  0.9  1.4 366776 59340 tty1     Ssl+ 21:44   0:07 /usr/bin/X :0 
root       4239  0.6  0.9 766720 37216 ?        Sl   21:50   0:02 /usr/libexec/g
root       2665  0.5  1.1 342060 48076 tty2     Ssl+ 21:45   0:04 /usr/bin/X :1 
root          1  0.2  0.1 193936  7096 ?        Ss   21:44   0:02 /usr/lib/syste
root        578  0.2  0.1  49100  5540 ?        Ss   21:44   0:02 /usr/lib/syste
polkitd     827  0.2  0.3 616564 15196 ?        Ssl  21:44   0:01 /usr/lib/polki
dbus        790  0.1  0.1  71928  5820 ?        Ssl  21:44   0:01 /usr/bin/dbus-
root        805  0.1  0.0  90652  3212 ?        Ss   21:44   0:01 /sbin/rngd -f
root        813  0.1  0.1 295564  5304 ?        Ssl  21:44   0:01 /usr/bin/vmtoo
root       2479  0.1  0.6 608672 25480 ?        Sl   21:45   0:01 /usr/bin/vmtoo
root       2490  0.1  1.5 1446360 63444 ?       Sl   21:45   0:01 /usr/bin/gnome
……
示例

 

 

 

(5)cat命令、pidof命令、pgrep命令:均可查看指定进程PID

[root@localhost ~]# cat /run/sshd.pid
1275
[root@localhost ~]# pidof sshd
1275
[root@localhost ~]# pgrep sshd
1275
示例

 

(6)基本权限的意义

列名 说明
USER 运行进程的用户
  PID 进程ID
%CPU CPU占用率
%MEM 内存占用率
  VSZ 占用虚拟内存
  RSS 占用实际内存
  TTY 进程运行的终端
 STAT 进程状态
 TIME 进程累计占用CPU时间
COMMAND 进程发起者

 

2.动态查看进程

(1)top命令:实时动态地显示进程(动态查看进程,系统默认更新时间为3秒,也可按回车键立即更新)

 

 

 

top -d命令:设置刷新时间,以秒为单位。示例:# top -d n(n表示更新时间)

-p参数:可以查看一个或多个进程的动态信息

-u参数:查看指定用户进程

-n参数:设置刷新次数,完成后自动退出

(2)键盘输入指定字母或数字进行操作:

按M键以内存占用率排序

 

 

 

按P键以CPU占用率排序

 

 

 

按N键以PID数值大小排序

 

 

 

按R键对排序进行反转

 

 

按1键显示所有CPU的负载

 

(3)系统整体统计信息(部分),具体解释如下:

load avera:CPU最近1分钟、5分钟、15分钟负载值

Tasks:进程个数

running:正在使用CPU的进程个数

sleeping:进程休眠个数

stopped:进程停止个数

zombie:进程僵死个数

三、信号控制进程

1.kill命令

(1)功能:用于发送指定的信号到指定进程,以终止该进程。

(2)命令格式:kill [options] pid...

(3)参数设置:

-s signal:指定要发送的信号,既可以是信号名也可以是对应数字

-p:模拟发送信号,既指定kill命令只是显示进程的pid,并不真正送出结束信号

-l:指定信号的名称列表

(4)示例用法:

优雅地终止进程ID为2343的进程:kill 2342

强行终止进程ID为2343的进程: kill -9 2343

列出所有已知信号的列表:kell -l

2.killall命令

(1)功能:用于终止某个指定名称的服务所对应的全部进程。

(2)命令格式:killall [options] name [signal]

(3)参数设置:

-e:只终止匹配name的进程

-i:在终止进程前进行确认

-l:列出所有己知信号的列表

-p:终止进程组

-r:使用正则表达式匹配name

-s:使用指定的信号代替默认的SIGTERM

-u:终止指定用户的所有进程

(4)示例用法:

终止所有名为“firefox”的进程:killall firefox

强制终止所有名为“firefox”的进程:killall -s SIGKILL firefox

终止所有名为“firefox”“的进程前进行确认:killall -i firefox

列出所有已知信号的列表:killall -l

终止指定用户的所有进程(例如:终止用户“john”的所有进程):killall -u john

四、进程优先级

(1)在Linux系统中,进程优先级是操作系统用来确定在多任务环境中哪个进程应该得到更多计算资源(如CPU时间)的一种方式。

(2)进程优先级可以根据不同的标准进行设置,其中最常见的两种方式是Priority (PRI) 和Nice (NI) 。

(3)PRI是进程的优先级值,由内核动态调整。较高的PRI值表示较高的优先级,这意味着进程将获得更多的CPU时间。PRI值的范围是0到139,其中0表示最低优先级,139表示最高优先级。

(4)NI是用户可以调整的进程优先级值。它表示进程可被执行的优先级的修正数值。NI值的范围是-20到19,其中-20表示最高优先级,19表示最低优先级。当NI值为负值时,进程的优先级将变高,这意味着它将被更快地执行。

(5)PRI和NI之间的关系可以表示为:PRI (最终值) =PRI (原始值) + NI。因此,我们可以

通过修改NI的值来间接修改PRI,进而达到修改进程优先级的目的。

(6)在Linux系统中,可以使用nice命令来设置进程的NI值。例如,使用"nice -n 10 <command>"命令可以将<command>命令的优先级设置为10。

五、作业控制

(1)作业控制是Linux系统中的一个重要功能,它允许用户同时运行和管理多个命令或进程。通过作业控制,用户可以暂停、恢复以及异步运行命令,从而让Shell可以在子进程运行期间返回接受其他命令。
(2)作业控制主要涉及前台进程和后台进程。前台进程是在终端中运行的命令,该终端为进程的控制终端。前台进程接收键盘产生的输入和信号,并允许从终端读取或写入到终端。后台进程则没有控制终端,它不需要与终端交互。

 

标签:00,21,管理,0.0,44,进程,root
From: https://www.cnblogs.com/Antler-Bi8bo/p/17836352.html

相关文章

  • Linux用户管理
    学习Linux用户管理章节中,我深刻认识到了用户管理在Linux系统中的重要性。Linux系统是一个多用户、多任务的操作系统,每个用户都有自己的账户和权限。因此,对于Linux系统管理员来说,用户管理是必须要掌握的技能之一。在这个章节中,我学习了如何创建、删除、修改和管理用户账户,以......
  • 第五章 进程管理
    进程有一下组成部分1已分配内存的地址空间2安全属性,包括所有权凭据和特权3程序代码的一个或多个执行线程4进程状态进程有就绪态,运行态和阻塞态三个状态,每一个进程都有唯一的PID命令:PSAUX:查看当前目录的进程ps-ef命令可以查看UIDPIDPPID等信息使用pidof和pgrep......
  • 无涯教程-Tk - 窗口管理
    窗口管理器用于处理顶级窗口。它有助于控制窗口的大小,位置和其他属性。在Tk中用于引用主窗口。window命令的语法如下所示-wmoptionwindowarguments下表显示了Tkwm命令可用的options列表-Sr.No.Syntax&Remark1aspectwindowNameabcd尝试将宽高比保持在a/b与c/d......
  • 05_进程管理_4死锁
    进程管理_死锁什么是死锁每个人都占有一个资源,同时又在等待另一个人手里的资源。发生“死锁”。在并发环境下,各进程因竞争资源而造成的一种互相等待对方手里的资源,导致各进程都阻塞,都无法向煎推进的现象,就是“死锁”发生死锁后若无外力干涉,这些进程都将无法向前推进。进程死......
  • 文件管理
    文件管理目录文件管理初识文件管理文件的属性文件内部数据应该怎样组织起来文件之间应该怎样组织起来?文件系统应该向上提供哪些功能从上往下看,文件应如何存放外存?其他需要由操作系统实现的文件管理功能文件系统管理目标设计文件系统需要考虑的主要问题什么是文件和文件系统?为什么......
  • 内存管理
    内存管理_1目录内存管理_1内存的基础知识什么是内存,有何作用进程运行的基本原理内存的基础知识什么是内存,有何作用内存可存放数据。程序执行前需要先放到内存中才能被CPU处理——缓和CPU与硬盘之间的速度矛盾。思考:在多道程序环境下,系统中会有多个程序并发执行,也就是说会有......
  • 项目风险登记册和风险管理计划的区别?
    项目管理风险登记册和风险管理计划是两个文件,他们的作用完全不同,看定义看概念那是相当清楚的,然鹅,定义没有什么用,很多同学在PMP®考试中,经常犯晕,一不当心就选错。风险管理计划,解决的是风险管理的howtodo的问题,一说到管理就应该有点高大上啊,所以,风险管理计划不管具体的风险如何管......
  • 启动vite和electron项目配置多个主进程
    推荐concurrently点击查看代码"dev":"concurrently\"nodemon--execelectron.\"\"vite\"",成熟的脚手架日常开发可以使用electron-vite(opensnewwindow)或electron-vite-vue(opensnewwindow)、electron-react-boilerplate(open......
  • 刘金玉QT学习笔记:7-简易用户信息管理界面实现_实现用户信息增改
    1.同第六课方式在widget里连接并创建数据库。 2.通过QSqlQuery使用sql语句的第二种方法:-在不同的函数中都要使用->做成全局变量 3.表格网格控件tableview控件显示数据库的内容为表格行-ui拖出控件-qtableview控件通过QSqlQueryModel来渲染数据过程:1widget.h引入#i......
  • 管理时间的四象限法则
    在管理工作和生活中,我们经常面临着各种各样的任务和事务。为了更好地处理这些任务,可以借鉴“重要紧急”、“重要不紧急”、“不重要紧急”以及“不重要不紧急”这四个象限的概念。重要紧急:这类任务需要立刻行动,因为它们对目标或责任的实现产生直接影响。应该全身心投入这类任务,确......