版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
项目6进程管理《Linux网络操作系统项目化教程(openEuler)》学习目标/Target了解进程的概念,能够说出什么是进程及进程的特点。熟悉进程的状态,能够说出进程有哪些状态以及各种状态之间的转换过程。了解进程标识符,能够说出常用的进程标识符及其含义。知识目标学习目标/Target掌握进程查看命令,能够熟练使用命令查看进程。掌握进程终止命令,能够熟练使用命令终止进程。了解任务的前台与后台调度,能够使用命令实现进程的前台与后台调度。掌握服务管理,能够熟练使用systemctl命令管理任。掌握at命令的使用,能够使用at命令制订一次性计划任务。掌握crontab命令的使用,能够使用crontab命令制订周期性计划任务。技能目标学习目标/Target通过学习进程生命周期,提高对事物变化规律的认知,培养应对变化的能力,以更好地应对事物发展过程中的不确定性和挑战。通过计划任务的学习,培养学习的规划意识,学会合理安排时间和任务,提高效率,减少拖延。素养目标目录/Contents6.16.2进程概述进程管理常用命令6.3任务的前台与后台调度6.4服务管理6.5计划任务项目导入01项目导入随着业务的不断发展,服务器上的数据和软件不断更新,为了确保openEuler服务器的稳定运行,需要定期进行系统维护。系统维护包括更新软件包、清理缓存、检查磁盘空间等关键任务,以确保系统性能和安全。上级领导让小智制订几项计划任务,以自动进行系统维护工作。本次要进行的系统维护目标如下。自动化更新软件包,确保系统安全。清理系统缓存,释放磁盘空间。检查磁盘空间使用情况,预防磁盘空间不足导致的问题。维护工作结束后,让系统自动重启,确保所有更新生效。实现每周五凌晨自动进行系统维护。知识准备02了解进程的概念,能够说出什么是进程及进程的特点。学习目标6.1.1进程概念当我们运行程序时,Linux操作系统会为程序创建一个特殊的环境,用于分配管理程序执行时所需要的资源(如CPU、内存),以保证程序能够独立运行,不受其他程序干扰,这个特殊的环境就称为进程。6.1.1进程概念早期的CPU都是单核CPU,对于单核CPU,一次只能执行一个程序,即运行一个进程。但是,当我们使用计算机时,可以同时运行多个程序。。如果一个进程的时间片用完了,CPU将暂停该进程的执行,将该进程移到队列的末尾,转而执行下一个进程。时间片分时调度策略如图。6.1.1进程概念熟悉进程的状态,能够说出进程有哪些状态以及各种状态之间的转换过程。学习目标6.1.2进程生命周期进程的生命周期是指进程从创建到终止的完整过程。进程在生命周期中主要分为5种状态,分别是创建状态、就绪状态、运行状态、阻塞状态和终止状态,下面分别介绍进程的这5种状态。6.1.2进程生命周期进程的创建状态是指进程正在被创建的过程。在创建状态,进程需要申请内存空间,向其中写入控制和管理进程的信息。之后,系统将为该进程分配运行时所需要的资源,如内存空间和必要的程序段。创建完毕之后,进程就会被调度进入就绪队列等待执行。如果在创建的过程中,进程所需要的资源不足,如系统内存不足,则进程创建将无法完成,进程将一直处于创建状态,直到资源需求得到满足。1.创建状态6.1.2进程生命周期2.就绪状态处于就绪状态的进程所需的资源都已经分配到位,只等待系统分配CPU。当把CPU分配给就绪状态的进程时,进程会立刻从就绪状态转变为运行状。处于运行状态的进程是指已经分配到CPU,正在运行的进程。如果时间片用完,处于运行状态的进程就会从运行状态进入就绪状态。如果因为其他原因而失去CPU,进程就会从运行状态进入阻塞状态。3.运行状态6.1.2进程生命周期当一个进程因为等待某事件的发生而不能继续执行时,它就会进入阻塞状态,这些事件包括I/O操作完成、等待信号等。按照等待事件类型、能否被信号中断等因素,阻塞状态可细分为可中断睡眠状态、不可中断睡眠状态、暂停状态。4.休眠状态6.1.2进程生命周期123可中断睡眠状态是指进程因等待某类非关键性事件而进入的阻塞状态。不可中断睡眠状态是指进程因等待关键性核心操作而进入的阻塞状态。
暂停状态是指进程收到了特定信号而进入的阻塞状态,当进程收到将其唤醒的信号后会继续执行。当一个进程终止后,它并不会被立即清理,而是在操作系统中保留一段时间,直到其他进程对该进程完成“善后工作”,如获取终止原因、统计数据等,操作系统会删除该进程。进程终止之后,由于没有其他进程对其执行“善后工作”,进程在操作系统中保留的这段时间称为僵死状态,进入僵死状态的进程不会再被执行。进程终止的原因通常有以下4点。5.终止状态6.1.2进程生命周期123进程正常执行结束。进程出现错误而终止。例如,进程要打开的文件不存在,则进程自动终止。进程外部出现严重错误。例如,内存不足、除数为零等,进程被迫终止。4被其他有终止权的进程终止。进程在执行过程中,5种状态之间的转换如图。5.终止状态6.1.2进程生命周期了解进程标识符,能够说出常用的进程标识符及其含义。学习目标6.1.3进程标识符在Linux操作系统中,进程的标识符有3个,分别为进程标识符、用户标识符和组标识符。下面分别介绍进程的这3个标识符。进程标识符A用户标识符B6.1.3进程标识符组标识符C1.进程标识符6.1.3进程标识符每一个进程都有唯一的标识符,即进程标识符(ProcessID,PID),系统通过进程标识符调度进程。用户也可以根据PID调度进程。进程终止后,PID会被回收,可能会被分配给其他进程使用。在Linux操作系统中,除了初始化进程,其他进程都会有一个父进程,父进程即创建进程的进程。父进程也有对应的标识符,称为父进程标识符(ParentProcessID,PPID)。2.用户标识符6.1.3进程标识符用户标识符(UserID,UID)标识创建这个进程的用户。除此之外,Linux操作系统还有EUID的概念,称为有效用户标识符,表示以有效权限发起进程的用户。例如,发起一个进程的用户是itheima,但实际有权限的是root用户,也就是itheima用户以root权限发起了进程,那么这个进程的UID对应的用户为itheima,EUID对应的用户为root。3.组标识符组标识符(GroupID,GID)标识创建进程用户的所属组。EUID对应的组标识符为EGID。在Linux操作系统中,进程管理也是通过命令实现的,Linux操作系统提供了丰富的进程查看和终止命令。本节将针对常用的进程管理命令进行详细讲解。6.2进程管理常用命令掌握进程查看命令,能够熟练使用命令查看进程。学习目标6.2.1进程查看命令在Linux进程管理中,最重要的操作之一就是查看进程,包括查看正在运行的进程、查看进程运行状态等,下面介绍几个常用的进程查看命令。6.2.1进程查看命令1.ps命令ps命令用于查看当前系统中正在运行的进程信息,包括进程状态、占用的资源等,它是最基本也最强大的进程查看命令。6.2.1进程查看命令ps选项 参数基本格式1.ps命令ps命令常用选项如表。6.2.1进程查看命令选项说明-a显示除会话组长进程之外的所有进程,包括其他用户的进程-e显示所有进程-f相比-a、-e选项,它可以显示进程更多详细信息,多与其他选项组合使用-u显示与指定用户相关的进程信息,如-uitheima,如果省略参数,则显示与当前用户相关的进程信息-x显示没有控制终端的进程,如后台进程-l以长格式显示进程信息,相比于-f选项,它可以显示更多信息,如F(进程标志位)、S(进程状态)、PRI(进程调度优先级)等-p显示指定PID的进程信息,如-p100001.ps命令6.2.1进程查看命令案例6-1:使用ps-aux命令显示所有终端上所有用户有关进程的详细信息。点击查看ps命令查看的进程结果不是动态的、连续的,它相当于快照功能,只显示当前时刻进程的状态信息。如果想要动态地显示进程状态信息,则可以使用top命令。top命令的基本格式如下所示。6.2.1进程查看命令ps选项 参数基本格式2.top命令2.top命令top命令常用选项如表。6.2.1进程查看命令选项说明-b以批处理模式执行top命令,即将
top
命令的输出发送到标准输出流(stdout),而不是以交互方式在终端中显示-d自定义刷新时间间隔-i忽略所有空闲进程或僵死进程-p监视指定PID的进程-c显示进程命令行,包括路径2.top命令使用top命令查看进程状态信息,显示结果如图。6.2.1进程查看命令显示系统相关信息显示进程总数及状态分布显示CPU资源的使用情况显示内存资源的使用情况显示Swap交换分区的使用情况2.top命令在top命令的运行界面,使用快捷键i忽略闲置和僵死的进程,交互结果如图。6.2.1进程查看命令在Linux操作系统中,除了初始化进程systemd,其他进程都有父进程。一个父进程可以创建多个子进程,这些子进程互为兄弟进程。因此,Linux操作系统中的进程之间都相互关联。Linux操作系统提供了一个命令pstree,可以树状形式显示系统中的进程,即显示一棵进程树,从进程树中可以直接观察到进程之间的派生关系。6.2.1进程查看命令3.pstree命令pstree命令的基本格式如下所示。6.2.1进程查看命令pstree选项基本格式3.pstree命令pstree命令常用选项如表。6.2.1进程查看命令3.pstree命令选项说明-a显示每个进程的完整命令(包括路径、参数等)-c不使用精简标识法-h列出树状图,特别标明当前正在执行的进程-u显示UID转换。每当进程的UID与其父进程的UID不同时,新的用户名称会显示在进程名称后面的小括号中-n使用程序识别码排序(默认以程序名称排序)6.2.1进程查看命令案例6-2:以树状形式显示系统当前进程,并着重显示当前正在执行的进程。点击查看3.pstree命令pgrep命令可以根据服务名称,从进程队列中查找与该服务有关的进程,查找成功后显示进程的PID。6.2.1进程查看命令pgrep选项参数基本格式4.pgrep命令pgrep命令常用选项如表。6.2.1进程查看命令4.pgrep命令选项说明-o仅显示同名进程中PID最小的进程-n仅显示同名进程中PID最大的进程-p指定父进程的PID6.2.1进程查看命令案例6-3:查找与sshd服务相关的进程。4.pgrep命令[itheima@localhostchapter06]$pgrepsshd13907275772761在案例6-3中,使用pgrep命令查找与sshd服务相关的进程,由输出结果可知,与sshd服务相关的进程有3个,这3个进程的PID分别为1390、72757和72761。掌握进程终止命令,能够熟练使用命令终止进程。学习目标6.2.2进程终止命令除了查看进程,有时还会终止一些无用的进程,针对进程的终止,Linux操作系统提供了kill和killall两个命令。下面分别对这两个命令进行介绍。6.2.2进程终止命令1.kill命令kill命令可以终止指定的进程。kill命令的工作原理是发送某个信号给指定进程,以改变进程的状态。kill选项参数基本格式6.2.2进程终止命令1.kill命令kill命令的选项一般是信号,参数为PID。Linux操作系统提供了很多预定义的信号,读者可以使用kill-l命令查看这些预定义的信号。6.2.2进程终止命令点击查看案例6-4:终止PID为3794的进程。终止PID为3794的进程6.2.2进程终止命令1.kill命令2.killall命令killall命令用于终止某个服务所对应的全部进程。通常,复杂程序会有多个进程协同为用户提供服务,当要终止服务时,如果使用kill命令逐个终止进程会比较麻烦,此时可以使用killall命令批量终止该服务的所有进程。killall命令的基本格式如下所示。killall选项参数基本格式6.2.2进程终止命令killall命令的选项通常也是信号,参数一般为服务名称案例6-5:在openEuler中,进入/usr/local/nginx/sbin目录,启动nginx服务,查看nginx服务相关进程,然后终止nginx服务的所有进程。6.2.2进程终止命令点击查看2.killall命令了解任务的前台与后台调度,能够使用命令实现进程的前台与后台调度。学习目标6.3任务的前台与后台调度Linux操作系统中的进程可以分为前台进程与后台进程,所谓前台进程就是用户在屏幕上进行操作的进程;而后台进程是在不需要用户干预的情况下运行的进程,通常用于执行如日志记录、系统监测、作业调度、用户提醒等任务。前台进程需要和用户交互,一般优先级稍微高一些;后台进程基本上不和用户交互,优先级稍微低一些。6.3任务的前台与后台调度在Linux操作系统中,有时需要将前台任务暂停调度至后台,或者将后台任务调度至前台重新启动,为此,Linux操作系统提供了jobs命令、bg命令、fg命令以及一些快捷键来完成这一系列操作。需要注意的是,虽然这些命令调度的是任务,但每个任务会对应一个或多个进程,调度任务其实就是调度进程。在实际应用中,通常说前台进程与后台进程,虽然叫法不同,但读者要理解其中的关系。6.3任务的前台与后台调度下面分别对jobs、bg和fg这几个命令进行介绍。jobsAbgBfgC6.3任务的前台与后台调度1.jobs命令jobs命令用于显示系统中暂停的任务列表及任务状态,包括后台任务。jobs命令的基本格式如下所示。jobs选项参数基本格式6.3任务的前台与后台调度1.jobs命令jobs命令常用选项如表。6.3任务的前台与后台调度选项说明-l显示进程号-p只显示任务PID-s只显示处于停止状态的任务1.jobs命令在Linux操作系统中,命令也是一个可执行的二进制程序,因此,一次命令的执行也是一次任务执行,系统会运行对应的进程。如果一个命令执行时间很长,可以使用Ctrl+z快捷键暂停任务,暂停任务之后,可以使用jobs命令查看暂停的任务及状态。例如,执行top命令查看系统进程状态,按Ctrl+z快捷键暂停任务,在输出结果最后会显示一条任务信息。[1]+已停止top基本格式6.3任务的前台与后台调度表示任务号,“已停止”表示进程的状态表示执行的命令1.jobs命令执行jobs命令可以看到暂停的任务列表。[itheima@localhostchapter06]$jobs [1]+已停止top[itheima@localhostchapter06]$jobs–l [1]+1457227停止(信号)top[itheima@localhostchapter06]$kill-91457227 基本格式6.3任务的前台与后台调度显示暂停的任务列表显示任务进程的PID终止进程2.bg命令bg命令用于将前台任务调度至后台执行。bg参数基本格式6.3任务的前台与后台调度bg的参数是任务标识号。案例6-6:将top命令执行的任务调度至后台执行。[itheima@localhostchapter06]$top [itheima@localhostchapter06]$jobs[1]+已停止top[itheima@localhostchapter06]$bg1[1]+top&2.bg命令6.3任务的前台与后台调度按Ctrl+z快捷键暂停任务2.bg命令除了使用bg命令将任务调度至后台执行,还可以在执行命令时,在命令后面添加&符号,这样命令在开始执行时就自动在后台运行。例如,使用top命令查看进程状态时,在命令后面添加&符号,命令会自动在后台执行。[itheima@localhostchapter06]$top&[1]1526918具体代码6.3任务的前台与后台调度在后台执行top命令3.fg命令fg命令用于将后台任务调度到前台执行。fg参数基本格式6.3任务的前台与后台调度fg命令的参数也是任务标识号。案例6-7:使用Vim编辑hello文件,假设在执行过程中有其他任务要执行,将Vim调度至后台执行,执行完其他任务后,再将Vim调度至前台执行。点击查看6.3任务的前台与后台调度3.fg命令掌握服务管理,能够熟练使用systemctl命令管理任务。学习目标6.4服务管理在操作系统中,服务是一类常驻在内存中,且可以提供一些功能来满足用户需求的进程。这些服务进程一旦启动就会在后台一直持续不断地运行,它们不需要和用户进行交互,因此服务进程又称为守护进程(Daemon)。Linux操作系统中有各种各样的服务,如crond、atd、syslog、Apache等,为了提升服务质量,Linux操作系统提供了特定的命令来管理这些服务进程。6.4服务管理openEuler使用systemctl命令进行服务管理,systemctl命令基本格式如下所示。systemctl功能命令服务进程基本格式6.4服务管理systemctl命令常用功能命令如表。6.4服务管理功能说明start启动服务进程stop终止服务进程status查询服务进程运行情况,列出该服务的详细信息restart重启服务进程enable设置服务开机自启动disable取消服务开机自启动reload重新加载指定服务的配置文件(并非所有服务都支持该参数,使用restart可实现相同功能)案例6-8:以http服务为例,演示systemctl的用法。安装http服务openEuler默认没有安装http服务,因此,读者首先需要安装http服务。http服务的守护进程为httpd,安装命令如下所示。点击查看6.4服务管理案例6-8:以http服务为例,演示systemctl的用法。2.查询http服务运行状态[root@localhostchapter06]#systemctlstatushttpd○httpd.service-TheApacheHTTPServerLoaded:loaded(/usr/lib/systemd/system/httpd.service;disabled;preset:disabled)Active:inactive(dead)Docs:man:httpd.service(8)Active值为inactive(dead),表示服务尚未启动6.4服务管理案例6-8:以http服务为例,演示systemctl的用法。3.启动http服务[root@localhostchapter06]#systemctlstarthttpd [root@localhostchapter06]#systemctlstatushttpd ●httpd.service-TheApacheHTTPServerLoaded:loaded(/usr/lib/systemd/system/httpd.service;disabled;preset:disabled)Active:active(running)Docs:man:httpd.service(8)…启动http服务再次查询http服务运行状态Active值为active
(running),表明http服务已经成功启动6.4服务管理案例6-8:以http服务为例,演示systemctl的用法。4.终止http服务[root@localhostchapter06]#systemctlstophttpd [root@localhostchapter06]#systemctlstatushttpd ○httpd.service-TheApacheHTTPServerLoaded:loaded(/usr/lib/systemd/system/httpd.service;disabled;preset:disabled)Active:inactive(dead)Docs:man:httpd.service(8)…终止http服务再次查询http服务运行状态Active值为inactive(dead),http服务已经停止运行6.4服务管理案例6-8:以http服务为例,演示systemctl的用法。5.设置http服务开机自启动[root@localhostchapter06]#systemctlenablehttpd Createdsymlink/etc/systemd/system/multi-user.target.wants/httpd.service→/usr/lib/systemd/system/httpd.service.设置开机自启动6.4服务管理在使用Linux操作系统时,有时需要执行一些周期性、规律性的任务,例如,定时维护系统资源、定期备份数据库等,对这些任务可以提前制订好计划,到特定时间系统会自动执行,这样可以提高系统的管理效率。为此,Linux操作系统提供了执行计划任务的命令,本节将针对计划任务命令进行详细讲解。6.5计划任务掌握at命令的使用,能够使用at命令制订一次性计划任务。学习目标6.5.1at命令at命令用于执行一次性计划任务,一般用于满足临时性工作需求。at命令的基本格式如下所示。at选项参数基本格式6.5.1at命令at命令常用选项如表。6.5.1at命令选项说明-l查看计划任务。at-l功能与atq命令相同-f从文件中读取任务-d删除计划任务,参数为任务编号。at–d功能与atrm命令相同at命令的参数通常为时间和日期,at命令允许使用各种格式的时间和日期,下面介绍几种比较常用的时间和日期格式。123允许使用hh:mm:ss的格式指定当天时间。如果该时间已经过去,则在第二天的这个时间执行。允许使用12小时计时制,但要在时间后面加AM、PM指定是上午还是下午。允许使用midnight、noon、teatime(一般为下午4点)等比较模糊的词语指定时间。6.5.1at命令45允许使用相对计时法指定时间,指定格式为time+counttime_units,time表示时间,time_units为时间单元,count为时间单元的数量。6允许使用today、tomorrow指定日期,如5:00PMtoday,表示今天下午5点,如果该时间已经过去,则在第二天的这个时间执行。允许使用time
monthday、timemm/dd/yy、timedd.mm.yy的格式指定日期。需要注意的是,日期在时间后面。案例6-9:制订计划任务,在18点重启http服务。[root@localhostchapter06]#at18:00 warning:commandswillbeexecutedusing/bin/shatThuDec1218:00:002024at>systemctlrestarthttpd at><EOT> job1atThuDec1218:00:002024 制定计划任务6.5.1at命令重启http服务按Ctrl+d快捷键退出交互模式显示任务信息案例6-10:在用户itheima的工作目录下编辑job文件,写入echo"helloworld">at.txt,制订计划任务,执行job文件中的任务。[root@localhostchapter06]#vimjobecho"helloworld">at.txt[root@localhostchapter06]#ls job[root@localhostchapter06]#at-fjob15:00 warning:commandswillbeexecutedusing/bin/shjob4atThuDec1215:00:002024[root@localhostchapter06]#at–l 1ThuDec1218:00:002024aroot4ThuDec1215:00:002024aroot 编辑job文件6.5.1at命令查看是否生成job文件制订计划任务查看所有计划任务案例6-11:制订计划任务,明天凌晨备份data文件中的数据到/usr/local/bank文件中。[root@localhostchapter06]#at00:00tomorrow warning:commandswillbeexecutedusing/bin/shatFriDec1300:00:002024at>cpdata/usr/local/bank at><EOT>job6atFriDec1300:00:002024 计划任务时间6.5.1at命令备份数据掌握crontab命令的使用,能够使用crontab命令制订周期性计划任务。学习目标6.5.2crontab命令at命令只能执行一次性的计划任务,如果想周期性地重复执行某个任务,可以使用crontab命令。使用crontab命令制订计划任务时,通常将任务命令写在一个文件中,这个任务文件叫作crontab文件。使用crontab命令加载这个文件,到指定时间系统会自动执行文件中的命令。6.5.2crontab命令crontab命令的基本格式如下所示。crontab选项参数基本格式6.5.2crontab命令crontab命令常用选项如表。6.5.2crontab命令选项说明-e编辑crontab文件-l查看当前的计划任务-r删除计划任务-u编辑其他用户的计划任务,通常需要root权限crontab命令的计划任务也需要指定时间日期与任务命令,但相比at命令,crontab命令的任务格式更为复杂,其格式如下所示。分时日月星期任务命令基本格式6.5.2crontab命令crontab命令任务格式各参数字段的含义如表。6.5.2crontab命令字段含义分0~59的整数时0~23的整数日1~31的整数月1~12的整数星期0~7的整数,0与7均表示星期日任务命令任务要执行的命令或程序脚本crontab命令的用法与at类似,因此理解起来也比较容易,但是在制订crontab计划任务时,有以下几点需要注意。123如果有些时间和日期字段没有设置,需要使用“*”符号占位。如果一个字段设置多个值,多个值之间使用“,”分隔。如果crontab文件中有多个计划任务,则一行只能写一个计划任务。在编写crontab文件时,可以使用“#”符号编写注释,方便后期阅读。45计划任务中的“日”字段不能与“星期”字段同时使用,以免发生冲突。6计划任务中的命令必须是绝对路径。计划任务中的“分”字段必须有数值,不能为空
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年7S-管理推行实务试题及参考答案
- 2026年大润发企业面试题及答案
- 2026年电网企业文化测验含答案
- 2026年基层疫苗接种员笔试重点题库含答案
- 2026年京东算法工程师社招笔试考前专项突破练习题及参考答案
- 2026年桂林三花酒笔试考试题及详细答案
- 2026年医疗健康咨询服务热线专业知识与沟通能力测试题库含答案
- 2026年福建幼儿师范高等专科学校单招职业技能考试备考试题带答案解析
- 2026年国际形势与对外交往常识试题含答案
- 2026年菏泽家政职业学院高职单招职业适应性考试备考试题带答案解析
- 2026年1月浙江省高考(首考)英语听力试题(含答案)
- 2026内蒙古包头市昆区残联残疾人专职委员招聘2人考试备考题库及答案解析
- 日常监督纪委课件
- 委内瑞拉变局的背后
- 2025至2030供水产业行业项目调研及市场前景预测评估报告
- (更新版)国家开放大学电大《机械制造基础》机考网考题库和答案
- 新部编版小学三年级上册道德与法治期末复习课件
- 2023年新疆文化旅游投资集团有限公司招聘笔试模拟试题及答案解析
- 《城市规划原理》复习考试题库(含答案)
- aw4.4工作站中文操作指南
- (WORD版可修改)JGJ59-2023建筑施工安全检查标准
评论
0/150
提交评论