1、进程:
计算机中的程序关于某数据集合上的一次运行活动。
- 狭义定义:进程是正在运行的程序的实例(an instance of a computer program that is being executed)。
- 广义定义:进程是一个具有一定独立功能的程序关于某个数据集合的一次运行活动。它是操作系统动态执行的基本单元,在传统的操作系统中,进程既是基本的分配单元,也是基本的执行单元。
操作系统的发展:
手动加载:
在这个阶段,还未出现操作系统,计算机工作采用手工操作方式。程序员将对应用程序和数据的已穿孔的纸带(或卡片)装入输入机,然后启动输入机把程序和数据输入计算机内存,接着通过控制台开关启动程序针对数据运行;计算完毕,打印机输出计算结果。这种方式导致用户独占全机,CPU等待手工操作,资源利用率极低。
批处理系统(Batch Processing System):
为了解决手工操作的慢速度和计算机的高速度之间的矛盾,出现了批处理系统。批处理系统能够自动地、成批地处理一个或多个用户的作业。根据作业输入/输出的方式,又分为联机批处理系统和脱机批处理系统。联机批处理系统通过磁带作为中间存储,实现了作业的自动转接,减少了作业建立时间和手工操作时间。脱机批处理系统则进一步通过卫星机处理输入/输出,提高了CPU的利用率。
又称批处理操作系统,是一种操作系统类型,它允许用户将一批作业提交给操作系统后就不再干预,由操作系统控制它们自动运行。这种系统采用批量处理作业技术,以提高CPU的利用率和减少人工干预。
- 优点:
- 批量处理任务:可以一次性处理多个作业,提高计算机资源利用率。
- 自动化处理过程:减少了人工干预,大幅提高工作效率。
- 任务排队系统:可以高效地管理和调度可执行任务,提升任务执行效率。
- 任务管理更加简便:方便进行统计和管理,减轻了人员负担。
- 缺点:
- 长等待时间:任务响应时间较长,用户需要等待较长时间才能得到结果。
- 长反馈时间:处理及其结果需要长时间的反馈时间。
- 编写和维护成本高:编写和维护批处理程序需要专业的编程技能,成本较高。
- 无法高并发和低延迟:对于一些要求迅速交互的任务无法提供良好的服务,误码率高。
多道批处理系统:
随着多道程序设计技术的引入,出现了多道批处理系统,允许多个程序同时在内存中交替运行,大大提高了资源利用率。同时,分时系统也开始发展,它允许多个用户通过各自的终端同时交互地使用计算机。分时系统采用时间片轮转的方式,使每个用户都能及时得到响应。
多道程序设计是一种在计算机内存中同时存放几道相互独立的程序,并使它们在管理程序控制之下相互穿插地运行的技术。这种设计允许两个或两个以上的程序在计算机系统中同时处于开始到结束之间的状态。
缺点:
-
平均周转时间长:在多道批处理系统中,作业需要排队等待CPU和其他资源的分配。由于作业是按一定的顺序依次处理的,短作业的周转时间可能会显著增长,因为它们可能需要等待长作业先完成。这可能导致用户等待作业完成的时间过长。
-
无交互能力:多道批处理系统不支持用户与作业之间的交互。用户一旦将作业提交给系统,就必须等待作业完全执行完毕才能看到结果。这种非交互性使得用户在作业执行过程中无法对作业进行修改或调试,从而降低了调试和修改程序的便利性。
-
系统资源得不到充分利用:尽管多道批处理系统旨在提高资源利用率,但在某些情况下,系统资源可能仍然得不到充分利用。例如,当系统中的作业负载不均衡时,一些资源可能处于空闲状态,而另一些资源则可能过载。此外,由于作业之间的切换和调度也需要一定的开销,这可能会进一步影响系统资源的利用率。
-
作业调度和管理的复杂性:多道批处理系统需要复杂的作业调度和管理机制来确保多个作业能够高效、有序地执行。这包括处理机管理、内存管理、I/O设备管理、文件管理和作业管理等多个方面的问题。这些管理任务的复杂性增加了系统设计和实现的难度,并可能引入新的错误和故障点。
现代操作系统阶段(多任务系统):
随着计算机硬件的发展和应用需求的多样化,操作系统不断发展和完善。出现了网络操作系统、分布式操作系统、多处理操作系统和嵌入式操作系统等多种类型。这些系统各具特色,适应不同的应用场景和需求。例如,Unix和Linux操作系统在大型机、工作站和个人电脑上得到广泛应用;Windows操作系统成为个人电脑的主流操作系统;而嵌入式操作系统则广泛应用于智能手机、平板电脑等移动设备中。
虚拟内存:
允许操作系统和应用程序认为它们拥有比实际物理内存(RAM)更大的连续可用内存空间。实际上,虚拟内存通过一种映射机制,将部分数据存储在硬盘等外部存储器上,并在需要时与物理内存进行数据交换。
具体来说,虚拟内存使得每个运行中的程序都感觉自己拥有整个系统的内存空间,即一个连续完整的地址空间
作用:
-
缓解内存不足:物理内存(RAM)的容量是有限的,当运行大型程序或多任务时,很容易遇到内存不足的情况。虚拟内存通过将硬盘空间模拟成内存使用,从而有效增加系统的可用内存空间。当物理内存不足时,系统会将部分不常用的数据交换到硬盘上的虚拟内存空间中,释放出宝贵的物理内存供当前正在运行的程序使用。这样,用户可以同时运行更多的程序,提高系统的多任务处理能力。
-
提高系统性能:虚拟内存不仅可以缓解内存不足的问题,还可以在一定程度上提高系统性能。通过合理的内存管理策略,如预取策略(即提前将可能需要的数据从硬盘加载到内存中),可以充分利用磁盘和内存之间的带宽,提高系统的I/O性能。此外,虚拟内存还可以将常用的数据保存在RAM中,从而加快对这些数据的访问速度,提高程序的执行效率。
-
提供进程隔离和保护:每个进程在虚拟内存中都有自己独立的虚拟地址空间,彼此互不干扰。这种设计不仅提供了进程之间的隔离,防止因为一个进程崩溃而导致整个系统崩溃,还可以保护系统和其他进程不受恶意程序的攻击。当进程尝试访问非法内存地址时,系统会引发异常,从而保护系统的稳定性和安全性。
-
支持大内存程序:对于一些大型应用程序或游戏,它们需要的内存空间可能超过物理内存的大小。虚拟内存允许这些程序在超过物理内存限制的情况下运行,通过将部分数据交换到硬盘上来满足程序的内存需求。这使得用户能够运行更大、更复杂的程序,享受更丰富的计算机体验。
-
实现动态内存管理:操作系统可以根据需要动态地分配和回收内存资源。当内存空间不足时,操作系统可以将部分数据交换到硬盘上的虚拟内存空间中,从而释放出更多的内存空间供其他程序使用。这种动态内存管理机制使得系统能够更加灵活地应对各种内存需求变化,提高系统的响应速度和稳定性。
进程地址空间:
操作系统为每个进程分配的一段虚拟内存区域,用来描述该进程在计算机内存中所占用的地址空间。地址空间是指能被访问的内存地址范围,它由若干个连续的内存块组成。每个进程都有自己独立的地址空间,这意味着每个进程都有自己的内存地址范围,不会与其他进程冲突。
进程地址空间的主要特点包括:
-
独立性:每个进程都有一个独立的地址空间,这保证了进程之间的隔离性。一个进程无法直接访问另一个进程的地址空间,这有助于防止进程间的相互干扰和数据泄露。
-
虚拟性:进程地址空间是虚拟的,不是物理内存的直接映射。操作系统通过页表等机制将虚拟地址映射到物理地址,实现了虚拟内存到物理内存的转换。这种虚拟性使得操作系统能够灵活地管理内存资源,提高内存利用率。
-
结构划分:进程地址空间通常被划分为多个部分,如代码段、数据段、堆、栈等。这些部分具有不同的属性和用途,例如代码段存储程序代码,数据段存储全局变量和静态变量,堆用于动态内存分配,栈用于函数调用时的参数传递和局部变量存储。
-
生命周期:进程地址空间在进程的整个生命周期内一直存在,直到进程退出。在进程执行期间,操作系统会根据需要动态地分配和回收内存资源,但进程地址空间的整体结构保持不变。
进程地址空间的作用主要体现在以下几个方面:
-
提供独立的内存环境:为进程提供一个独立的内存空间,使得进程之间不会相互干扰,保证了系统的稳定性和安全性。
-
实现内存保护:通过地址空间的隔离性,操作系统可以防止进程访问非法内存地址,从而避免数据泄露和程序崩溃等问题。
-
提高内存利用率:通过虚拟内存技术,操作系统能够灵活地管理内存资源,实现物理内存的复用和共享,提高内存利用率。
-
支持动态内存分配:进程地址空间中的堆区域支持动态内存分配,允许程序在运行时根据需要申请和释放内存空间,从而支持更加灵活和高效的程序设计。
虚拟内存的实现:
分页:将内存分割成大小相同的的单位(目前4096byte);
分页是一种操作系统里存储器管理的技术,它将物理内存和辅助存储器(如硬盘)中的数据分成固定大小的块,称为“页”(Page)。每个页的大小通常是相等的,例如4KB或8KB。当程序运行时,操作系统会将程序和数据按需从辅助存储器加载到物理内存的页中。如果物理内存不足,操作系统会采用页面置换算法将部分不常用的页交换到辅助存储器上,以腾出空间给新的页。分页允许存储器存储于不连续的区块,以维持文件系统的整齐,提高内存的利用率。
分段:
分段是将用户程序的地址空间按照自身的逻辑关系划分成若干个大小不等的区域,称为“段”(Segment)。每个段有一个段名,通常从0开始编址,且每个段在内存中占据连续的空间,但各段之间可以不相邻。分段是信息的逻辑单位,它含有一组意义相对完整的信息,目的是为了能更好地满足用户的需要。与分页相比,分段更注重于程序的结构和数据的逻辑完整性。
页框:
页框是内存管理中的一个概念,与分页技术紧密相关。页框是指CPU中用于存储数据页的物理内存块。在分页系统中,CPU通过页表将虚拟内存地址转换为物理内存地址,而页框就是这些物理内存块的具体实现。为了简化地址转换的过程,操作系统将RAM划分为固定大小的块,这些块就称为页框。内核以页框为基本单位管理物理内存,每个页框中存储了一个数据页。当数据页被释放后,如果有其他数据请求访问该内存,页框中的页将会改变。
两个不同的进程可以在虚拟内存中可以有相同的虚拟地址,但在物理内存中的地址不同;
虚拟内存中地址叫虚拟地址,物理内存中叫物理地址;
虚拟内存的大小:
虚拟内存的大小设置通常根据计算机的物理内存(RAM)总量来决定,并且这个设置可以在一定程度上帮助确保在物理内存不足时,系统仍能利用虚拟内存正常运行。具体来说,虚拟内存的大小设置建议如下:
一般推荐:虚拟内存的大小通常推荐设置为物理内存总量的1到1.5倍,或者根据微软公司的建议,设为物理内存容量的1.5到3倍。这样的设置可以在保证系统稳定运行的同时,避免虚拟内存设置过大导致的读取速度变慢问题。
分时系统的缺陷:
-
系统开销大:由于分时系统需要频繁地在多个用户之间切换CPU时间,这种上下文切换会带来一定的系统开销。每次切换都需要保存当前用户的执行环境(如CPU寄存器状态、内存页表等),并在切换回时恢复这些环境。这些操作会消耗一定的CPU时间和内存资源,从而影响系统的整体性能。
-
响应时间长:尽管分时系统提供了较快的响应时间,但在高负载情况下,每个用户所能获得的CPU时间片可能会减少,从而导致用户的响应时间变长。特别是当系统中有大量用户同时请求服务时,每个用户的请求可能需要等待较长时间才能得到处理。
-
可靠性问题:分时系统需要确保多个用户之间的数据隔离和系统稳定性。然而,由于多个用户共享同一台计算机资源,任何一个用户的错误操作或恶意攻击都可能影响到整个系统的稳定性和安全性。因此,分时系统需要采取一系列的安全措施来保护系统和用户数据的安全。
-
数据通讯问题:在分布式或网络化的分时系统中,用户终端与主机之间的数据通讯可能成为瓶颈。网络延迟、带宽限制和通讯协议的开销都可能影响到用户与主机之间的交互效率。此外,不同用户终端之间的通讯也可能受到网络拓扑结构、路由策略和防火墙规则等因素的影响。
-
资源竞争:由于多个用户共享同一台计算机资源(如CPU、内存、磁盘等),这些资源可能会成为竞争的焦点。当多个用户同时请求使用同一资源时,系统需要采取一定的调度策略来分配资源。然而,这种调度策略可能会导致某些用户获得更多资源而另一些用户获得较少资源的情况出现,从而影响系统的公平性和效率。
-
成本问题:分时系统通常需要较高的硬件和软件成本来支持多个用户的同时交互。特别是对于大型企业和研究机构来说,部署和维护一个高效、稳定的分时系统可能需要投入大量的人力和物力资源。此外,随着用户数量的增加和系统规模的扩大,这些成本还可能进一步增加。
用户要主动放弃cpu:
让用户觉得是cpu的独占者;
(并行)在某一个时刻,多个进程同时运行;
一个cpu核心不能并行,
(并发)在一段时间,多个程序同时运行;
一个cpu核心可以并发,
虚拟CPU
- 定义:虚拟CPU,也被称为虚拟处理器(vCPU),是指分配给虚拟机(VM)的逻辑CPU资源。它是通过虚拟化技术将物理CPU的计算资源抽象和划分出来的逻辑单元。
- 来源:虚拟CPU的概念源于虚拟化技术,该技术通过软件层(称为虚拟机管理程序或Hypervisor)在物理CPU和虚拟机之间进行调度和管理,使多个虚拟机能够共享同一个物理CPU。
- 虚拟化层:Hypervisor是管理虚拟机的核心软件,它运行在物理硬件之上,负责将物理CPU的计算资源分配给多个虚拟机。每个虚拟机被分配一个或多个虚拟CPU,这些vCPU由Hypervisor映射到物理CPU上。
- 资源分配:当虚拟机需要执行指令时,Hypervisor将这些指令翻译并调度到物理CPU上执行。Hypervisor管理多个虚拟机对物理CPU的访问,确保每个虚拟机都有机会执行其指令,同时保持虚拟机之间的相互隔离。
进程的切换:
PC寄存器:
寄存器的状态-》上下文;
操作系统的进程占用cpu的时间;时刻不同,执行时间短所以有独占的假象;
进程调度:
时间片轮转法:
时间片:每一个任务单词占用cpu的时间;
时钟中断:
完全公平调度算法(行为类似于时间片轮转算法;优先级会随着进程占用cpu的时间动态提升优先级):
cat /proc/cpuinfo:查看cpu状态
进程的概念:
正在运行的程序,OS资源分配的基本单位(资源包括cpu和内存);
操作系统怎么管理进程:
进程:任务
PCB:进程控制块;(书)
task_struct:任务描述符
描述了进程的一切信息;
任务队列:
pid:
标识进程,给用户使用;正整数;
获取进程的pid:
pid_t:typedef int pid_t;
getpid:自己进程的pid;
getppid:获取父进程的pid;
同一份静态文件可以生成多个进程;
ps
ps
命令在 Linux 和 Unix 系统中用于显示当前运行的进程的快照。默认情况下,不带任何选项的 ps
命令显示的信息可能因不同的 shell 环境或用户配置而异,但它通常会显示当前终端会话中由用户启动的进程的简要信息。
然而,最普遍和有用的信息通常包括:
-
PID(进程ID):这是分配给每个进程的唯一标识符。
-
TTY(终端类型):显示进程关联的终端类型。对于没有终端关联的进程(如守护进程),这个字段可能显示为
?
或其他标识。 -
TIME:CPU 时间,显示进程占用的 CPU 时间总量。
-
CMD(命令名/命令行):启动进程的命令名或命令行。这可以是完整的命令行,但通常会被截断以适应屏幕宽度。
-
其他可能的信息:根据系统的配置和
ps
的版本,还可能显示其他信息,如用户ID(UID)、CPU使用率(尽管在默认输出中不常见)、父进程ID(PPID)等。但是,这些信息通常需要通过特定的选项来显示。
ps -l:
在linux中,进程之间存在有亲缘关系;
bash创建了ps进程:bash叫父进程,ps叫子进程;
ps -elf:查看所有进程
idle进程:
idle
进程(或称为空闲进程)是一个特殊的系统进程,它的主要作用是当系统中没有其他进程需要运行时,占用CPU时间。这是为了确保CPU不会完全空闲,从而在一定程度上减少功耗和可能的硬件问题(如CPU过热)。
1号进程:
1号进程通常指的是init进程,也被称为系统初始化进程。它是系统启动时第一个被创建的用户态进程
ttys:
- 在Linux中,
tty
代表各种类型的终端。这些终端可以是物理的(如连接到计算机的键盘和显示器),也可以是虚拟的(如通过SSH连接创建的伪终端)。
pts:
在Linux系统中,pts终端指的是伪终端(pseudo terminal),它是一种软件模拟出来的终端设备,用于在多个程序之间建立通信
2号进程:
在Linux系统中,2号进程是内核的交换守护进程(Swap Daemon),也称为kswapd。该进程负责将内存中不常用的页面(Page)移动到交换空间(Swap Space)中,以释放出物理内存供其他进程使用。kswapd进程通常在内核初始化过程中被创建,并在系统运行期间一直存在。
bootloader:
Bootloader(引导加载程序)是计算机启动时执行的第一段程序,它负责将操作系统加载到计算机的内存中并启动系统
进程的权限:
进程的权限主要基于用户身份和文件权限
在默认情况下,uid和euid的权限都是启动这个程序的用户的权限;
user有可更具程序的x权限,通过该程序启动一个进程,进程的uid和euid都是user;
chmod u+s file
一、基本权限(9位)
Linux中的每个文件和目录都有三个基本的权限类别:属主(user)、属组(group)和其他用户(others)。每个类别都有读(r=4)、写(w=2)和执行(x=1)权限,这些权限用数字表示时,可以组合成权限码(如7=4+2+1表示读、写、执行权限都有)。因此,每个文件和目录的基本权限可以用9位数字表示,格式通常为rwxrwxrwx
,但实际表示时可能会省略某些权限位(用-
表示无权限)。
二、特殊权限(额外3位)
Linux还提供了三种特殊权限,它们分别是:
- SUID(Set User ID)
- 位置:用户(user)对应的权限位(前三位中的执行位)。
- 表示:如果执行位(x)存在,则特殊权限位用
s
表示;如果执行位不存在,则用S
表示。 - 作用:当对可执行文件设置了SUID权限后,普通用户执行该文件时,将临时获得文件属主的身份权限。这对于需要特定权限才能执行的程序非常有用,如
passwd
命令允许普通用户修改自己的密码。 - 设置方法:使用
chmod u+s 文件名
或chmod 4755 文件名
(其中4代表SUID,755是常规权限设置)。
- SGID(Set Group ID)
- 位置:组(group)对应的权限位(中间三位中的执行位)。
- 表示:如果执行位(x)存在,则特殊权限位用
s
表示;如果执行位不存在,则用S
表示。 - 作用:对于文件,SGID的作用与SUID类似,但它是针对文件所属组的。对于目录,设置了SGID的目录内新创建的文件将继承该目录的所属组,而不是创建者的默认组。
- 设置方法:使用
chmod g+s 目录名
或chmod 2755 目录名
(其中2代表SGID,755是常规权限设置)。
- Sticky Bit(粘滞位)
- 位置:其他用户(others)对应的权限位(最后三位中的执行位)。
- 表示:如果执行位(x)存在,则特殊权限位用
t
表示;如果执行位不存在,则用T
表示。 - 作用:主要用于目录,确保只有文件的所有者或root用户才能删除或重命名目录下的文件。这对于共享目录特别有用,如
/tmp
目录,它允许所有用户写入文件,但只有文件的所有者或root才能删除这些文件。 - 设置方法:使用
chmod o+t 目录名
或chmod 1777 目录名
(其中1代表Sticky Bit,777是常规权限设置,但通常不推荐对目录设置完全开放的读写执行权限)。
12位权限: U G O
suid sgid sticky rwx rwx rwx
suid权限:
u的x和o的x必须存在;
u的s存在(suid)
o用户通过该可执行程序启动的进程euid更改程序的拥有者;
明文存储:直接把密码存入文件;(脱库)
加密:ll /etc/shadow (所有用户的密码以密文存入shadow);
sgid权限:
同时拥有o的x和g的x
拥有g的s(sgid);
chmod g+s file;
sticky 粘滞位
chmod o+w dirfile
chmod o+t dirfile
正对目录文件
对于o用户,拥有w和t权限(sticky)
o用户可以新建文件,可以删除自己的文件,不能删除别人的文件;
- 用户身份:
- 在Linux中,用户是获取系统资源的凭证。每个用户都有一个唯一的用户标识符(UID)。
- 进程在执行时会携带发起该进程的用户的身份信息。因此,进程的操作权限实际上是由其所属用户的权限决定的。
- 进程权限与文件权限:
- 文件和目录在Linux中有三组权限:所有者(owner)、所属组(group)和其他用户(others)。每组权限都包括读(r)、写(w)和执行(x)三种权限。
- 当进程尝试访问文件或目录时,系统会检查进程的有效用户ID(effective user ID)和有效组ID(effective group ID),以确定进程是否具有相应的权限。
二、进程中的用户ID
在Linux中,进程通常与以下三种用户ID相关联:
- 真实用户ID(real user ID):执行进程者的用户ID,通常是从父进程继承而来。
- 有效用户ID(effective user ID):用于确定进程对文件的访问权限。在某些情况下,有效用户ID可能与真实用户ID不同。
- 保存的设置用户ID(saved set-user ID):在exec函数执行后,用于保存有效用户ID的副本。
三、特殊权限
Linux还提供了两种特殊权限,允许在执行文件时暂时改变执行者的权限:
- SUID(Set User ID):当一个文件被设置为SUID权限时,执行该文件的进程的有效用户ID会被设置为该文件所有者的用户ID。这通常用于需要执行特定任务(如修改密码)的程序。
- SGID(Set Group ID):当一个目录被设置为SGID权限时,在该目录下创建的新文件或目录的所属组会被设置为该目录的所属组,而不是创建者的所属组。
四、权限管理
Linux提供了多种命令和工具来管理进程的权限:
- ps:用于显示当前系统中的进程信息,包括进程的所有者、状态等。
- chmod:用于改变文件或目录的权限。
- chown:用于改变文件或目录的所有者。
- setuid和setgid:在编程中,可以通过这些函数在程序中临时改变进程的有效用户ID或有效组ID。
进程相关的命令:
top
命令是 Linux 和 Unix 系统中一个非常强大的实时监控系统资源使用情况的工具。它提供了系统进程的动态实时视图,包括 CPU 使用率、内存使用情况、运行时间、进程ID(PID)、用户、系统负载等信息。
ps -elf:
D:不可中断(不可响应信号);
R:运行态或就绪态;
S:可中断的睡眠;
T:被控制信号暂停(ctrl+z)
t:调试时的暂停(gdb)
X:死亡进程;
Z:僵尸进程(进程已经终止,资源未回收(task_struct))
I:idel(空闲)
PRI和NI :优先级
priority nice:
ADDR:驻留内存的起始地址
SZ:驻留内存的大小;
WCHAN:阻塞的系统调用;
管道阻塞:
轮询阻塞:
STME:启动时间
cpu占用总时间
ps aux:
free:看内存命令;
buf和cache的区别:
buf:缓冲(避免设备速度差异过大,先进先出);
cache:高速缓存(提高访问速度,把经常要用的数据从低速设备放于高速设备);
top:(类似于任务管理器)
实时状态
hypervisor:虚拟机管理程序
linux虚拟机:qemu(虚拟机管理平台)
优先级系统:
优先级级别:140个(在Ubuntu系统中-40 ------99)数值越低,优先级别越高;
-40~59 ------->实时优先级;(实时调度策略){fifo()RR(时间片轮转,高优先级相等的平分CPU时间)}
60~99---------》普通优先级(完全公平调度算法);
实时调度策略:高优先级优先运行,(飞机操作系统);
用户无法修改调度策略:
NICE:间接修改普通优先级;(最小值-20,常规0,最高19)
nice命令
功能:
nice
命令用于在启动进程时设置其优先级。它允许用户以指定的优先级(nice值)来运行程序,从而控制该程序在系统资源分配中的权重。
语法:
bash复制代码
nice [OPTION] [COMMAND [ARG]...] |
-n
,--adjustment=N
:指定进程的优先级调整值(nice值),范围是-20(最高优先级)到19(最低优先级)。默认值为10。
示例:
-
以nice值为-10启动
vi
编辑器:bash复制代码
nice -n -10 vi &
这个命令将
vi
编辑器的nice值设置为-10,使其具有较高的优先级。
NICE值对于的优先级PRI 60 80 99
nice 以某个nice值启动进程:
sudo -n -10 ./xfile
使用nice只能调整普通调度策略;
renice调整优先级
renice命令
功能:
renice
命令用于修改已经运行的进程的优先级。它允许用户或系统管理员在进程运行时动态地调整其nice值,以适应系统资源的变化或满足特定的性能需求。
语法:
bash复制代码
renice [-n] priority [[-p] pid [...]] [[-g] pgrp [...]] [[-u] user [...]] |
-n
,--priority=N
:指定新的优先级值(nice值)。-p
,--pid
:指定要更改优先级的进程ID。-g
,--pgrp
:指定要更改优先级的进程组ID。-u
,--user
:指定要更改优先级的用户名,这将更改该用户所有进程的优先级。
示例:
-
将进程ID为1234的进程的优先级设置为10:
bash复制代码
renice 10 -p 1234
-
将用户名为
username
的所有进程的优先级降低5个单位:bash复制代码
sudo renice -n -5 -u username
注意:只有root用户或具有相应权限的用户才能提高其他用户的进程的优先级(即将nice值设置为负数)。
renice -n 11 -p 86531;
ps -elf |grep xfile;
renice 和 nice 调整优先级;
但是完全公平调度算法会程序运行时改变优先级;
前台和后台:
前台:可以响应键盘中断的进程;
后台:不可以响应
ctrl + c:中止
ctrl + \ :终止
ctrl + z: 暂停;//把进程放入后台暂停
在运行时加&符号,把该进程变成后台进程
./while --------前台running;
./while & --------后台running; 只针对bash
fg:把后台运行变成前台运行;
jobs
:
命令来查看当前会话中所有的后台作业及其状态(运行中、已停止等)。jobs
命令会列出每个作业的编号、状态和命令。
bg:运行后台暂停的进程;
kill :杀死进程;除了不可中断的睡眠进程不会被杀死;
(1)获取pid:
用ps -elf查看;
(2)kill -9 pid
linux过滤:
在Unix或Linux系统中,过滤(filtering)是一种常用的技术,用于从大量数据中提取出你感兴趣的部分。这通常通过管道(pipe)和文本处理工具(如grep
、awk
、sed
等)来实现。下面我将详细解释如何在这些上下文中使用过滤,特别是与ps
命令结合使用时。
管道(Pipe)
管道是Unix和Linux中的一个基本概念,它允许你将一个命令的输出作为另一个命令的输入。这通过竖线(|
)符号表示。例如,ps -elf | grep something
会将ps -elf
命令的输出传递给grep something
,后者会从这些输出中查找包含“something”的行。
grep
grep
是最常用的文本搜索工具之一,用于搜索文件(或标准输入)中的行,这些行匹配指定的模式。模式可以是一个简单的字符串,也可以是一个正则表达式。在ps | grep
的场景中,grep
用于从ps
命令的输出中筛选出包含特定文本(如进程名或命令行参数)的行。
示例
-
查找名为
myscript
的进程:bash复制代码
ps -elf | grep myscript
这个命令会列出所有命令行中包含
myscript
的进程。
crontab :定时任务;
单用户定时任务:
crontab -e
全局定时用户:
直接编辑crontab文件:
sudo vim /etc/crontab
在 Linux 系统中,/etc/crontab
文件是系统级别的 cron 任务配置文件,它定义了系统范围内定期执行的任务。使用 sudo vim /etc/crontab
命令,你可以以超级用户(root)权限编辑这个文件,从而添加、修改或删除系统级别的定时任务。