实验五 Linux进程管理和打印管理

合集下载

操作系统实验报告进程管理

操作系统实验报告进程管理

操作系统实验报告进程管理操作系统实验报告:进程管理引言操作系统是计算机系统中的核心软件,负责管理计算机的硬件资源和提供用户与计算机之间的接口。

进程管理是操作系统的重要功能之一,它负责对计算机中运行的各个进程进行管理和调度,以保证系统的高效运行。

本实验报告将介绍进程管理的基本概念、原理和实验结果。

一、进程管理的基本概念1. 进程与线程进程是计算机中正在运行的程序的实例,它拥有独立的内存空间和执行环境。

线程是进程中的一个执行单元,多个线程可以共享同一个进程的资源。

进程和线程是操作系统中最基本的执行单位。

2. 进程状态进程在运行过程中会经历不同的状态,常见的进程状态包括就绪、运行和阻塞。

就绪状态表示进程已经准备好执行,但还没有得到处理器的分配;运行状态表示进程正在执行;阻塞状态表示进程由于某些原因无法继续执行,需要等待某些事件的发生。

3. 进程调度进程调度是操作系统中的一个重要任务,它决定了哪个进程应该获得处理器的使用权。

常见的调度算法包括先来先服务(FCFS)、最短作业优先(SJF)和时间片轮转等。

二、进程管理的原理1. 进程控制块(PCB)PCB是操作系统中用于管理进程的数据结构,它包含了进程的各种属性和状态信息,如进程标识符、程序计数器、寄存器值等。

通过PCB,操作系统可以对进程进行管理和控制。

2. 进程创建与撤销进程的创建是指操作系统根据用户的请求创建一个新的进程。

进程的撤销是指操作系统根据某种条件或用户的请求终止一个正在运行的进程。

进程的创建和撤销是操作系统中的基本操作之一。

3. 进程同步与通信多个进程之间可能需要进行同步和通信,以实现数据共享和协作。

常见的进程同步与通信机制包括互斥锁、信号量和管道等。

三、实验结果与分析在本次实验中,我们使用了一个简单的进程管理模拟程序,模拟了进程的创建、撤销和调度过程。

通过该程序,我们可以观察到不同调度算法对系统性能的影响。

实验结果显示,先来先服务(FCFS)调度算法在一些情况下可能导致长作业等待时间过长,影响系统的响应速度。

《Linux操作系统》实验五-作业任务和进程管理

《Linux操作系统》实验五-作业任务和进程管理

《Linux操作系统》实验报告实验五:作业任务和进程管理一、实验目的(1) 掌握UNIX系统作业、任务和进程管理的任务,了解Linux系统进程管理的图形界面;(2) 了解UNIX的系统进程间通信机制,掌握信号操作和终止进程的命令。

(3) 了解任务和作业管理命令at和batch;(4) 掌握UNIX系统的进程定时启动管理命令crontab;(5) 了解进程的挂起,掌握fg,bg等命令。

二、实验环境一台装有Windows操作系统PC机,上装有虚拟机系统VMWare,实验过程通过VMWare系统启Linux系统工作。

三、实验内容与实验过程及分析(写出详细的实验步骤,并分析实验结果)1)进程管理与查询(1)进程状态查询1.ps –ef | more #显示所有进程及启动参数2. ps –ajx | more #以作业方式显示进行信息3. ps –el | more #以长格式显示所有进程信息4.pstree –p5.pstree -a(2)终止进程的执行1.终止某一已知PID进程:ps –9 PID(1)#PID由用户自己选择2.在当前终端上执行命令:man ps3、换一终端在其运行:ps –e | grep man #确定进程PID4.终止进程执行:kill –9 PID #PID是上命令查询的结果4.终止所的同名进程终止上例中的man命令:killall man或 killall –9 man分别至少在2个不同终端上登录,然后在其中的一个终端上分别执行以下命令,并观察和分析原因。

killall bashkillall –9 bash执行killall -9 bash命令时,终端窗口关闭(3) 进程的挂起及前后台调度在一个终端上起动命令man man,在不退出man命令的情况下按下组合键Ctrl+Z,观察反映。

答:先退出当前页面,返回进入终端时的页面先后执行命令jobs和fg命令,并观察反映。

再按下组合键Ctrl+Z,在提示符下再启动一个命令(比如ps –e | more)后,按下组合键Ctrl+Z,然后再先后执行命令jobs和fg或fg 1或fg 2命令,并观察反映。

实验五 Linux进程管理

实验五  Linux进程管理

实验五Linux进程管理一.实验目的:进行系统进程管理。

二.实验内容:1.进程状态查看;2.控制系统中运行的进程;3.安排一次性和周期性自动执行的后台进程;三.实验练习:任务一进程管理实验内容:查看系统中的进程;控制系统中的进程;安排计划任务。

实验步骤:1.使用ps命令查看和控制进程●显示本用户的进程:●显示所有用户的进程:。

●在后台运行cat命令:●查看进程cat :●杀死进程cat:。

●再次查看查看进程cat,看看是否被杀死。

2.使用top命令查看和控制进程●用top命令动态显示当前的进程。

●只显示用户user01的进程(利用u键)。

●利用k键,杀死指定进程号的进程。

3.挂起和恢复进程●执行命令cat。

●按Ctrl+z键,挂起进程cat。

●输入jobs命令,查看作业。

●输入bg,把cat切换到后台执行。

●输入fg,把cat切换到前台执行。

●按Ctrl+c键,结束进程cat。

4. 熟悉并使用at命令5.安排计划任务某系统管理员需每天做一定的重复工作,请按照下列要求,编制一个解决方案:(1)在下午4 :50删除/abc目录下的全部子目录和全部文件;(2)从早8:00~下午6:00每小时读取/xyz目录下x1文件中的全部数据加入到/backup目录下的bak01.txt文件内;(3)每逢星期一下午5:50将/data目录下的所有目录和文件归档并压缩为文件:backup.tar.gz;(4)在下午5:55将IDE接口的CD-ROM卸载(假设:CD-ROM的设备名为hdc);(5)在早晨8:00前开机后启动启动www服务器。

●查看crontab命令的帮助信息:●查看用户的计划任务列表:●生成一个crontab的脚本文件:●按照生成的脚本安排计划任务:●查看计划任务表,看看计划任务是否已被安排:●删除计划任务列表,并进行确认。

linux进程管理的实验报告

linux进程管理的实验报告

实验报告:Linux进程管理1. 引言本实验报告将详细介绍Linux系统中进程管理的相关知识和操作。

进程管理是操作系统中的一个重要组成部分,它负责控制和调度系统中运行的各个进程,确保系统资源的合理分配和进程的正常运行。

在本实验中,我们将通过一系列步骤来了解Linux系统中进程的创建、监控和控制。

2. 实验环境为了完成本实验,我们需要在一台运行Linux操作系统的计算机上进行操作。

本实验报告基于Ubuntu 20.04 LTS操作系统进行撰写,但是适用于大多数Linux 发行版。

3. 实验步骤步骤一:创建新进程在Linux系统中,可以通过fork()系统调用来创建新的进程。

以下是一个简单的示例代码:#include <stdio.h>#include <unistd.h>int main() {pid_t pid = fork();if (pid == 0) {// 子进程逻辑printf("这是子进程\n");} else if (pid > 0) {// 父进程逻辑printf("这是父进程\n");} else {// 进程创建失败printf("进程创建失败\n");}return0;}步骤二:查看进程信息Linux系统提供了多种命令来查看系统中运行的进程信息。

以下是一些常用的命令:•ps:显示当前终端下的进程列表。

•top:实时显示进程的CPU、内存等资源占用情况。

•pstree:以树状结构显示进程的层次关系。

步骤三:杀死进程有时候我们需要终止一个运行中的进程,可以使用kill命令来发送终止信号给目标进程。

以下是一个示例:kill <PID>请将<PID>替换为目标进程的进程ID。

步骤四:进程优先级调整通过调整进程的优先级,可以影响进程在系统中的调度顺序。

在Linux系统中,可以使用nice命令来调整进程的优先级。

Linux进程管理-实验报告

Linux进程管理-实验报告

《Linux 操作系统设计实践》实验一:进程管理实验目的:(1)加深对进程概念的理解,明确进程和程序的区别.(2)进一步认识并发执行的实质。

(3) 学习通过进程执行新的目标程序的方法.(4)了解Linux 系统中进程信号处理的基本原理。

实验环境:Red Hat Linux实验内容:(1)进程的创建编写一段程序,使用系统调用fork()创建两个子进程,当此进程运行时,在系统中有一个父进程和两个子进程活动,让每一个进程在屏幕上显示一个字符,父进程显示字符“a”;子进程分别显示字符“b”和字符“c”,试观察记录屏幕上的显示结果,并分析原因。

程序代码:#include〈stdio。

h〉int main(){int p1 ,p2 ;while((p1=fork())==—1);if(p1==0)putchar(’b’);else{while((p2=fork())==-1);if(p2==0)putchar(’c’);elseputchar('a’);}return 0;}运行结果:bca分析:第一个while里调用fork() 函数一次,返回两次.子进程P1得到的返回值是0,父进程得到的返回值是新子进程的进程ID(正整数);接下来父进程和子进程P1两个分支运行,判断P1==0,子进程P1符合条件,输出“b”;接下来else里面的while里再调用fork()函数一次,子进程P2得到的返回值是0,父进程得到的返回值是新子进程的进程ID(正整数);接下来判断P2==0,子进程P2符合条件,输出“c”,接下来父进程输出“a”,程序结束.(2)进程的控制①修改已编写的程序,将每个进程输出一个字符改为每个进程输出一句话,在观察程序执行时屏幕上出现的现象,并分析原因.程序代码:#include〈stdio。

h〉int main(){int p1,p2;while((p1=fork())==-1);if(p1==0)printf(”Child1 is running!\n”);else{while((p2=fork())==—1);if(p2==0)printf(”Child2 is running!\n");elseprintf("Father is running!\n");}return 0;}运行结果:Child1 is running!Child2 is running!Father is running!分析:本实验和上一个实验一样,只是将每个进程输出一个字符改为每个进程输出一句话。

linux常用命令实验实验报告 -回复

linux常用命令实验实验报告 -回复

linux常用命令实验实验报告-回复Linux常用命令实验实验报告一、引言在计算机领域,掌握常用命令是非常重要的。

对于使用Linux操作系统的用户来说,熟悉常用命令更是必备的技能之一。

本篇实验报告将以"Linux常用命令"为主题,介绍并实验一些常用的Linux命令,包括文件与目录管理、权限管理、网络管理、进程管理等方面的命令。

通过本次实验,希望进一步巩固和提升大家对Linux操作系统的理解和实践能力。

二、实验一:文件与目录管理1. 文件列表命令:ls首先,我们来介绍一下`ls`命令,该命令用于列出当前目录下的所有文件和文件夹。

通过在终端中输入`ls`命令,可以查看当前目录下的文件列表。

2. 创建目录命令:mkdir接下来,我们将尝试使用`mkdir`命令创建一个新的目录。

可以输入`mkdir directory_name`来创建一个名为"directory_name"的目录。

3. 切换目录命令:cd使用`cd`命令可以切换当前工作目录。

例如,要进入某个目录,可以使用`cd directory_name`命令。

要返回上一级目录,可以使用`cd ..`。

4. 复制文件命令:cp`cp`命令用于复制文件和目录。

要复制一个文件,可以使用`cp source_file destination_file`命令。

例如,`cp file1.txt file2.txt`将会复制"file1.txt"并将其命名为"file2.txt"。

5. 删除文件命令:rm要删除一个文件,可以使用`rm file_name`命令。

例如,要删除"file.txt"文件,可以输入`rm file.txt`。

6. 查找文件命令:find使用`find`命令可以在文件系统中查找文件。

例如,`find / -namefile_name`将会在根目录下找到名为"file_name"的文件。

linux的进程管理实验总结

linux的进程管理实验总结

linux的进程管理实验总结Linux的进程管理实验总结1. 引言Linux中的进程管理是操作系统的核心功能之一,在实际的系统运行中起着重要的作用。

进程管理能够有效地分配系统资源、管理进程的运行状态和优先级,以及监控进程的行为。

本文将以Linux的进程管理实验为主题,分步骤介绍实验过程及总结。

2. 实验目的本次实验的目的是理解Linux中进程的概念,掌握进程的创建、运行和终止的基本操作,以及进程的状态转换过程。

3. 实验环境本次实验使用的是Linux操作系统,可以选择使用虚拟机安装Linux或者使用Linux主机进行实验。

4. 实验步骤4.1 进程的创建在Linux中,可以使用系统调用fork()来创建一个新的子进程。

在实验中,可以编写一个简单的C程序来调用fork()系统调用,实现进程的创建。

具体步骤如下:(1)创建一个新的C程序文件,例如"process_create.c"。

(2)在C程序文件中,包含必要的头文件,如<stdio.h>和<unistd.h>。

(3)在C程序文件中,编写main()函数,调用fork()函数进行进程的创建。

(4)编译并运行该C程序文件,观察控制台输出结果。

实验中,可以通过观察控制台输出结果,判断新的子进程是否被成功创建。

4.2 进程的运行在Linux中,通过调用系统调用exec()可以用一个新的程序替换当前进程的执行。

可以使用exec()函数来实现进程的运行。

具体步骤如下:(1)创建一个新的C程序文件,例如"process_run.c"。

(2)在C程序文件中,包含必要的头文件和函数声明,如<stdio.h>和<unistd.h>。

(3)在C程序文件中,编写main()函数,调用execl()函数来执行一个可执行程序。

(4)编译并运行该C程序文件,观察控制台输出结果。

实验中,可以通过观察控制台输出结果,判断新的程序是否被成功执行。

Linux实验:进程管理

Linux实验:进程管理

实验3:进程管理实验目的:1.掌握进程管理的相关命令;2.理解Linux进程管理的实质。

实验材料:一、实验内容及步骤Linux系统上所有运行的东西都可以称之为一个进程。

每个用户任务、每个系统管理守护进程,都可以称之为进程。

1.ps功能:用于查看进程状态。

使用该命令可以确定有哪些进程正在运行和运行的状态、进程是否结束、进程有没有僵死、哪些进程占用了过多的资源等等。

命令的格式:ps [options]主要参数:最常用的三个参数是u、a、x实例:ps –u 查看系统进程,显示面向用户的格式ps –a 查看系统中与tty相关的进程图12.top功能:显示系统当前的进程和其他状况;可以通过用户按键来不断刷新当前状态。

top 命令提供了实时的对系统处理器的状态监视;该命令可以按CPU使用。

内存使用和执行时间对任务进行排序;而且该命令的很多特性都可以通过交互式命令或者在个人定制文件中进行设定。

命令的格式:top [-] [d delay] [q] [c] [s] [S] [i]主要参数:d 指定每两次屏幕信息刷新之间的时间间隔。

当然用户可以使用s交互命令来改变之。

s 在安全模式中运行。

这将去除交互命令所带来的潜在危险。

c 显示整个命令行而不只是显示命令名。

实例:top 查看系统状况图2 top -n 10 显示更新十次后退出图3 top -n 2 -b > top.log 将更新显示二次的结果输出到名称为top.log 的档案里图43.,kill及其带参数的使用kill 进程ID图54,crontab命令试写一个定时任务,每周五11:30提示"明天休息,注意备份数据库" (运行命令为:wall "明天休息,注意备份数据库")vi aaa30 11 * * 5 wall “明天休息,注意备份数据库”crontab aaa图6。

实验五 Linux进程管理和打印管理

实验五  Linux进程管理和打印管理

实验五Linux进程管理和打印管理一. 一.实验目的:1.1.进行系统进程管理。

2.2.配置Linux下的打印服务器,实现局域网内的Linux和Windows客户端共享使用服务器的打印机。

二. 二.实验内容:1.1.进程状态查看;2.2.控制系统中运行的进程;3.3.安排一次性和周期性自动执行的后台进程;4.4.配置Linux打印服务器;5.5.配置Linux客户端;6.6.配置Windows客户端。

三. 三.实验练习:任务一进程管理实验内容:查看系统中的进程;控制系统中的进程;安排计划任务。

实验步骤:1. 1.使用ps命令查看和控制进程●●显示本用户的进程:#ps。

●●显示所有用户的进程:#ps -au。

●●在后台运行cat命令:#cat &。

●●查看进程cat :# ps aux |grep cat。

●●杀死进程cat:#kill –9 cat。

●●再次查看查看进程cat,看看是否被杀死。

2. 2.使用top命令查看和控制进程●●用top命令动态显示当前的进程。

●●只显示用户user01的进程(利用u键)。

●●利用k键,杀死指定进程号的进程。

3. 3.挂起和恢复进程●●执行命令cat。

●●按Ctrl+z键,挂起进程cat。

●●输入jobs命令,查看作业。

●●输入bg,把cat切换到后台执行。

●●输入fg,把cat切换到前台执行。

●●按Ctrl+c键,结束进程cat。

4.4.安排计划任务●●查看crontab命令的帮助信息:#crontab -help。

●●查看用户的计划任务列表:#crontab –l。

●●生成一个crontab的脚本文件:#echo “* /10 * * * 1” /root/bin/backup” >cronfile。

●●按照生成的脚本安排计划任务:#crontab cronfile。

●●查看计划任务表,看看计划任务是否已被安排:#crontab –l。

●●删除计划任务列表,并进行确认。

管理Linux 系统进程操作实验报告

管理Linux 系统进程操作实验报告

操作系统实验报告题目:管理Linux 系统进程实验目的1) 回顾系统进程的概念,加深对Linux / UNIX 进程管理的理解。

2) 回顾ps 命令和选项。

3) 列出当前shell 中的进程。

4) 列出运行在系统中的所有进程。

5) 根据命令名搜索特定的进程。

6) 确定一个进程,终止它。

7) 使用kill 命令终止进程。

8) 根据用户查找和终止进程。

9) 根据命令名终止进程。

实验环境一台运行Red Hat Linux 操作系统的计算机。

实验内容与步骤注:本报告中蓝色字表示填空的内容,红色字表示仍然在纠结。

步骤1:登录进入GNOME。

在Linux 登录框中填写指导老师分配的用户名和口令,登录Linux 系统。

步骤2:访问命令行。

单击红帽子,在“GNOME 帮助”菜单中单击“系统工具”-“终端”命令,打开“终端”窗口。

步骤3:回顾系统进程概念。

每个运行的程序都会创建一个进程,进程分配到一个唯一的进程标识符(PID) 。

PID被系统用于标识和跟踪进程,直到进程结束。

操作系统内核管理所有进程的初始化和终止。

每一个进程都要求系统资源(例如CPU 时间和RAM空间)在其中工作。

当进程启动的时候,操作系统把系统资源分配给每个进程,当进程终止的时候,系统回收这些资源。

在Linux 系统启动的时候,首先启动的两个进程是sched (调度) 和init (初始化) ,它们管理着其他进程。

Linux 系统中有几种不同类型的进程:守护进程:由Linux 内核启动的进程,为了特定目的而存在。

例如,lpsched 守护进程存在只是为了处理打印作业。

父进程:派生其他进程的进程是父进程。

一个叫做init 的守护进程是第一个调用的进程。

每一个进程,除了init 之外,都有一个父进程。

子进程:由其他进程派生出来的进程叫做子进程。

孤儿进程:在进程返回输出之前,它的父进程结束了,这样的进程叫做孤儿进程。

僵进程:子进程没有带着输出返回给父进程。

Linux终端命令打印和打印机管理

Linux终端命令打印和打印机管理

Linux终端命令打印和打印机管理在Linux操作系统中,终端命令是管理和控制系统的重要工具。

其中,打印和打印机管理也是我们经常需要使用的功能。

本文将介绍一些常用的Linux终端命令,以及如何通过命令来管理和配置打印机。

一、打印命令1. lp命令:lp命令是Linux中用于打印文件的基本命令。

使用lp命令时,可以指定打印机、打印份数以及其他打印选项。

例如: lp -d printername filename这条命令将文件filename发送到名为printername的打印机进行打印。

2. lpr命令:lpr命令同样用于文件的打印,但与lp命令不同的是,lpr命令直接发送文件到默认打印机进行打印。

例如:lpr filename这条命令将文件filename发送到默认打印机进行打印。

3. lpq命令:lpq命令用于查看当前打印队列的状态。

通过lpq命令,我们可以了解到正在排队等待打印的文件以及它们的打印顺序。

例如: lpq这条命令将显示当前打印队列的状态。

4. lprm命令:lprm命令用于从打印队列中删除正在等待的文件。

例如:lprm jobnumber这条命令将从打印队列中删除指定编号的打印任务。

二、打印机管理1. lpadmin命令:lpadmin命令是Linux中用于管理打印机的命令。

通过lpadmin命令,我们可以添加、删除、配置和控制打印机。

例如: lpadmin -p printername -E -v device-uri这条命令将添加一个名为printername的打印机,并将其与设备连接。

2. lpoptions命令:lpoptions命令用于查看和配置打印机的选项。

通过lpoptions命令,我们可以设置打印机的默认设置、纸张大小、打印质量等。

例如:lpoptions -d printername这条命令将将printername设置为默认打印机。

3. lpc命令:lpc命令用于控制和管理打印机的状态。

Linux的进程管理实验报告

Linux的进程管理实验报告

实验报告Linux进程管理实验内容:1,进程运行控制命令2,进程管理命令3,调度进程命令4,信息管理命令姓名:学好:520913080429专业:信息安全09-041,进程运行控制命令[root@localhost ~]# find / -name testing & <==将该执行程序放在后台执行[1] 5673You have new mail in /var/spool/mail/root[root@localhost ~]# fg <=将该程序教会屏幕前执行find / -name testing[1]+ Stopped find / -name testing[root@localhost ~]#[root@localhost /]# vi .bashrc[2]+ Stopped vi .bashrc <=两个进程被丢到后台当中[root@localhost /]#[root@localhost /]# jobs[1]- Stopped find / -name testing (wd: ~)[2]+ Stopped vi .bashrc[root@localhost /]# <=显示有两个工作在后台下,状态为停止[root@localhost /]# find / -name test/usr/lib/ruby/1.8/test/usr/lib/python2.4/email/test/usr/lib/python2.4/test/usr/lib/python2.4/bsddb/test/usr/lib/pgsql/test/usr/bin/test/usr/include/boost/mpl/aux_/test/usr/include/boost/test/usr/share/pear/test/usr/share/doc/db4-devel-4.3.29/ref/test/usr/share/doc/lynx-2.8.5/test/usr/share/doc/ncurses-devel-5.5/test[3]+ Stopped find / -name test[root@localhost /]#[root@localhost /]# vi .bashrc[4]+ Stopped vi .bashrc[root@localhost /]#[root@localhost /]# jobs[1] Stopped find / -name testing (wd: ~)[2] Stopped vi .bashrc[3]- Stopped find / -name test[4]+ Stopped vi .bashrc[root@localhost /]#[root@localhost /]# bg %1[1] find / -name testing & (wd: ~)[root@localhost /]# /usr/share/doc/kernel-doc-2.6.18/Documentation/ABI/testing [root@localhost /]#[root@localhost /]# jobs[1] Running find / -name testing & (wd: ~)[2] Stopped vi .bashrc[3]- Stopped find / -name test[4]+ Stopped vi .bashrc[root@localhost /]# /work/mini2440/linux-2.6.32.2-mini2440/Documentation/ABI/testing[root@localhost /]#[root@localhost /]# bg %2[2] vi .bashrc &[root@localhost /]# jobs[1] Running find / -name testing & (wd: ~)[2]+ Stopped vi .bashrc[3] Stopped find / -name test[4]- Stopped vi .bashrc2,进程管理命令[root@localhost ~]# ps -auxWarning: bad syntax, perhaps a bogus '-'? See /usr/share/doc/procps-3.2.7/FAQUSER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDroot 1 0.0 0.0 2044 636 ? Ss 12:05 0:01 init [5]root 2 0.0 0.0 0 0 ? S 12:05 0:00 [migration/0]root 3 0.0 0.0 0 0 ? SN 12:05 0:00 [ksoftirqd/0]root 4 0.0 0.0 0 0 ? S 12:05 0:00 [watchdog/0]root 5 0.0 0.0 0 0 ? S< 12:05 0:00 [events/0]root 6 0.0 0.0 0 0 ? S< 12:05 0:00 [khelper]root 7 0.0 0.0 0 0 ? S< 12:05 0:00 [kthread]root 9 0.0 0.0 0 0 ? S< 12:05 0:00 [xenwatch]root 10 0.0 0.0 0 0 ? S< 12:05 0:00 [xenbus]root 12 0.0 0.0 0 0 ? S< 12:05 0:00 [kblockd/0]root 13 0.0 0.0 0 0 ? S< 12:05 0:00 [kacpid]root 177 0.0 0.0 0 0 ? S< 12:05 0:00 [cqueue/0]root 181 0.0 0.0 0 0 ? S< 12:05 0:00 [khubd]root 183 0.0 0.0 0 0 ? S< 12:05 0:00 [kseriod]root 238 0.0 0.0 0 0 ? S 12:05 0:00 [pdflush]root 239 0.0 0.0 0 0 ? S 12:05 0:00 [pdflush]root 240 0.0 0.0 0 0 ? S< 12:05 0:00 [kswapd0]root 241 0.0 0.0 0 0 ? S< 12:05 0:00 [aio/0]root 445 0.0 0.0 0 0 ? S< 12:05 0:00 [kpsmoused]root 475 0.0 0.0 0 0 ? S< 12:05 0:00 [scsi_eh_0]root 480 0.0 0.0 0 0 ? S< 12:05 0:00 [kmirrord]root 485 0.0 0.0 0 0 ? S< 12:05 0:00 [ksnapd]root 488 0.0 0.0 0 0 ? S< 12:06 0:01 [kjournald]root 516 0.0 0.0 0 0 ? S< 12:06 0:00 [kauditd]root 550 0.0 0.0 2388 816 ? S<s 12:06 0:01 /sbin/udevd -droot 1271 0.0 0.0 0 0 ? S< 12:06 0:00 [kgameportd]root 2162 0.0 0.0 0 0 ? S< 12:07 0:00 [kjournald]root 2652 0.0 0.2 5276 2584 ? S 12:07 0:01 /usr/sbin/vmtoolsdroot 2704 0.0 0.2 9840 2088 ? Ss 12:07 0:00 cupsdroot 3164 0.0 0.0 12060 636 ? S<sl 12:08 0:00 auditdroot 3166 0.0 0.3 9504 3712 ? S<s 12:08 0:00 python /sbin/audispdroot 3180 0.0 0.0 1704 584 ? Ss 12:08 0:00 syslogd -m 0root 3183 0.0 0.0 1656 404 ? Ss 12:08 0:00 klogd -xrpc 3216 0.0 0.0 1784 548 ? Ss 12:08 0:00 portmaproot 3245 0.0 0.0 1800 732 ? Ss 12:08 0:00 rpc.statdroot 3278 0.0 0.0 4952 568 ? Ss 12:08 0:00 rpc.idmapddbus 3297 0.0 0.1 2852 964 ? Ss 12:08 0:00 dbus-daemon --systemroot 3308 0.0 0.0 2128 756 ? Ss 12:08 0:00 /usr/sbin/hcidroot 3312 0.0 0.0 1724 496 ? Ss 12:08 0:00 /usr/sbin/sdpdroot 3337 0.0 0.0 0 0 ? S< 12:08 0:00 [krfcommd]root 3376 0.0 0.1 33192 1284 ? Ssl 12:08 0:00 pcscdroot 3395 0.0 0.0 1896 444 ? Ss 12:08 0:00 /usr/bin/hidd --serverroot 3415 0.0 0.1 9344 1108 ? Ssl 12:08 0:00 automountroot 3434 0.0 0.0 1656 524 ? Ss 12:08 0:00 /usr/sbin/acpidroot 3445 0.0 0.0 5088 496 ? Ss 12:08 0:00 ./hpiodroot 3450 0.0 0.4 13172 4548 ? S 12:08 0:00 python ./hpssd.pyroot 3465 0.0 0.0 5184 924 ? Ss 12:08 0:00 /usr/sbin/sshdroot 3477 0.0 0.0 2680 884 ? Ss 12:08 0:00 xinetd -stayalive -pidfile /var/root 3497 0.0 0.1 8500 1804 ? Ss 12:08 0:00 sendmail: accepting connections smmsp 3505 0.0 0.1 7564 1448 ? Ss 12:08 0:00 sendmail: Queue runner@01:00:00 root 3518 0.0 0.0 1876 352 ? Ss 12:08 0:00 gpm -m /dev/input/mice -t exps2 root 3529 0.0 0.1 5476 1112 ? Ss 12:08 0:00 crondxfs 3564 0.0 0.1 3940 1780 ? Ss 12:08 0:00 xfs -droppriv -daemonroot 3575 0.0 0.0 1652 504 ? SNs 12:08 0:00 anacron -sroot 3585 0.0 0.0 2216 436 ? Ss 12:08 0:00 /usr/sbin/atdroot 3624 0.5 1.2 25456 12156 ? S 12:08 0:14 /usr/bin/python /usr/sbin/yum-up avahi 3650 0.0 0.1 2684 1364 ? Ss 12:09 0:01 avahi-daemon: running [localhost avahi 3651 0.0 0.0 2552 316 ? Ss 12:09 0:00 avahi-daemon: chroot helper68 3663 0.1 0.4 6236 4308 ? Ss 12:09 0:03 haldroot 3664 0.0 0.1 3112 964 ? S 12:09 0:00 hald-runner68 3670 0.0 0.0 1980 788 ? S 12:09 0:00 hald-addon-acpi: listening on ac68 3677 0.0 0.0 1976 788 ? S 12:09 0:00 hald-addon-keyboard: listening o root 3688 0.0 0.0 1936 616 ? S 12:09 0:00 hald-addon-storage: polling /dev root 3955 0.0 0.0 2100 932 ? S 12:09 0:00 xenstored --pid-file /var/run/xeroot 3961 0.0 0.0 12152 420 ? Sl 12:09 0:00 xenconsoledroot 3963 0.0 0.4 11844 3940 ? S 12:09 0:00 python /usr/sbin/xend startroot 3964 0.0 0.5 63064 4924 ? Sl 12:09 0:00 python /usr/sbin/xend startroot 3965 0.0 0.0 13496 600 ? Ssl 12:09 0:00 blktapctrlroot 4344 0.0 0.0 2292 708 ? Ss 12:09 0:00 /sbin/dhclient -1 -q -lf /var/liroot 4466 0.0 0.0 1912 336 ? S 12:09 0:00 /usr/sbin/smartd -q neverroot 4478 0.0 0.0 1640 432 tty1 Ss+ 12:09 0:00 /sbin/mingetty tty1root 4480 0.0 0.0 1640 428 tty2 Ss+ 12:09 0:00 /sbin/mingetty tty2root 4481 0.0 0.0 1636 428 tty3 Ss+ 12:09 0:00 /sbin/mingetty tty3root 4482 0.0 0.0 1640 432 tty4 Ss+ 12:09 0:00 /sbin/mingetty tty4root 4483 0.0 0.0 1640 432 tty5 Ss+ 12:09 0:00 /sbin/mingetty tty5root 4509 0.0 0.0 1636 428 tty6 Ss+ 12:09 0:00 /sbin/mingetty tty6root 4510 0.0 0.4 16964 4248 ? Ss 12:09 0:00 /usr/sbin/gdm-binary -nodaemon root 4585 0.0 0.2 15988 2652 ? S 12:09 0:00 /usr/sbin/gdm-binary -nodaemon root 4589 0.0 0.1 16964 1508 ? S 12:09 0:00 /usr/sbin/gdm-binary -nodaemon root 4591 0.3 1.3 19960 12916 tty7 Ss+ 12:09 0:08 /usr/bin/Xorg :0 -br -audit 0 -aroot 4799 0.0 0.6 23060 6000 ? Ss 12:15 0:00 /usr/bin/gnome-sessionroot 4828 0.0 0.0 0 0 ? Z 12:15 0:00 [Xsession] <defunct>root 4861 0.0 0.0 4308 508 ? Ss 12:15 0:00 /usr/bin/ssh-agent /usr/bin/dbus root 4864 0.0 0.0 2756 504 ? S 12:15 0:00 /usr/bin/dbus-launch --exit-with root 4865 0.0 0.0 2720 848 ? Ss 12:15 0:00 /bin/dbus-daemon --fork --print- root 4871 0.0 0.3 7348 3416 ? S 12:15 0:00 /usr/libexec/gconfd-2 5root 4875 0.0 0.0 2552 588 ? S 12:15 0:00 /usr/bin/gnome-keyring-daemon root 4877 0.0 0.8 34028 8044 ? Sl 12:15 0:00 /usr/libexec/gnome-settings-daem root 4894 0.0 1.1 25160 11280 ? Ss 12:15 0:00 /usr/lib/scim-1.0/scim-launcherroot 4907 0.0 1.1 39776 11528 ? Ss 12:15 0:00 metacity --sm-client-id=default1root 4912 0.0 1.4 98520 14212 ? Ss 12:15 0:02 gnome-panel --sm-client-id defau root 4914 0.3 1.8 136400 18176 ? Ss 12:15 0:07 nautilus --no-default-window --sroot 4918 0.0 0.3 38896 2948 ? Ssl 12:15 0:00 /usr/libexec/bonobo-activation-s root 4922 0.0 0.3 11360 3092 ? S 12:15 0:00 /usr/libexec/gnome-vfs-daemon root 4926 0.0 0.8 44884 8096 ? Ss 12:15 0:00 eggcups --sm-client-id default4root 4938 0.3 1.9 77512 18920 ? S 12:15 0:08 /usr/lib/vmware-tools/bin32/vmwa root 4941 0.0 0.0 6452 576 ? Ss 12:15 0:00 /usr/lib/scim-1.0/scim-helper-ma root 4942 0.0 0.6 49540 6596 ? Ssl 12:15 0:00 /usr/lib/scim-1.0/scim-panel-gtk root 4946 0.0 0.5 14584 4996 ? Ss 12:15 0:00 bt-applet --sm-disableroot 4948 0.0 0.0 13548 816 ? Ss 12:15 0:00 /usr/lib/scim-1.0/scim-launcher root 4952 0.1 1.3 25236 13336 ? Ss 12:15 0:04 /usr/bin/python -tt /usr/bin/pup root 4960 0.0 0.1 2536 1196 ? S 12:16 0:00 /usr/libexec/gam_serverroot 4962 0.0 1.3 97264 12776 ? S 12:16 0:00 /usr/libexec/wnck-applet --oaf-a root 4964 0.0 0.9 104952 8800 ? S 12:16 0:00 /usr/libexec/trashapplet --oaf-aroot 4980 0.0 0.2 17280 2212 ? Sl 12:16 0:00 ./escd --key_Inserted="/usr/bin/ root 4983 0.1 0.9 74352 9260 ? Ss 12:16 0:02 nm-applet --sm-disableroot 4985 0.0 0.0 2452 828 ? S 12:16 0:00 /usr/libexec/mapping-daemonroot 4992 0.0 0.4 15396 4608 ? Ss 12:16 0:01 pam-panel-icon --sm-client-id de root 4995 0.0 0.6 74052 6320 ? Ss 12:16 0:00 gnome-power-managerroot 4996 0.0 0.0 1820 620 ? S 12:16 0:00 /sbin/pam_timestamp_check -d roo root 5017 0.0 0.4 16404 4068 ? Ss 12:16 0:00 gnome-screensaverroot 5029 0.6 2.6 64052 25252 ? S 12:16 0:14 /usr/bin/python -E /usr/bin/seal root 5046 0.0 0.6 23148 6532 ? S 12:16 0:01 /usr/libexec/notification-area-a root 5049 0.1 1.3 97332 12944 ? S 12:17 0:02 /usr/libexec/mixer_applet2 --oaf root 5052 0.1 1.2 48824 11612 ? S 12:17 0:02 /usr/libexec/clock-applet --oaf-root 5061 0.0 0.1 12292 1000 ? S 12:17 0:00 scim-bridgeroot 5437 0.0 1.7 131360 17252 ? Sl 12:28 0:00 gnome-terminalroot 5442 0.0 0.0 2452 660 ? S 12:28 0:00 gnome-pty-helperroot 5443 0.0 0.1 5052 1516 pts/1 Ss 12:28 0:00 bashroot 5933 0.0 0.1 5004 1248 pts/1 T 12:44 0:00 vi .bashrcroot 6062 0.0 0.1 4800 1108 pts/1 T 12:48 0:00 find / -name testroot 6159 0.0 0.1 5028 1308 pts/1 T 12:50 0:00 vi .bashrcroot 6271 0.0 0.0 4476 952 pts/1 R+ 12:54 0:00 ps -aux[root@localhost ~]#USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMANDUSER :进程属于那个人的PID :进程号%CPU :使用了多少CPU资源%MEM :使用了多少RAMVSZ RSS :占用的Ram的大小TTY :若为tty1-tty6则为本机用户,STAT :该进程的状态START :该进程开始的日期TIME :该进程运行了多久的时间COMMAND :该进程的内容[root@localhost ~]# toptop - 13:06:05 up 1:00, 1 user, load average: 0.00, 0.01, 0.08Tasks: 123 total, 2 running, 117 sleeping, 3 stopped, 1 zombieCpu(s): 0.7%us, 0.7%sy, 0.0%ni, 98.7%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%stMem: 962500k total, 826544k used, 135956k free, 215324k buffers Swap: 2031608k total, 0k used, 2031608k free, 411772k cachedPID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND4591 root 15 0 38392 12m 5316 S 1.3 1.3 0:09.46 Xorg5437 root 15 0 128m 17m 10m R 0.3 1.8 0:00.75 gnome-terminal1 root 15 0 2044 636 540 S 0.0 0.1 0:01.04 init2 root RT 0 0 0 0 S 0.0 0.0 0:00.00 migration/03 root 34 19 0 0 0 S 0.0 0.0 0:00.00 ksoftirqd/04 root RT 0 0 0 0 S 0.0 0.0 0:00.00 watchdog/05 root 10 -5 0 0 0 S 0.0 0.0 0:00.12 events/06 root 20 -5 0 0 0 S 0.0 0.0 0:00.02 khelper7 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kthread9 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 xenwatch10 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 xenbus12 root 10 -5 0 0 0 S 0.0 0.0 0:00.42 kblockd/013 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 kacpid177 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 cqueue/0181 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 khubd183 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kseriod238 root 23 0 0 0 0 S 0.0 0.0 0:00.00 pdflush239 root 15 0 0 0 0 S 0.0 0.0 0:00.51 pdflush240 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 kswapd0241 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 aio/0445 root 11 -5 0 0 0 S 0.0 0.0 0:00.00 kpsmoused 475 root 18 -5 0 0 0 S 0.0 0.0 0:00.00 scsi_eh_0480 root 19 -5 0 0 0 S 0.0 0.0 0:00.00 kmirrord485 root 20 -5 0 0 0 S 0.0 0.0 0:00.00 ksnapd488 root 10 -5 0 0 0 S 0.0 0.0 0:01.28 kjournald516 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kauditd550 root 17 -4 2388 816 372 S 0.0 0.1 0:01.48 udevd1271 root 17 -5 0 0 0 S 0.0 0.0 0:00.00 kgameportd 2162 root 10 -5 0 0 0 S 0.0 0.0 0:00.00 kjournald 2652 root 15 0 5276 2584 2152 S 0.0 0.3 0:01.59 vmtoolsdYou have new mail in /var/spool/mail/rootTop为动态进程查看cpu使用的情况[root@localhost ~]# sar -u 1 3Linux 2.6.18-8.el5xen (localhost.localdomain) 2011年11月07日13时09分33秒CPU %user %nice %system %iowait %steal %idle13时09分34秒all 1.00 0.00 1.00 0.00 0.00 98.0013时09分35秒all 3.96 0.00 0.00 0.000.00 96.0413时09分36秒all 0.00 0.00 1.00 0.00 0.00 99.00Average: all 1.66 0.00 0.66 0.00 0.00 97.67[root@localhost ~]#查看内存的使用情况[root@localhost ~]# sar -r 1 3Linux 2.6.18-8.el5xen (localhost.localdomain) 2011年11月07日13时10分44秒kbmemfree kbmemused %memused kbbuffers kbcached kbswpfree kbswpused %swpused kbswpcad13时10分45秒134656 827844 86.01 215596 411924 2031608 0 0.00 013时10分46秒134656 827844 86.01 215596 411924 2031608 0 0.00 013时10分47秒134656 827844 86.01 215596 411924 2031608 0 0.00 0Average: 134656 827844 86.01 215596 411924 2031608 0 0.00 0You have new mail in /var/spool/mail/root[root@localhost ~]#关闭进程PID为2652的进程[root@localhost ~]# kill -9 2652[root@localhost ~]#查看系统的内核版本,主机名称,cpu信息[root@localhost ~]# uname -aLinux localhost.localdomain 2.6.18-8.el5xen #1 SMP Fri Jan 26 14:42:21 EST 2007 i686 i686 i386 GNU/LinuxYou have new mail in /var/spool/mail/root[root@localhost ~]#了解cpu的详细信息[root@localhost ~]# more /proc/cpuinfoprocessor : 0vendor_id : GenuineIntelcpu family : 6model : 23model name : Intel(R) Core(TM)2 Duo CPU E7500 @ 2.93GHz stepping : 10cpu MHz : 2925.552cache size : 3072 KBfdiv_bug : nohlt_bug : nof00f_bug : nocoma_bug : nofpu : yesfpu_exception : yescpuid level : 13wp : yesflags : fpu tsc msr pae mce cx8 apic mtrr mca cmov pat pse36 clflush dts acpi mmx fxsrsse sse2 ss nx lm constant_tsc up pni cx16 lahf_lmbogomips : 7338.60[root@localhost ~]#查看进程的优先级[root@localhost ~]# ps -lF S UID PID PPID C PRI NI ADDR SZ WCHAN TTY TIME CMD0 S 0 5443 5437 0 75 0 - 1263 wait pts/1 00:00:00 bash0 T 0 5933 5443 0 75 0 - 1251 finish pts/1 00:00:00 vi0 T 0 6062 5443 0 77 0 - 1200 finish pts/1 00:00:00 find0 T 0 6159 5443 0 78 0 - 1257 finish pts/1 00:00:00 vi4 R 0 7163 5443 0 77 0 - 1107 - pts/1 00:00:00 ps 3,调度进程命令[root@localhost ~]#[root@localhost ~]# at 5pmat> shutdown -h -nowat> You have new mail in /var/spool/mail/root[root@localhost ~]# atq[root@localhost ~]# at 5pm shutdown -h -nowUsage: at [-V] [-q x] [-f file] [-m] timeat [-V] [-q x] [-f file] [-m] -t [[CC]YY]MMDDhhmmat -c job [job...](atq | at -l) [-V] [-q x](atrm | at -d | at -r) [-V] [-q x] job ...batch [-V] [-f file] [-m][root@localhost ~]# at -qat: option requires an argument -- qUsage: at [-V] [-q x] [-f file] [-m] timeat [-V] [-q x] [-f file] [-m] -t [[CC]YY]MMDDhhmmat -c job [job...](atq | at -l) [-V] [-q x](atrm | at -d | at -r) [-V] [-q x] job ...batch [-V] [-f file] [-m][root@localhost ~]#[root@localhost ~]#[root@localhost ~]# crontab –e[root@localhost ~]# at 6pmat> sar -u 1 3at> <EOT>job 1 at 2011-11-10 18:00[root@localhost ~]#[root@localhost ~]# atq1 2011-11-10 18:00 a root 一个任务[root@localhost ~]#0 12 * * *mail test </home/test/test.txt[root@localhost ~]# crontab –r 删除所有[root@localhost ~]#crontab –l[root@localhost ~]# atq[root@localhost ~]# vi /etc/crontab 启动iv编辑器SHELL=/bin/bashPATH=/sbin:/bin:/usr/sbin:/usr/binMAILTO=rootHOME=/# run-parts01 * * * * root run-parts /etc/cron.hourly02 4 * * * root run-parts /etc/cron.daily22 4 * * 0 root run-parts /etc/cron.weekly42 4 1 * * root run-parts /etc/cron.monthly4,信息管理命令[root@localhost ~]# dmesg 显示开机信息[root@localhost ~]#dmesg | more[root@localhost ~]#uptime 查看系统开机时间[root@localhost ~]# uptime08:52:55 up 16 min, 1 user, load average: 0.02, 0.51, 0.55 [root@localhost ~]#whoroot pts/1 2011-11-10 08:49 (:0.0)[root@localhost ~]#[root@localhost ~]# whoamiroot[root@localhost ~]# [root@localhost ~]#last -5。

实验五 Linux进程管理

实验五 Linux进程管理

Linux中的进程1.目的及内容通过对Linux进程操作,了解Linux操作系统中进程等概念。

2.实验环境Red Hat Linux操作系统。

3、背景知识Linux是一个多用户多任务的操作系统。

多用户是指多个用户可以在同一时间使用计算机系统;多任务是指Linux可以同时执行几个任务,它可以在还未执行完一个任务时又执行另一项任务。

Linux把正在运行的程序称为进程。

每当运行一个程序,我们就启动了一个进程。

但进程又与程序不同。

从某种意义上讲,一个进程的含义比一个程序的含义多,因为一个程序只是一个指令集,而一个进程却是动态的,因为它在运行中使用着系统的资源。

由于Linux是多任务系统,许多进程可以同时运行,Linux通过为每个进程分配一个进程标识符(PID)来识别和跟踪进程。

对Linux操作系统的一个用户,可随时启动一个进程,还可以监控自己的进程并查看其它的进程,如果必要,还可以终止你的进程。

下面给出了有关进程的一些基本操作。

⑴找出谁在系统上Linux中,who命令的目的是找到谁已登录到系统中了。

who命令列出目前已登录的用户的登录名、终端线路和登录时间。

[wang@www/wang]$whoroot tty1 Jun 2 10:02wang tty2 Jun 2 10:02⑵报告进程状态Linux中,ps命令报告进程的状态,并可以用它确定哪个进程正在运行、进程是否完成了、进程是否被挂起、进程已运行了多久、进程正在使用的资源、进程的相对优先权等信息。

该命令还能看到所有在系统上运行的进程的详细列表。

Ps命令格式如下:ps [选项]ps列表显示四个默认标题,这些标题是PID,TTY,TIME和COMMAND。

表8.1解释了这些标题。

下面给出了用ps命令报告进程状态的操作。

下列命令显示所有正在执行的进程:[wang@www/wang]$psPID TTY TIME CMD439 tty2 00:00:00 bash559 tty2 00:00:00 ps下列命令将列出当前正在运行的进程的基本信息:[wang@www/wang]$ps xPID TTY START TIME COMMAND439 tty2 S 0:00 -bash561 tty2 R 0:00 ps x下列命令将列出所有用户的进程信息:[wang@www/wang]$ps auUSER PID %CPU %MEM VSZ RSS TTY STA T START TIME COMMAND root 419 0.0 0.8 2032 1140 tty2 S 15:19 0:00 login-wang wang 439 0.0 0.7 1868 1020 tty2 S 15:20 0:00 -bashwang 621 0.0 0.6 2552 880 tty2 R 16:01 0:00 ps⑶结束进程当需要中断一个前台进程的时候,通常是使用<Ctrl+c>组合键;但是对于一个后台进程这个组合键是不能达到目的的。

linux进程管理的实验报告

linux进程管理的实验报告

linux进程管理的实验报告Linux进程管理的实验报告引言:Linux操作系统是一种开源的操作系统,以其稳定性和高度可定制性而受到广泛使用。

在Linux系统中,进程管理是一个重要的组成部分,它负责控制和管理系统中运行的进程。

本实验报告旨在探讨Linux进程管理的相关概念和实践。

一、进程的基本概念进程是指在计算机系统中正在运行的一个程序实例。

每个进程都有自己的内存空间、寄存器和状态。

在Linux系统中,每个进程都有一个唯一的进程标识符(PID),用于标识和管理进程。

二、进程的创建和终止在Linux系统中,进程的创建是通过fork()系统调用来实现的。

fork()系统调用会创建一个新的进程,新进程是原进程的一个副本,包括代码、数据和堆栈等。

新进程和原进程共享相同的代码段,但是拥有独立的数据和堆栈。

进程的终止可以通过exit()系统调用来实现。

当一个进程调用exit()系统调用时,它会释放所有的资源,并通知操作系统该进程已经终止。

此外,父进程可以通过wait()系统调用来等待子进程的终止,并获取子进程的退出状态。

三、进程的调度和优先级在Linux系统中,进程的调度是由调度器负责的。

调度器根据进程的优先级和调度策略来确定下一个要运行的进程。

Linux系统中有多种调度策略,如先来先服务(FCFS)、最短作业优先(SJF)、轮转调度(Round Robin)等。

进程的优先级用一个数字表示,范围从-20到19,其中-20表示最高优先级,19表示最低优先级。

较高优先级的进程会被优先调度,以保证其能够及时响应用户的请求。

四、进程的状态转换在Linux系统中,进程可以处于不同的状态,如运行态、就绪态和阻塞态等。

进程的状态转换是由操作系统根据进程的行为和外部事件来控制的。

当一个进程被创建时,它处于就绪态,等待被调度执行。

当进程获得CPU资源并开始执行时,它进入运行态。

当进程需要等待某个事件发生时,如等待用户输入或等待某个文件读写完成,它会进入阻塞态。

Linux实验五 Linux进程管理

Linux实验五  Linux进程管理

实验五Linux进程管理一、实验目的1.掌握Linux进程管理。

2.学习并掌握进程查看命令、进程终止命令。

3.使用at和cron服务实现Linux进程调度。

二、实验环境安装了Red Hat Linux9.0系统的计算机一台三、实验过程(实验步骤、记录、数据、分析、结果)(一)进程查看、终止、挂起及暂停等操作1、使用ps命令查看和控制进程1)显示本用户进程#ps分析:显示进程:shell和ps2)显示所有用户的进程#ps –au分析:显示共有8个进程3)在后台运行cat命令#cat&分析:PID为27244)查看进程cat#ps aux |grep cat5)杀死进程cat#kill -9 cat6)再次查看进程cat,看看是否被杀死。

分析:结果显示已经杀死cat2、使用top命令查看和控制进程1)用top命令动态显示当前的进程。

分析:显示当前的进程2)只显示某一用户的进程(u)分析:pm进程的PID为123)杀死指定进程号的进程(k)3、挂起和恢复进程1)执行命令cat分析:重新执行cat命令,PID号变成28852)按【ctrl+z】挂起进程3)输入jobs命令,查看作业分析:按【ctrl+z】挂起进程后,用jobs命令查看作业,cat被挂起。

4)输入bg,把cat切换到后台执行5)输入fg,把cat切换到前台执行6)按【ctrl+c】结束进程(二)通过at命令实现计划任务1、5分钟后执行/bin/date#at now+5minutesat>/bin/dateat><EOT>(提示:输入【ctrl+d】job任务号at 年-月-日小时:分钟如何查看结果?2、查找系统中任何以c为后缀名的文档,将结果保存到$HOME/findc文件中,指定时间为2016年12月01日早上8点#at 8am 12/01/16at>find / -name ‘*.c’ >$HOME/findcat><EOT>job任务号at 年-月-日小时:分钟如何查看结果?分析:指定时间必须要在当前时间之后,将12月1日16点改为12月28日16点3、2题的命令写到$HOME/findjob中,使用at命令执行,并将结果保存到$HOME/findfc文件中,指定时间为当前时间后5分钟#vi $HOME/findjob内容如下:find / -name ‘*.c’ >$HOME/findfc存盘退出#at –f $HOME/findjob now+5minutes4、at命令实现在30天后统计/etc/inittab文件的行数,将统计结果发送至$HOME/initline文件中#at now+3daysat>wc –l /etc/inittab>>$HOME/initlineat><EOT>5、列出现有的所有at任务,并记下相关信息分析:5分钟已过去,第一个at计划已经执行,上面3个计划等待执行。

管理linux系统实验报告

管理linux系统实验报告

管理linux系统实验报告实验背景Linux 是一种以Unix 为基础设计的开源操作系统,广泛应用于服务器领域和嵌入式系统中。

作为一个管理员,熟悉并掌握Linux 系统的管理能力是十分重要的。

本次实验旨在加深理解Linux 的基本管理技能,并通过实践加以应用。

实验内容本次实验包括以下几个部分:1. 用户管理2. 文件权限管理3. 进程管理4. 磁盘管理5. 系统日志管理实验步骤1. 用户管理通过命令行创建一个新用户,并设置密码。

其中,新用户需要有管理员权限(sudo)。

bashsudo adduser <用户名>sudo passwd <用户名>sudo usermod -aG sudo <用户名>2. 文件权限管理创建一个新的文件夹,并设置不同的权限给不同的用户组:bashmkdir test_directorychown <用户名>:<用户组> test_directorychmod 750 test_directory3. 进程管理查看当前正在运行的进程列表,并进行进程的查找、结束操作:bashps auxkill <PID>4. 磁盘管理查看系统的磁盘使用情况,并对硬盘进行挂载和卸载操作:bashdf -hsudo mount /dev/<设备名> /mntsudo umount /mnt5. 系统日志管理查看系统日志,并分析其中的信息:bashtail /var/log/syslog实验总结通过本次实验,我学习到了Linux 系统的基本管理技能。

用户管理、文件权限管理、进程管理、磁盘管理和系统日志管理是运维人员必须掌握的基本技能。

合理设置用户权限、熟练运用命令行工具、了解硬盘的使用情况以及分析系统日志,都有助于提高系统的安全性和稳定性。

在实验过程中,我发现通过多次实践才能真正熟练掌握这些技能。

同时,还需要时常查阅相关的文档和资料,以便了解更多命令和技巧。

Linux终端命令中的打印和打印队列管理

Linux终端命令中的打印和打印队列管理

Linux终端命令中的打印和打印队列管理Linux操作系统作为世界上最为广泛使用的开源操作系统之一,拥有强大的终端命令行工具,其中包含了许多用于打印和打印队列管理的命令。

本文将介绍Linux终端中与打印相关的常用命令,包括打印文件、查看和管理打印队列等等。

一、打印文件在Linux终端中,可以使用lp命令来打印文件。

lp命令的基本语法如下:```lp [选项] 文件名```其中,选项可以用于指定打印机、打印份数、打印模式等参数。

例如,要打印一个名为doc.txt的文件,可以使用如下命令:```lp doc.txt```如果要指定打印机或其他选项,可以使用对应的参数。

例如,指定打印份数为3份,使用名为printer的打印机打印文件doc.txt,可以使用如下命令:```lp -d printer -n 3 doc.txt```另外,使用lpr命令也可以实现文件的打印功能。

lpr命令类似于lp 命令,但是语法略有不同。

例如,要打印文件doc.txt,可以使用如下命令:```lpr doc.txt```需要注意的是,使用lp或lpr命令打印文件时,需要系统中已经配置好相应的打印机驱动和服务。

二、查看打印队列在Linux终端中,可以使用lpq命令来查看打印队列的状态。

lpq命令的基本语法如下:```lpq [选项]```其中,选项可以用于指定显示哪些打印队列的信息。

例如,要查看所有打印队列的状态,可以使用如下命令:```lpq```如果只想查看特定打印队列的状态,可以使用-d参数指定打印机名。

例如,要查看名为printer的打印队列状态,可以使用如下命令:```lpq -d printer```lpq命令会显示打印队列中等待打印的文件列表,以及每个文件的编号、文件名、打印状态等信息。

除了lpq命令,还可以使用lpstat命令来查看打印机和打印队列的信息。

lpstat命令的基本语法如下:```lpstat [选项]```其中,选项可以用于指定显示哪些信息,例如要展示所有打印机的状态,可以使用如下命令:```lpstat -p```三、管理打印队列在Linux终端中,除了查看打印队列的状态,还可以对打印队列进行管理,如暂停、恢复、取消打印任务等操作。

linux进程管理实验心得

linux进程管理实验心得

linux进程管理实验心得在操作系统课程中,我们进行了一系列关于Linux进程管理的实验。

通过这些实验,我对Linux进程管理有了更深入的理解,并且学到了很多有关进程管理的知识和技巧。

在这篇文章中,我将分享我的实验心得和体会。

首先,我学会了如何创建和终止进程。

在实验中,我们使用了fork()函数来创建子进程,并使用exec()函数来加载新的程序。

这样,我们可以在一个进程中创建多个子进程,并且每个子进程可以执行不同的任务。

而通过调用exit()函数,我们可以终止一个进程的执行。

这些操作让我更加清楚地了解了进程的创建和终止过程。

其次,我学会了如何管理进程的优先级。

在Linux中,每个进程都有一个优先级,用于决定进程在CPU上执行的顺序。

通过使用nice命令,我们可以为进程设置不同的优先级。

较高的优先级意味着进程将更频繁地获得CPU时间片,从而提高了进程的执行效率。

这对于提高系统的整体性能非常重要。

此外,我还学会了如何监控和调试进程。

在实验中,我们使用了ps命令来查看当前系统中正在运行的进程。

通过查看进程的状态和资源使用情况,我们可以了解到系统的运行状况。

而使用top命令,则可以实时地监控进程的运行情况。

此外,我们还学会了使用gdb调试器来调试进程。

通过设置断点和观察变量的值,我们可以找到程序中的错误并进行修复。

最后,我认识到进程管理是操作系统中非常重要的一部分。

一个好的进程管理系统可以提高系统的性能和稳定性。

通过合理地管理进程的创建、终止和调度,可以使系统更加高效地利用资源,并且能够更好地响应用户的需求。

因此,学习和掌握进程管理技术对于成为一名优秀的系统管理员或开发人员来说是非常重要的。

通过这些实验,我不仅学到了很多关于Linux进程管理的知识,还提高了自己的实践能力和问题解决能力。

在实验过程中,我遇到了各种各样的问题,但通过查阅资料、与同学讨论和不断尝试,我最终成功地解决了这些问题。

这让我更加自信地面对未来的挑战。

进程管理_实验报告

进程管理_实验报告

一、实验目的1. 理解Linux操作系统中进程的概念,明确进程与程序的区别。

2. 掌握Linux下进程的创建、调度、同步与通信等基本操作。

3. 学会使用Linux命令查看和管理进程。

二、实验环境1. 操作系统:Linux2. 编程语言:C/C++3. 开发工具:gcc、gdb三、实验内容1. 进程创建与调度2. 进程同步与互斥3. 进程通信4. 进程控制四、实验步骤1. 进程创建与调度(1)编写一个C程序,创建一个子进程,并在父进程中打印出子进程的进程标识符(PID)。

```c#include <stdio.h>#include <unistd.h>#include <sys/types.h>int main() {pid_t pid;pid = fork(); // 创建子进程if (pid == 0) { // 子进程printf("子进程的PID:%d\n", getpid());} else if (pid > 0) { // 父进程printf("父进程的PID:%d,子进程的PID:%d\n", getpid(), pid); } else {printf("创建子进程失败\n");}return 0;}```(2)编译并运行程序,观察结果。

2. 进程同步与互斥(1)编写一个C程序,使用互斥锁(mutex)实现两个进程的同步。

```c#include <stdio.h>#include <stdlib.h>#include <pthread.h>pthread_mutex_t mutex;void thread_func(void arg) {pthread_mutex_lock(&mutex); // 获取互斥锁printf("线程 %ld 获取了互斥锁\n", pthread_self());sleep(1);pthread_mutex_unlock(&mutex); // 释放互斥锁return NULL;}int main() {pthread_t thread1, thread2;pthread_mutex_init(&mutex, NULL); // 初始化互斥锁pthread_create(&thread1, NULL, thread_func, (void )1);pthread_create(&thread2, NULL, thread_func, (void )2);pthread_join(thread1, NULL);pthread_join(thread2, NULL);pthread_mutex_destroy(&mutex); // 销毁互斥锁return 0;}```(2)编译并运行程序,观察结果。

实验5:进程管理及操作

实验5:进程管理及操作

实验5:进程管理及操作实验5进程管理及操作实验目的1.了解进程号,进程组号,会话号。

2.清楚进程两个生成子进程函数之间的差别实验内容a)修改程序getpgid_example.c,使结果没有父进程为1的情况。

并说明原因b)有3个进程,其中一个为父进程,其余为父进程的子进程,分别打印这三个进程的进程号,父进程号,进程组号。

c)有3个进程,其中一个为父进程,其余为父进程的子进程,其中一个子进程运行"ls-l"指令,另一个子进程在暂停5s后异常退出,父进程不阻塞自己,并等待子进程的退出信息,待收到该信息,父进程返回。

d)请修改提供的源码,实现简单的myshell,实验结果实验总结#include#include#include#include#include#include#define normal 0 /*一般的命令*/#define out_redirect 1 /*输出重定向*/#define in_redirect 2 /*输入重定向*/#define have_pipe 3 /*命令中有管道*/void print_prompt(); /*打印提示符*/void get_input(char *); /*得到输入的命令*/void explain_input(char *,int *,char a[100][256]); /*对输入命令进行解析*/ void do_cmd(int ,char a[100][256]); /*执行命令*/ int find_command(char *); /*查找命令中的可执行程序*/int main(int argc,char **argv){int i;int argcount = 0;char arglist[100][256];char **arg = NULL;char *buf = NULL;buf = (char *)malloc(256);if (buf == NULL){perror("malloc failed");exit(-1);}while(1){/*将buf所指向的空间清零*/memset(buf,0,256);print_prompt();get_input(buf);/*若输入的命令为exit或logout则退出本程序*/if (strcmp(buf,"exit\n") == 0 || strcmp(buf,"logout\n") == 0) break;for (i=0;i<100;i++){arglist[i][0] = '\0';}argcount = 0;explain_input(buf,&argcount,arglist);do_cmd(argcount,arglist);}/*将buf所指向的内存释放*/if (buf != NULL){free(buf);buf = NULL;}exit(0);}void print_prompt(){printf("myshell$$");}/*获取用户输入*/void get_input(char *buf){int len = 0;int ch;ch = getchar();while (len <256 && ch != '\n'){buf[len++] = ch;ch = getchar();}if (len ==256){printf("commond is too long \n"); exit(-1); /*输入的命令过长则退出程序*/ }buf[len] = '\n';len++;buf[len] = '\0';}/*解析buf中的命令,将结果存入arglist中,命令以回车符号\n 结束*//*如输入命令为“ls -l /tmp”,则arglist[0],arglist[1],arglist[2]分别为ls,-l和/t mp*/void explain_input(char *buf,int *argcount,char arglist[100][256]) {char *p = buf;char *q = buf;int number = 0;while(1){if (p[0] == '\n')break;if (p[0] == ' ')p++;else {q = p;number = 0;while ((q[0] != ' ') && (q[0] != '\n')){number++;q++;}//strncpy(arglist[*argcount],p,number+1);arglist[*argcount][number] = '\0';*argcount = *argcount + 1;p = q;}}}void do_cmd (int argcount,char arglist[100][256]){int flag = 0;int how = 0; /*用于指示命令中是否含有>,<,|*/int background = 0; /*标识命令中是否有后台运行标识符*/ int status;int i;int fd;char *arg[argcount+1];char *argnext[argcount+1];char *file;pid_t pid;/*将命令取出*/for (i=0;i<argcount;i++){< p="">arg[i] = (char *)arglist[i];}arg[argcount] = NULL;/*查看命令行是否有后台运行符*/for (i=0;i<argcount;i++){< p="">if (strncmp(arg[i],"&",1) == 0){if (i == argcount - 1){background = 1;arg[argcount-1] = NULL;break;}else {printf("wrong command\n");return;}}}for (i=0;arg[i] != NULL;i++){ if (strcmp(arg[i],">") == 0){flag++;how = out_redirect;if (arg[i+1] == NULL)flag++;}if (strcmp(arg[i],"<") == 0){flag++;how = in_redirect;if (i == 0)flag++;}if (strcmp(arg[i],"|") == 0){flag++;how = have_pipe;if (arg[i+1] == NULL)flag++;if (i == 0)flag++;}}/*flag大于1,说明命令中含有多个>,<,|符号,本程序是不支持这样的命令的,或者命令格式不对,如“ls -l /tmp >”*/ if (flag > 1){printf("wrong command\n");return;}if (how == out_redirect){/*命令只含有一个输出重定向符号>*/ for (i=0;arg[i] != NULL;i++){if (strcmp(arg[i],">") == 0){file = arg[i+1];arg[i] = NULL;}}}if (how == in_redirect){/*命令只含有一个输入重定向符号<*/ for (i=0;arg[i] != NULL;i++){if (strcmp(arg[i],"<") == 0){file = arg[i+1];arg[i] = NULL;}}}if (how == have_pipe){/*命令只含有一个管道符号|*//*把管道符号后面的部分存入argnext中,管道后面的部分是一个可执行的Shell命令*/ for (i=0;arg[i] != NULL;i++){if (strcmp(arg[i],"|") == 0){arg[i] = NULL;int j;for (j=i+1;arg[j] != NULL;j++){argnext[j-i-1] =arg[j];}argnext[j-i-1] = arg[j];break;}}}if ((pid = fork()) < 0) {printf("fork error\n");return;}switch(how) {case 0:/*pid为0说明是子进程,在子进程中执行输入的命令*/ /*输入的命令中不含>,<和|*/if (pid == 0){if (!(find_command(arg[0]))){printf("%s:command not found\n",arg[0]);exit(0);}execvp(arg[0],arg);exit(0);}break;case 1:if (pid == 0){if (!(find_command(arg[0]))){printf("%s:command not found\n",arg[0]);exit(0);}fd = open(file,O_RDWR|O_CREAT|O_TRUNC,0644); execvp(arg[0],arg);exit(0);}break;case 2:/*输入的命令中含有重定向符<*/if (pid == 0){if (!(find_command(arg[0]))){printf("%s:command not found\n",arg[0]);exit(0);}dup2(fd,0);execvp(arg[0],arg);exit(0);}break;case 3:/*输入的命令中含有管道*/if (pid == 0){int pid2;int status2;int fd2;if ((pid2 = fork()) < 0){printf("fork2 error\n");return;}else if (pid2 == 0){if (!(find_command(arg[0]))){printf("%s:command not found\n",arg[0]);exit(0);}fd2 = open("/tmp/youdonotknowfile",O_WRONLY|O_CREAT|O_TRUNC ,0644); dup2(fd2,1);execvp(arg[0],arg);exit(0);}if (waitpid(pid2,&status2,0) == -1)printf("wait for child process error\n");if (!(find_command(argnext[0]))){printf("%s:command not found\n",argnext[0]);exit(0);}fd2 = open("/tmp/youdonotknowfile",O_RDONLY);dup2(fd2,0);execvp(argnext[0],argnext);if (remove("/tmp/youdonotknowfile"))printf("remove error\n");exit(0);}break;default:break;}/*若命令中有&,表示后台执行,父进程直接返回,不等待子进程结束*/if (background == 1){printf("[process id %d]\n",pid);return;}/*父进程等待子进程结束*/if (waitpid(pid,&status,0) == -1)printf("wait for child process error\n");}int find_command(char *command){DIR *dp;struct dirent *dirp;char *path[] = {"./","/bin","/usr/bin",NULL};/*使当前目录下的程序可以运行,如命令"./fork"可以被正确解释和执行*/ if (strncmp(command,"./",2) == 0)command = command + 2;/*分别在当前目录、/bin和/usr/bin目录查找要执行的程序*/ int i = 0;while (path[i] != NULL){if ((dp = opendir(path[i])) == NULL)printf("can not open /bin \n");while((dirp = readdir(dp))!= NULL){if (strcmp(dirp->d_name,command) == 0){closedir(dp);return 1;}}closedir(dp);i++;}return 0;}</argcount;i++){<></argcount;i++){<>。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

实验五Linux进程管理和打印管理
一. 实验目的:
1.进行系统进程管理。

2.配置Linux下的打印服务器,实现局域网内的Linux和Windows客户端共享使用服务器的打印机。

二. 实验内容:
1.进程状态查看;
2.控制系统中运行的进程;
3.安排一次性和周期性自动执行的后台进程;
4.配置Linux打印服务器;
5.配置Linux客户端;
6.配置Windows客户端。

三. 实验练习:
任务一进程管理
实验内容:
查看系统中的进程;控制系统中的进程;安排计划任务。

实验步骤:
1. 使用ps命令查看和控制进程
显示本用户的进程:#ps。

显示所有用户的进程:#ps -au。

在后台运行cat命令:#cat &。

查看进程cat :# ps aux |grep cat。

杀死进程cat:#kill –9 cat。

再次查看查看进程cat,看看是否被杀死。

2. 使用top命令查看和控制进程
用top命令动态显示当前的进程。

只显示用户user01的进程(利用u键)。

利用k键,杀死指定进程号的进程。

3. 挂起和恢复进程
执行命令cat。

按Ctrl+z键,挂起进程cat。

输入jobs命令,查看作业。

输入bg,把cat切换到后台执行。

输入fg,把cat切换到前台执行。

按Ctrl+c键,结束进程cat。

4. 安排计划任务
查看crontab命令的帮助信息:#crontab -help。

查看用户的计划任务列表:#crontab –l。

生成一个crontab的脚本文件:#echo “* /10 * * * 1” /root/bin/backup” >cronfile。

按照生成的脚本安排计划任务:#crontab cronfile。

查看计划任务表,看看计划任务是否已被安排:#crontab –l。

删除计划任务列表,并进行确认。

任务二打印管理
实验要求:
在一台Linux服务器上配置好本地打印机,并设置相应的访问权限,使本局域网中的Linux和Windows系统的客户主机能够共享使用此打印机。

实验内容:
用菜单界面的配置工具printconf-tui配置Linux本地打印机;设置Linux客户端的打印权限;设置Windows 客户端的打印权限。

实验步骤:
1.<![endif]>设置Linux本地打印机
把打印机和计算机连接好;启动系统,进入字符界面;
输入printconf-tui命令,进入打印机配置界面,选择new,按回车添加打印机;
在添加打印机的过程中通过tab键和next键加以选择,本别配置打印机名称,选择要配置
的打印机,若为第一台在打印设备为/dev/lp0,选择打印机的驱动程序等,配置完成按tab键选择finish,完成。

选择刚配置好的打印机,准备测试打印机,然后按回车键继续;
首先提示用户是否保存刚才所作的设置,如果不保存将无法打印测试页,所以选择保存,然
后按回车键继续;
选择要打印的测试页的类型,然后用tab键选择打印机名称,按回车键开始打印。

2.设置Linux客户端的打印权限
编辑/etc/lpd.perms文件,在其中加入如下行:
REJECT SERVICE=P,R NOT REMOTEHOST=192.168.XX.XX/255.255.255.0
ACCEPT SERVICE=M SAMEHOST SAMEUSER
REJECT SERVICE=M
DEFAULT=ACCEPT
应用设置#lpc reread。

3.设置Windows客户端的打印权限
启动X-Window,进入图形工作界面;
启动Samba设置工具Swat,单击printers,进入打印机界面配置。

4.配置Linux客户端
在终端下输入命令printconf-gui,启动打印机配置工具;
在打印机配置界面中单击“新建”按钮,单击“下一步”继续;
在队列名称一栏中填入本地打印机名称,如lp0。

在队列类型中选择Unix打印机,也就是网
络打印机,然后单击“下一步”继续;
在服务器一栏中填入打印服务器的IP地址,在队列原一栏中填入服务器上的打印队列名称,
在前面设置的是lp0,因此,此处也填入lp0, 然后单击“下一步”继续;
此时会显示用户刚才所作的设置,核对无误后,单击“结束”;
可以打印测试页,以验证添加的是否正确。

5.配置Windows客户端
在Windows操作系统中,通过“开始”―――“设置”―――“打印机”,打开打印机对话框,双击添加打印机图标,添加一个网络打印机,其打印机服务器的IP地址为上述对应的Linux服务器的IP地址,其余的都与Windows 2000 操作系统相同,不再赘述。

四. 思考题:
1.如何设置一个Linux打印服务器只允许某用户或某组使用?
2.为何要单独设置服务器对Linux系统和Windows系统的客户端开放的打印权限?。

相关文档
最新文档