Linux进程和计划任务管理实验报告

合集下载

进程管理实验实验报告

进程管理实验实验报告

一、实验目的1. 理解进程的基本概念,掌握进程的结构和生命周期。

2. 掌握进程的创建、终止、同步和通信的方法。

3. 熟悉进程调度算法和进程同步机制。

4. 通过实验加深对操作系统进程管理的理解。

二、实验环境1. 操作系统:Linux2. 编程语言:C/C++3. 实验工具:gcc、make、xterm三、实验内容1. 进程的创建与终止(1)使用fork()系统调用创建进程编写一个C程序,通过fork()系统调用创建一个子进程。

父进程和子进程分别执行不同的任务,并输出各自的信息。

```c#include <stdio.h>#include <sys/types.h>#include <unistd.h>int main() {pid_t pid;pid = fork();if (pid == -1) {printf("Fork failed!\n");return 1;printf("This is child process, PID: %d\n", getpid()); // 子进程执行的任务} else {printf("This is parent process, PID: %d\n", getpid()); // 父进程执行的任务}return 0;}```(2)使用exec()系统调用替换子进程内容在父进程中,使用exec()系统调用替换子进程的内容,执行新的程序。

```c#include <stdio.h>#include <sys/types.h>#include <sys/wait.h>#include <unistd.h>int main() {pid_t pid;pid = fork();if (pid == -1) {printf("Fork failed!\n");return 1;execlp("ls", "ls", "-l", (char )NULL);printf("Exec failed!\n");return 1;} else {wait(NULL);}return 0;}```2. 进程同步与通信(1)使用管道实现进程通信编写一个C程序,使用管道实现父进程和子进程之间的通信。

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(”Fath er is running!\n”);}return 0;}运行结果:Child1 is running!Child2 is running!Father is running!分析:本实验和上一个实验一样,只是将每个进程输出一个字符改为每个进程输出一句话.第一个while里调用fork()函数一次,返回两次。

实验五linux进程管理

实验五linux进程管理

实验五L i n u x进程管理(总5页)本页仅作为文档封面,使用时可以删除This document is for reference only-rar21year.March实验五 Linux进程管理一.实验目的:1.进行系统进程管理。

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

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

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

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

注:ps命令包括较丰富的可选参数,常见的可选参数包括如下几个。

-A:显示所有用户启动的进程。

-a:显示所有其他用户的进程。

-u::显示进程拥有者、进程启动时间等更详细的信息。

-x:显示不是终端提供的进程信息。

-r:只显示正在运行的进程。

-m:显示线程信息。

-w:宽行显示进程信息。

-l:用长格式显示进程信息。

-t::只显示由终端/dev/tty提交的信息。

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

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

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

top参数:-b 以批量模式运行,但不能接受命令行输入;-c 显示命令行,而不仅仅是命令名;-d N 显示两次刷新时间的间隔,比如 -d 5,表示两次刷新间隔为5秒;-i 禁止显示空闲进程或僵尸进程;-n NUM 显示更新次数,然后退出。

比如 -n 5,表示top更新5次数据就退出;-p PID 仅监视指定进程的ID;PID是一个数值;-q 不经任何延时就刷新;-s 安全模式运行,禁用一些效互指令;-S 累积模式,输出每个进程的总的CPU时间,包括已死的子进程;交互式命令键位:space 立即更新;c 切换到命令名显示,或显示整个命令(包括参数);f,F 增加显示字段,或删除显示字段;h, 显示有关安全模式及累积模式的帮助信息;k 提示输入要杀死的进程ID,目的是用来杀死该进程(默人信号为15)i 禁止空闲进程和僵尸进程;l 切换到显法负载平均值和正常运行的时间等信息;m 切换到内存信息,并以内存占用大小排序;n 提示显示的进程数,比如输入3,就在整屏上显示3个进程;o,O 改变显示字段的顺序;r 把renice 应用到一个进程,提示输入PID和renice的值;s 改变两次刷新时间间隔,以秒为单位;t 切换到显示进程和CPU状态的信息;A 按进程生命大小进行排序,最新进程显示在最前;M 按内存占用大小排序,由大到小;N 以进程ID大小排序,由大到小;P 按CPU占用情况排序,由大到小S 切换到累积时间模式;T 按时间/累积时间对任务排序;W 把当前的配置写到~/.toprc中;3.挂起和恢复进程执行命令cat。

进程管理实验报告_共10篇 .doc

进程管理实验报告_共10篇 .doc

★进程管理实验报告_共10篇范文一:_进程管理实验报告进程管理实验报告一、进程与线程1.实验目的:1.通过本实验学习Linux中创建进程的方法。

2.学习系统调用fork的使用方法。

3.学习系统调用exec族调用的使用方法。

2.实验准备1.进程的创建创建一个进程的系统调用很简单,只要调用fork函数就可以了。

#includepid_tfork();当一个进程调用了fork以后,系统会创建一个子进程,这个子进程和父进程是不同的地方只有它的进程ID和父进程ID,其他的都一样,就像父进程克隆(clone)自己一样,当然创建两个一模一样的进程是没有意义的,为了区分父进程和子进程,我们必须跟踪fork调用返回值。

当fork调用失败的时候(内存不足或者是用户的最大进程数已到)fork返回—1,否则fork的返回值有重要的作用。

对于父进程fork返回子进程ID,而对于fork 子进程返回0,我们就是根据这个返回值来区分父子进程的。

2.关于fork的说明使用该函数时,该函数被调用一次,但返回两次,两次返回的区别是子进程的返回值是0,而父进程的返回值则是新子进程的进程ID。

将子进程ID返回给父进程的理由是:因为一个进程的子进程可以多于一个,所以没有一个函数可以是一个子进程获得其所有子进程的进程ID。

而fork函数使子进程得到的返回值是0的理由是:一个子进程只会有一个父进程,所以子进程总是可以调用函数getpid获得其父进程的进程ID。

3.系统调用exec族调用的说明父进程创建子进程后,子进程一般要执行不同的程序。

为了调用系统程序,我们可以使用系统调用exec族调用。

Exec族调用有以下五个函数:intexecl(constchar*path,constchar*arg,?);intexeclp(constchar*file,constchar*arg,?);intexecle(constchar*path,constchar*arg,?);intexecv(constchar*path,constchar*argv[]);intexecvp(constchar*file,constchar*argv[]);exec族调用可以执行给定程序。

进程管理实验报告分析(3篇)

进程管理实验报告分析(3篇)

第1篇一、实验背景进程管理是操作系统中的一个重要组成部分,它负责管理计算机系统中所有进程的创建、调度、同步、通信和终止等操作。

为了加深对进程管理的理解,我们进行了一系列实验,以下是对实验的分析和总结。

二、实验目的1. 加深对进程概念的理解,明确进程和程序的区别。

2. 进一步认识并发执行的实质。

3. 分析进程争用资源的现象,学习解决进程互斥的方法。

4. 了解Linux系统中进程通信的基本原理。

三、实验内容1. 使用系统调用fork()创建两个子进程,父进程和子进程分别显示不同的字符。

2. 修改程序,使每个进程循环显示一句话。

3. 使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号,实现进程的终止。

4. 分析利用软中断通信实现进程同步的机理。

四、实验结果与分析1. 实验一:父进程和子进程分别显示不同的字符在实验一中,我们使用fork()创建了一个父进程和两个子进程。

在父进程中,我们打印了字符'a',而在两个子进程中,我们分别打印了字符'b'和字符'c'。

实验结果显示,父进程和子进程的打印顺序是不确定的,这是因为进程的并发执行。

2. 实验二:每个进程循环显示一句话在实验二中,我们修改了程序,使每个进程循环显示一句话。

实验结果显示,父进程和子进程的打印顺序仍然是随机的。

这是因为并发执行的进程可能会同时占用CPU,导致打印顺序的不确定性。

3. 实验三:使用signal()捕捉键盘中断信号,并通过kill()向子进程发送信号在实验三中,我们使用signal()捕捉键盘中断信号(按c键),然后通过kill()向两个子进程发送信号,实现进程的终止。

实验结果显示,当按下c键时,两个子进程被终止,而父进程继续执行。

这表明signal()和kill()在进程控制方面具有重要作用。

4. 实验四:分析利用软中断通信实现进程同步的机理在实验四中,我们分析了利用软中断通信实现进程同步的机理。

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程序文件,观察控制台输出结果。

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

实验报告5Linux进程管理

实验报告5Linux进程管理

实验报告5Linux进程管理实验五 Linux进程管理四、实验过程(实验步骤、记录、数据、分析、结果)(⼀)进程查看、终⽌、挂起及暂停等操作1、使⽤ps命令查看和控制进程1)显⽰本⽤户进程#ps2)显⽰所有⽤户的进程#ps–au3)在后台运⾏cat命令#cat&4)查看进程cat#ps aux |grep cat5)杀死进程cat#kill -9 cat6)再次查看进程cat,看看是否被杀死。

2、使⽤top命令查看和控制进程1)⽤top命令动态显⽰当前的进程。

2)只显⽰某⼀⽤户的进程(u)3)杀死指定进程号的进程(k)3、挂起和恢复进程1)执⾏命令cat2)按【ctrl+z】挂起进程3)输⼊jobs命令,查看作业4)输⼊bg,把cat切换到后台执⾏5)输⼊fg,把cat切换到前台执⾏6)按【ctrl+c】结束进程(⼆)通过at命令实现计划任务1、5分钟后执⾏/bin/date#at now+5minutesat>/bin/dateat>(提⽰:输⼊【ctrl+d】job任务号at 年-⽉-⽇⼩时:分钟如何查看结果?使⽤atq可以查询到已添加的at计划任务2、查找系统中任何以c为后缀名的⽂档,将结果保存到$HOME/findc⽂件中,指定时间为2016年12⽉01⽇早上8点#at 8am 12/01/16at>find / -name ‘*.c’>$HOME/findcat>job任务号at 年-⽉-⽇⼩时:分钟如何查看结果?使⽤atq可以查询到已添加的at计划任务3、2题的命令写到$HOME/findjob中,使⽤at命令执⾏,并将结果保存到$HOME/findfc⽂件中,指定时间为当前时间后5分钟#vi $HOME/findjob内容如下:find / -name ‘*.c’>$HOME/findfc存盘退出#at –f $HOME/findjob now+5minutes4、at命令实现在3天后统计/etc/inittab⽂件的⾏数,将统计结果发送⾄$HOME/initline⽂件中#at now+3daysat>wc–l /etc/inittab>>$HOME/initlineat>5.列出现有的所有at任务,并记下相关信息6、删除某at任务,并进⾏查看是否删除(三)通过cron命令实现计划任务1、使⽤cron命令实现12⽉每天下午2点系统进⾏维护状态,重新启动系统#vi $HOME/shutcron输⼊内容:00 14 * 12 * /sbin/shutdown–r存盘退出#crontab $HOME/shutcron2、使⽤cron命令实现在12⽉1号星期四的17点30分查看/etc/passwd内容,并将查看结果送⾄$HOME/passtext #vi $HOME/checkcron输⼊内容:30 17 1 12 4 more /etc/passwd>$HOME/passtext存盘退出#crontab $HOME/checkcron3、查看当前的crontab⽂件#crontab -l4、⽤户user的crontab⽂件#crontab –u user –r。

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

[root@localhost ~]# ps 显示当前用户会话中打开的进程
PID TTY TIME CMD
4321 pts/1 00:00:00 bash
4420 pts/1 00:00:00 ps
[root@localhost ~]# ps aux 以简单列表的形式显示出所有进程信息
USER PID %CPU %MEM VSZ RSS TTY STAT START TIME COMMAND
root 1 0.0 0.1 2072 664 ? Ss 15:43 0:00 init [5]
root 2 0.0 0.0 0 0 ? S< 15:43 0:00 [migration/0]
root 3 0.0 0.0 0 0 ? SN 15:43 0:00 [ksoftirqd/0]
root 4 0.0 0.0 0 0 ? S< 15:43 0:00 [watchdog/0]
root 5 0.0 0.0 0 0 ? S< 15:43 0:00 [events/0]
[root@localhost ~]# ps -elf 以长格式显示系统中所有的进程信息
F S UID PID PPID C PRI NI ADDR SZ WCHAN STIME TTY TIME CMD
4 S root 1 0 0 7
5 0 - 518 - 15:43 ? 00:00:00 init
1 S root
2 1 0 -40 - - 0 migrat 15:4
3 ? 00:00:00 [mig]
1 S root 3 1 0 94 19 - 0 ksofti 15:43 ? 00:00:00 [kso]
[root@localhost ~]# ps aux | grep bash 过滤出包含bash的进程信息
root 4064 0.0 0.1 6504 628 ? Ss 15:45 0:00 /usr/bin/ssh-agent /bin/sh -c exec -l /bin/bash -c "/usr/bin/dbus-launch --exit-with-session /etc/X11/xinit/Xclients" root 4321 0.0 0.4 5640 1504 pts/1 Ss 15:46 0:00 bash
root 4672 0.0 0.1 5020 696 pts/1 R+ 16:01 0:00 grep bash
[root@localhost ~]# top 查看进程动态信息
top - 16:04:42 up 20 min, 2 users, load average: 0.00, 0.00, 0.00
Tasks: 120 total, 2 running, 116 sleeping, 0 stopped, 2 zombie
Cpu(s): 0.3%us, 0.3%sy, 0.0%ni, 99.3%id, 0.0%wa, 0.0%hi, 0.0%si, 0.0%st
Mem: 360884k total, 354720k used, 6164k free, 14852k buffers
Swap: 1052248k total, 0k used, 1052248k free, 209276k cached
PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND
4230 root 20 0 39864 20m 10m S 0.0 5.9 0:00.15 puplet
4158 root 15 0 128m 20m 16m S 0.0 5.8 0:01.07 vmtoolsd
[root@localhost ~]# pgrep -l "log" 查询进程名中包含log的进程及其PID号2987 syslogd
2990 klogd
[root@localhost ~]# pgrep -l -U root -t tty1 查询用户root在tty1终端上运行的进程及PID号
3583 mingetty
[root@localhost ~]# pstree -aup 查看当前系统的进程树,包括各进程对应的PID号,用户名,完整命令等
init,1
├─acpid,3198
├─anacron,3482 -s
├─atd,3490
├─auditd,2963
│├─audispd,2965
││└─{audispd},2966
│└─{auditd},2964
├─automount,3278
│├─{automount},3279
│├─{automount},3280
│├─{automount},3283
│└─{automount},3286
├─avahi-daemon,3516,avahi
[root@localhost ~]# cp /dev/cdrom haha.iso & 后台运行复制任务
[1] 4355
[root@localhost ~]# firefox http://localhost & 在后台运行火狐浏览器,不影响终端的使用
[1] 4559
[root@localhost ~]# jobs -l 查看当前终端中在后台运行的进程任务
[1]+ 4559 Running firefox http://localhost &
bg命令可以将后台中暂停执行(ctrl+z组合键挂起)的任务恢复运行
fg 1命令可以将后台任务重新恢复到前台运行
[root@localhost ~]# firefox http://localhost & 后台运行
[1] 4842
[root@localhost ~]# fg 1 恢复到前台运行
firefox http://localhost
[root@localhost ~]# pgrep -l "firefox" 查看firefox进程的PID
5108 firefox
[root@localhost ~]# kill 5108 终止firefox进程
[root@localhost ~]# /usr/lib/firefox-3.0.18/run-mozilla.sh: line 131: 5108 已终止"$prog" ${1+"$@"}
[root@localhost ~]# kill -9 5108 强制终止
[root@localhost ~]# killall -9 firefox 杀死进程
[root@localhost ~]# /usr/lib/firefox-3.0.18/run-mozilla.sh: line 131: 5215 已杀死"$prog" ${1+"$@"}
[root@localhost ~]# pkill -9 -U "hehe" 强行杀死用户hehe的进程
一次性计划任务:
[root@localhost ~]# service atd status 查看atd服务是否已经运行
atd (pid 3490) 正在运行...
[root@localhost ~]# date 查看日期
2015年01月31日星期六17:05:38 CST
[root@localhost ~]# at 17:10 设置当天17点10分回车
at> shutdown -r now<EOT> 重启系统
job 1 at 2015-01-31 17:10 ctrl+d提交
[root@localhost ~]# atq 查询计划任务
1 2015-01-31 17:10 a root
[root@localhost ~]# atrm 1 删除第一个计划任务
[root@localhost ~]# atq 再查看已经没有计划任务
周期性任务设置:
[root@localhost ~]# service crond status 查看crond服务是否已经运行
crond (pid 3440) 正在运行...
[root@localhost ~]# crontab -e 编辑计划任务列表
55 23 * * 7 /bin/cp /etc/passwd /home/jerry/pwd.txt
每周日晚上23:55将/etc/passwd文件的内容复制到宿主目录中保存为pad.txt
[root@localhost ~]# crontab -l 查看当前计划任务
[root@localhost ~]# crontab -l -u hehe 查看用户hehe的计划任务
删除计划任务可crontab -e编辑,然后删除其中内容
若要清空所有任务计划,可以执行crontab -r命令。

相关文档
最新文档