Linux操作系统实验二

合集下载

操作系统实验二

操作系统实验二

实验二并发与调度一、实验目的在本实验中,通过对事件和互斥体对象的了解,来加深对Windows 2000线程同步的理解。

通过分析实验程序,了解管理事件对象的API。

了解在进程中如何使用事件对象,在进程中如何使用互斥体对象,线程如何通过文件映射对象发送数据。

在Linux Redhat 9.0操作系统平台上,用pipe()创建一个管道文件,然后用fork()创建两个生产进程和两个消费进程,它们之间通过pipe()传递消息。

二、实验环境硬件环境:计算机一台,局域网环境;软件环境:Windows 2000 Professional,Linux Redhat 9.0操作系统平台,Visual C++ 6.0企业版。

三、实验内容和步骤第一部分:互斥体对象本程序中显示的类CCountUpDown使用了一个互斥体来保证对两个线程间单一数值的访问。

每个线程都企图获得控制权来改变该数值,然后将该数值写入输出流中。

创建者实际上创建的是互斥体对象,计数方法执行等待并释放,为的是共同使用互斥体所需的资源(因而也就是共享资源) 。

利用互斥体保护共享资源// mutex项目# include <windows.h># include <iostream>class CCountUpDown{public:CCountUpDown(int nAccesses) :m_hThreadInc(INV ALID_HANDLE_V ALUE) ,m_hThreadDec(INV ALID_HANDLE_V ALUE) ,m_hMutexV alue(IN V ALID_HANDLE_V ALUE) ,m_nV alue(0) ,m_nAccess(nAccesses){m_hMutexV alue = :: CreateMutex(NULL,TRUE,NULL) ;m_hThreadInc = :: CreateThread(NULL,0,IncThreadProc,reinterpret_cast <LPVOID> (this) ,0,NULL) ;m_hThreadDec = :: CreateThread(NULL,0,DecThreadProc,reinterpret_cast <LPVOID> (this) ,0,NULL) ;:: ReleaseMutex(m_hMutexV alue) ;}virtual ~CCountUpDown(){:: CloseHandle(m_hThreadInc) ;:: CloseHandle(m_hThreadDec) ;:: CloseHandle(m_hMutexV alue) ;}virtual void WaitForCompletion(){if (m_hThreadInc != INV ALID_HANDLE_V ALUE &&m_hThreadDec != INV ALID_HANDLE_V ALUE){:: WaitForSingleObject(m_hThreadInc, INFINITE) ;:: WaitForSingleObject(m_hThreadDec, INFINITE) ;}}protected:virtual void DoCount(int nStep){while (m_nAccess > 0){:: WaitForSingleObject(m_hMutexV alue, INFINITE) ;m_nV alue += nStep;std :: cout << “thread: ” << :: GetCurrentThreadId()<< “value: ” << m_n V alue<< “access: ” << m_nAccess << std :: endl;--m_nAccess;:: Sleep(1000) ; // 使显示速度放慢:: ReleaseMutex(m_hMutexV alue) ;}}static DWORD WINAPI IncThreadProc(LPVOID lpParam){CCountUpDown* pThis =reinterpret_cast < CCountUpDown* > (lpParam) ;pThis -> DoCount(+1) ;return(0) ;}static DWORD WINAPI DecThreadProc(LPVOID lpParam){CCountUpDown* pThis =reinterpret_cast <CCountUpDown* > (lpParam) ;pThis -> DoCount(-1) ;return(0) ;}protected:HANDLE m_hThreadInc;HANDLE m_hThreadDec;HANDLE m_hMutexV alue;int m_nV alue;int m_nAccess ;} ;void main(){ CCountUpDown ud(50) ;ud.WaitForCompletion() ; }分析程序的运行结果,可以看到线程(加和减线程) 的交替执行(因为Sleep() API允许Windows切换线程) 。

实验二Linux系统的启动与关闭

实验二Linux系统的启动与关闭

实验⼆Linux系统的启动与关闭实验⼆Linux系统的启动与关闭⼀、实验⽬的1.熟悉Red Hat Linux操作系统的环境。

2.掌握Red Hat Linux 9.0系统下的基本操作。

3.掌握字符界界⾯下基础命令的使⽤⼆、实验环境1.装有Red Hat Linux 9.0系统的计算机。

三、实验重点及难点1.重点:学习掌握Red Hat Linux 9.0系统下的基本操作。

2.难点:在字符界⾯下各种基础命令的使⽤四、实验内容1、若对Linux系统安装仍有疑问的同学继续熟悉Linux系统的安装2、登陆Red Hat Linux 9.0系统。

以root⽤户登录到Red Hat Linux 9.0系统(也登陆到上次课安装的系统,或实验⾃带的系统,⽤户名:root,密码:000000)3、图形⽤户模式和字符模式之间(六个终端)是如何切换:熟悉/etc/inittab⽂件的内容(cat /etc/inittab)你能给出每⾏的含义吗?图形界⾯字符界⾯Alt+shift+crtl+F1~F6字符界⾯图形界⾯Alt+F7字符界⾯字符界⾯Alt+Fn4、创建⽤户账号(1)在图形⽤户界⾯下创建⾃⼰的⽤户帐号及帐号密码;1、主菜单----系统设置----⽤户和群组---新建⽤户2、输⼊⽤户名、全程、⼝令、确认⼝令、登陆shell、主⽬录3、确认不误后,点击确定后完成相关操作(2)在⽤字符界⾯下通过adduser或useradd命令创建⾃⼰的帐号,通过passwd命令设置⾃⼰帐号的密码;1、在桌⾯点击⿏标右键、然后点击新建终端2、adduser tong3、passwd tong4、tong5、完成相关操作(3)查看/etc/passwd和/etc/shadow⽂件,你能说出每个字段的含义吗?Passwd:登录名:密码:⽤户ID:群组ID:全名:⼯作⽬录:解释程序Shadow:⽤户名:加密密码:最后⼀次修改密码时间:密码最短有效天数:密码最长有效天数:警告时间:失效时间:保留字段(⽬前没有特定⽤途)(4)观察添加⽤户,在系统中的那些位置发⽣了变化?在/etc/passwd、/etc/shadow、/etc/group中添加在home下创建了⼀个新的⽤户⽂件夹5、虚拟机下⽹络的配置:IP地址的设置(⾃动获取)、DNS服务器(210.45.160.1)的设置、⽹卡连接模式的设置(设置成NAT)。

linux实验报告

linux实验报告

linux实验报告实验目的:通过对Linux操作系统的实践,掌握基本的Linux命令和操作方法,了解Linux操作系统的特点和优势。

实验一:Linux环境搭建在实验一中,我们首先需要搭建Linux操作系统的环境。

根据实验指导书的要求,我们选择了Ubuntu作为实验平台。

通过下载Ubuntu镜像文件,并利用虚拟机软件创建一个虚拟机,将镜像文件安装到虚拟机中。

在安装过程中,我们需要选择合适的分区和网络配置等,并设置root用户的密码。

实验二:基本命令的使用在实验二中,我们主要学习了Linux的基本命令的使用方法。

首先,我们了解了Linux文件系统的结构,包括根目录、用户目录、系统目录等。

然后,通过命令行终端进行一系列的实践操作,比如查看文件内容、创建目录、复制文件等。

这些命令的使用不仅提高了我们的工作效率,同时也增强了对Linux操作系统的理解。

实验三:软件安装与卸载实验三主要涉及到Linux的软件安装与卸载。

我们首先学习了使用APT工具进行软件包管理,通过安装命令行界面的方式安装了一些常用的软件,比如文本编辑器、终端工具等。

此外,我们还学习了如何卸载已安装的软件包,清理不需要的文件,以保持系统的整洁性。

实验四:权限管理在实验四中,我们学习了Linux的权限管理机制。

Linux操作系统采用了基于用户和组的权限模型,通过设置文件和目录的权限,实现对文件的读、写、执行的控制。

我们通过实际操作,创建了新的用户和组,并为不同的用户和组设置了不同的权限。

这样,可以有效地保护系统的文件和数据的安全性。

实验五:网络配置与服务搭建在实验五中,我们主要学习了Linux的网络配置和服务搭建。

通过设置网络接口、IP地址和网关等参数,实现了网络的正常连接。

同时,我们还学习了一些常用的网络命令,比如ping、ssh等。

此外,我们尝试搭建了一个简单的Web服务器,通过浏览器访问,可以查看服务器上的网页。

实验六:系统监控和故障恢复在实验六中,我们学习了Linux的系统监控和故障恢复方法。

Linux实验二 常用命令的使用

Linux实验二   常用命令的使用

实验二常用命令的使用一、实验目的1、熟练Linux系统命令格式及命令使用的方法2、掌握Linux系统中常用命令的作用和命令中各选项的作用二、实验环境安装了Linux系统的计算机一台三、实验过程(实验步骤、记录、数据、分析、结果)1.切换登录用户su功能说明:使一个普通的使用者拥有超级用户或其他使用者的权限。

语法:su 用户名(如果没有输入用户名则预设为root)随后按系统提示输入切换后用户的密码分析:由yanji用户切换为root用户2.常用的文件操作命令包括:(1) pwd功能说明:显示工作目录。

语法:pwd [--help][--version]补充说明:执行pwd指令可得知工作目录的绝对路径名称。

参数:--help 在线帮助。

--version 显示版本信息。

分析:pwd显示/home/yanji目录下。

功能说明:切换目录。

语法:cd [目的目录]分析:ls显示文件列表,cd切换到“模板”目录,“cd ..”退回目录文件。

(3) ls功能说明:列出目录内容。

语法:ls [-1aAcdlrR]补充说明:执行ls指令可列出目录的内容,包括文件和子目录的名称。

参数:-1 每列仅显示一个文件或目录名称。

-a显示下所有文件和目录。

-A 显示所有文件和目录,但不显示现行目录和上层目录。

-c以更改时间排序,显示文件和目录。

-d显示目录名称而非其内容。

-l 使用详细格式列表。

-R 递归处理,将指定目录下的所有文件及子目录一并处理。

分析:ls显示文件列表-a显示下所有文件和目录。

-l使用详细格式列表功能说明:建立目录语法:mkdir [-p][--help][--version][-m <目录属性>][目录名称]补充说明:mkdir可建立目录并同时设置目录的权限。

参数:-m<目录属性>或--mode<目录属性> 建立目录时同时设置目录的权限。

-p 若所要建立目录的上层目录目前尚未建立,则一并建立上层目录。

Linux系统实验2文件与目录操作

Linux系统实验2文件与目录操作

Linux系统实验2--文件和目录操作一、实验目地1、学会在Linux系统下如何使用命令对文件和目录进行操作;2、掌握工作目录、用户主目录与路径;3、掌握硬链接与软链接的区别及使用;4、学会以下操作:显示工作目录、切换目录、创建目录、删除目录、复制文件以及移动文件、创建链接文件等;二、预备知识查找并学习以下命令及其常用参数的使用方法!1、pwd:显示工作目录路径;2、cd: 更改工作目录路径;3、ls: 列出字母和文件信息;4、touch:创建空文件、更改文件或目录时间;5、mkdir:创建目录;6、rmdir:删除空目录;7、cp:复制文件和目录;8、mv:移动或更名现有文件和目录;9、rm:删除文件或目录;10、wc:统计文件字节数、字数或行数;11、ln:创建链接文件(含硬链接与软连接);三、实验内容以下实验内容请特别注意:蓝色文字部分务必使用你的真实信息代替!1、使用命令切换到/etc目录,并显示当前工作目录路径;2、使用命令显示/root目录下所有文件目录的详细信息,包括隐藏文件;3、使用命令在你的用户目录下创建空文件??????.txt(?表示你的学号中的数字),并将该文件的时间记录更改为8月8日8点8分;使用vi编辑器在该文件中输入:My name is XXX. (X为你名字汉语拼音字母);使用命令显示该文件的内容;4、在你的用户目录下创建一个空目录,目录名为你的学号,并将/etc/ntp.conf文件复制到该目录中;5、统计文件/etc/ntp.conf的行数、字符数和单词数;6、使用命令在/root目录下创建一个文件xxx(x为你名字汉语拼音字母),使用命令创建/root/xxx文件的硬链接文件/root/你的学号_b和软链接文件/root/你的学号_c;7、使用命令列出/root目录下的详细信息(所显示的内容会包括隐藏文件和第6步所做的工作结果);8、使用命令列出你的用户目录下的详细信息(所显示的内容会包括隐藏文件、目录以及第1~5所做的工作结果)。

操作系统第二次实验报告——Linux创建进程及可执行文件结构分析

操作系统第二次实验报告——Linux创建进程及可执行文件结构分析

操作系统第⼆次实验报告——Linux创建进程及可执⾏⽂件结构分析0 个⼈信息张樱姿201821121038计算18121 实验⽬的熟练Linux创建进程fork操作。

2 实验内容在服务器上⽤VIM编写⼀个程序:⼀个进程创建两个⼦进程。

查看进程树查看进程相关信息3 实验报告 3.1编写程序创建两个⼦进程1 #include<sys/types.h>2 #include<stdio.h>3 #include<unistd.h>45int main(){6 pid_t cpid1 = fork(); //创建⼦进程178if(cpid1<0){9 printf("fork cd1 failed\n");10 }11else if(cpid1==0){12 printf("Child1:pid: %d, ppid: %d\n",getpid(),getppid());13 }14else{15 pid_t cpid2 = fork(); //创建⼦进程216if(cpid2<0){17 printf("fork cd2 failed\n");18 }19else if(cpid2==0){20 printf("Child2:pid: %d, ppid: %d\n",getpid(),getppid());21 }22else{23 printf("Parent: pid :%d\n",getpid());24 }25 }26 }编译运⾏后的结果:3.2打印进程树 添加sleep函数以挂起进程,⽅便打印进程树:1 #include<sys/types.h>2 #include<stdio.h>3 #include<unistd.h>45int main(){6 pid_t cpid1 = fork();78if(cpid1<0){9 printf("fork cd1 failed\n");10 }11else if(cpid1==0){12 printf("Child1:pid: %d, ppid: %d\n",getpid(),getppid());13 sleep(30); //挂起30秒14 }15else{16 pid_t cpid2 = fork();17if(cpid2<0){18 printf("fork cd2 failed\n");19 }20else if(cpid2==0){21 printf("Child2:pid: %d, ppid: %d\n",getpid(),getppid());22 sleep(30); //挂起30秒23 }24else{25 printf("Parent: pid :%d\n",getpid());26 sleep(60); //挂起60秒27 }28 }29 }pstree -p pid #打印进程树 3.3 解读进程相关信息 3.3.1 解释执⾏ps -ef后返回结果中每个字段的含义 ps -ef输出格式 :UID PID PPID C STIME TTY TIME CMDUID: User ID,⽤户ID。

实验二 Linux用户和组的管理

实验二  Linux用户和组的管理

实验二 Linux用户和组的管理(一)用户管理【需求】◆添加一个用户,账号为testgdlc,初始口令为123456;◆要求该用户的主目录为/home/share;◆要求该用户的基本组为root;◆要求该用户的shell为/bin/tcsh;◆要求把该用户加到mail组和news组中。

【系统及软件环境】操作系统:Red Hat AS 4.0【实验配置文件及命令】1.配置文件:/etc/passwd,/etc/shadow,/etc/group2.命令:/usr/sbin/useradd,/usr/bin/passwd,/usr/sbin/usermod,/bin/su,/bin/cat,/bin/grep【实验步骤】1234【实验故障与分析】下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。

看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解决问题的方法。

(二)批量添加用户【需求】◆添加一组ftp 用户;◆要求用户都不能以shell方式登录系统,只能通过ftp登录。

【系统及软件环境】操作系统:Red Hat AS 4.0【实验配置文件及命令】1.配置文件:/etc/passwd,/etc/shadow,/etc/group2.命令:/bin/touch,/usr/bin/vim,/usr/sbin/newusers,/usr/sbin/chpasswd,/bin/cat,/bin/grep【实验步骤】1234.用newusers批量添加用户。

6【实验故障与分析】下面的表格中列出了在实验过程中可能会出现的故障及其解决方法。

看看是不是对你的实验有所帮助?如果你在实验中还遇到了其他的问题或故障,不妨记录在表格中,通过自己的实践,或者与老师、同学一起找找解(三)工作组管理【需求】◆添加一个系统工作组workgroup1;◆要求把用户root和testgdlc添加到该组中。

Linux系统应用实验指导书(实验2)-账户管理和权限管理(精)

Linux系统应用实验指导书(实验2)-账户管理和权限管理(精)

实验二账户管理和权限管理1、实验目的(1理解账户的实质(2学会设置和管理口令(3理解Linux系统的权限(4学会设置基本操作权限和特殊权限2、实验内容(1使用命令行添加和管理普通用户(2使用命令行添加和管理组用户(3更改文件和目录的操作权限(4设置特殊权限3、实验步骤(A新建普通用户,用户名是学号(以AP0604241为例,密码为123456 # useradd ap0604241# passwd ap0604241(B用同样的方法新建用户linux,密码是linux(C观察一下用户linux和ap0604241所在的组# id linux# id ap0604241(D转换用户ap0604241# su - ap0604241(E进入目录/home/linux$ cd /home/linux观察是否成功,若否,为什么?(F在根用户下,修改用户ap0604241的用户属性,使得该用户能够访问linux的HOME 目录# usermod - G linux ap0604241# id# su - ap0604241$ cd /home/linux观察一下是否成功,若否,为什么?$ su -# ll -l /home/ | grep linux# chmod 750 /home/linux# su - ap0604241五邑大学信息学院Linux系统应用实验指导书$ cd /home/linux(G利用用户ap0604241在linux的HOME目录下创建文件,删除文件$ touch file1 file2观察是否成功,若否,为什么?继续下面操作$ su -# chmod 770 /home/linux# su - ap0604241$ cd /home/linux$ touch file1 file2$ ll$ rm file2(H特殊权限设置$ su -# ll /home | grep linux# chmod o+t /home/linux# ll /home | grep linux# su - linux# touch file2# su ap0604241# rm file1# rm file2观察实验结果(I保存下列文件,打包压缩/etc/passwd/etc/group/home目录的所有目录信息以上所有文件保存在/home/ap0604241(学生的学号目录下,文件名为ap0604241.tar.gz4、实验要求在虚拟机上将上述命令熟练掌握,等指导老师检查完方可离开。

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

实验报告
2016 至2017 学年第二学期
1.crontab帮助信息
usage: crontab [-u user] file
crontab [ -u user ] [ -i ] { -e | -l | -r }
(default operation is replace, per 1003.2)
-e (edit user's crontab)
-l (list user's crontab)
-r (delete user's crontab)
-i (prompt before deleting user's crontab)
2.查看用户的计划任务列表
命令:crontal -l
如图,当前用户为cyril,还没有计划任务。

3.建立计划任务
命令:crontal –e 为当前用户建立计划任务,如果为其他用户建立计划任务需要使用-u参数指定。

执行命令后会打开一个由EDITOR变量指定的编辑器如vim,在其中写好计划任务保存后,终端回显:crontab: installing new crontab
编辑计划任务时,格式为:
*****command
分时日月周命令
其中*/5 这样的格式表示“每5(分钟、小时…)”
这里我先写了一个脚本,用来在/tmp目录下创建文件,脚本内容如下:
然后创建计划任务来每隔一分钟运行这个脚本,如下图:
现在再查看一下任务列表:
查看脚本的执行情况:
如图,显示了7个由计划任务调用脚本创建的文件。

20170424-16:48.txt
20170424-16:49.txt
20170424-16:50.txt
20170424-16:51.txt
20170424-16:52.txt
20170424-16:53.txt
20170424-16:54.txt
4.删除计划任务
可以直接在任务描述文件中删除任务描述,该描述文件在/var/spool/cron/crontabs 目录下,以用户名命令。

除此外,也可以通过crontab –r来删除当前用户的所有任务。

删除当前用户的所有任务
Cyril用户的计划任务描述文件。

相关文档
最新文档