Linux操作系统实训报告.docx
- 文档编号:26161268
- 上传时间:2023-06-17
- 格式:DOCX
- 页数:32
- 大小:502.22KB
Linux操作系统实训报告.docx
《Linux操作系统实训报告.docx》由会员分享,可在线阅读,更多相关《Linux操作系统实训报告.docx(32页珍藏版)》请在冰豆网上搜索。
Linux操作系统实训报告
第一章Linux命令
1.1Linux操作系统简介
Linux的起源:
UNIX系统的快速发展,引起了计算机科学家AndrewTanenbaum的强烈好感,为了方便学生更好的了解操作系统的工作原理,他开发了一个迷你的UNIX,即Minix系统。
1991年10月,芬兰赫尔辛基的学生LinuxsTorvalds在Minix的基础上开发了大约一万行的代码,将其发布到comps.os.minix论坛上供大家下载,后来在众多黑客的开发下,终于在1994年3月14日发布了Linux1.0版本。
此后Linux各种版本开始流行起来。
1999年发布了Linux中文版本。
严格的说,Linux不算是一个操作系统,只是一个操作系统的内核,即计算机软件与硬件之间通信的平台;Linux的全称是GNU/Linux,这才算是一个真正意义上的Linux系统。
GNU是RichardStallman组织的一个项目,世界各地的程序员可以编写GNU程序,同时遵循GPL协议,允许任何人随意更改。
不过,修改后的程序也要遵守GPL协议。
Linux的特点:
●完全免费。
由于Linux遵循通用的公共许可证GPL,因此任何人有使用、拷贝和修改Linux的自由。
●高效安全稳定。
UNIX操作系统的稳定性是众所周知的,Linux继承了UNIX核心的设计思想,具有执行效率高、安全和稳定性好的特点。
●支持多种硬件平台。
Linux能在笔记本电脑、PC机、工作站、甚至大型机上运行,并能在x86、MIPS、PowerPC、SPARC、和Alpha等主流的体系结构上运行。
●友好的用户界面。
Linux提供了类似Windows图形界面的X-Windows系统,用户可以使用鼠标方便、直观、快捷的进行操作。
●强大的网络功能。
网络是Linux的生命,完善的网络支持是Linux与生俱来的能力,所有Linux在通信和网络功能方面优于其他操作系统。
●支持多任务、多用户。
Linux是多任务、多用户的操作系统,可以支持多个使用者同时使用并共享系统的磁盘、外设和处理器等系统资源。
Linux的保护机制使每个应用程序和用户互不干扰,任何一个任务不崩溃,其他任务仍然正常运行。
1.2虚拟机操作流程
VmwareWorkstation6是目前比较主流的虚拟机软件,也是唯一的能在Windows和Linux主机平台上运行的虚拟计算机软件。
它能真实的模拟物理计算机的所有基本功能,是多平台学习不可或缺的虚拟软件。
首先,打开VmwareWorkstation6虚拟机软件,在主界面中选择RedHadEnterpriseLinux4虚拟计算机系统,点击Commands框架中的“StartthisVirtualmachine”按钮,运行RedHadEnterpriseLinux4虚拟系统。
1.3Linux文件与目录的基本操作
1.3.1文件与文件名
●Linux的文件名长度可以达到256个字符,但不能使用以下字符做文件名:
!
@#$%^&*()[]{}’”\/;<>空格
●Linux区分大小写ABCAbc不同
●文件名中如果有多个小数点,最右边的一个为分隔符,表示文件的类型,如.txt,.c
1.3.2目录
“/”为根目录、目录分隔符和目录与文件的分隔符。
如:
/home/feng/11.txt。
1.3.3文件与目录的常用命令
1.man命令
⑴man语法:
man命令符
⑵man命令说明:
对你熟悉或不熟悉的命令提供帮助解释(按空格键显示下一页,按b键返回,按q键退出)。
⑶使用权限:
所有用户。
⑷范例:
例1:
显示vi命令的帮助解释,如图1-1所示。
[Root@linuxroot]#manvi
图1-1man命令查看vi帮助
2.ls命令
⑴ls语法:
ls[选项|参数]目录名
⑵ls命令说明:
用于显示指定目录或文件的相关信息。
⑶使用权限:
所有用户。
⑷ls命令参数选项见表1-1。
表1-1ls命令参数选项
选项选项
功能
-a
显示所有文件和目录,包括隐含文件
-l
显示文件的完整信息
●d表示目录(directory),如果是一个"-"表示是文件,如果是l则表示是一个连接文件(link)
●表示文件或者目录许可权限,分别用可读(r),可写(w),可运行(x)。
-F
在每个文件名的后面或是前面添加一个特定的后缀字符的方法指出它的类型
/:
子目录
*:
可执行文件
无:
普通文件
.开头:
隐含文件
-r
将文件以反次序显示(依英文字母顺序)
-t
将文件依建立时间的先后顺序列出,后建的排在前面
-A
同-a,但不列出“.”当前目录和“..”父目录
-R
若目录下有文件,则列出其下文件
⑸范例:
例1:
显示目录或文件的详细列表并以创建时间的先后反次序显示,如图1-2所示。
图1-2显示列表
例2:
显示目录(子目录不为空时显示子目录)详细列表,如图1-3所示。
图1-3显示详细列表(R参数)
例3:
显示所有文件和目录,包括隐含文件但不列出“.”当前目录和“..”父目录,在每个文件名的后面或是前面添加一个特定的后缀字符的方法指出它的类型,如图1-4所示。
图1-4AF参数结果
3.mkdir命令
⑴mkdir语法:
mkdir[选项|参数]目录名
⑵mkdir命令说明:
用于创建目录。
⑶使用权限:
所有用户。
⑷mkdir命令参数选项:
-p:
确保目录名称存在,不存在的话就创建一个。
-m:
在创建目录时设置目录权限。
⑸范例:
例1:
使用自己的学号和姓名各创建一个子目录,并用ls命令观察结果,如图1-5所示。
图1-5使用mkdir命令创建子目录
例2:
创建一个已经存在的子目录,观察显示结果,如图1-6所示。
图1-6创建已存在子目录结果
4.rmdir命令
⑴rmdir语法:
rmdir[选项|参数]目录名
⑵rmdir命令说明:
用语删除空的目录。
⑶使用权限:
所有用户。
⑷rmdir命令参数选项:
-p:
当子目录被删除后使它也成为空目录的话,则顺便一并删除。
⑸范例:
例1:
删除上例中使用mkdir创建的“2007435124”和“温周洋”子目录,并使用ls命令观察结果,如图1-7所示。
图1-7使用rmdir删除子目录
例2:
使用rmdir删除一个不存在的目录,并观察结果,如图1-8所示。
图1-8使用rmdir命令删除不存在目录结果
5.cd命令
⑴cd语法:
cd目录名
⑵命令说明:
用语更改当前目录。
⑶使用权限:
所有用户。
⑷范例:
例1:
使用cd命令进入“07124”目录(已存在)和“07142”目录(不存在),并观察结果,如图1-9所示。
图1-9更改当前目录
6.pwd命令
⑴pwd语法:
pwd
⑵命令说明:
显示当前用户所在工作组目录位置。
⑶使用权限:
所有用户。
⑷范例:
例1:
显示当前用户所在工作组目录,如图1-10所示。
图1-10显示当前目录
7.cp命令
⑴cp语法:
cp[选项|源文件或目录][目标文件或目录][目的目录]
⑵命令说明:
复制文件或目录。
⑶使用权限:
所有用户。
⑷cp命令参数表,见表1-2。
表1-2cp命令参数
参数选项
说明
-a
此参数的效果和同时指定“-dpR”参数相同
-b
删除覆盖目标文件之前备份,备份文件会在字尾加上一个备份字符串
-d
当复制符号链接时,把目标文件或目录也建立符号链接,并指向与源文件或目录链接的原始文件或目录
-f
强行复制文件或目录不论目标文件或目录是否存在
-i
覆盖既有文件之前先询问用户
-l
对源文件建立硬链接,而非复制文件
-p
保留源文件或目录的属性
-P
保留源文件或目录的路径
-r
递归处理,将指定目录下的文件与子目录一并处理
-R
递归处理,将指定目录下的所有文件与子目录一并处理
-s
对文件建立符号链接,而非复制文件
-u
使用这项参数后只会在源文件的更改时间较目标文件更新时或与名称对应的目标文件并不存在,才复制文件
-v
显示命令执行过程
-x
复制文件或目录存放的文件系统,必须与cp命令执行时所处文件系统相同,否则不复制
⑸范例:
例1:
复制/root/2007435124/下的所有以24开头的文件到/home/温周洋目录下,如图1-11所示。
图1-11复制所有以24开头的对象
8.rm命令
⑴rm语法:
rm[选项][文件或目录...]
⑵rm命令说明:
删除文件或目录。
⑶使用权限:
所有用户。
⑷rm命令参数表,见表1-3。
表1-3rm命令参数
参数选项
说明
-d
直接把欲删除的目录的硬链接数据删成0,删除该目录
-f
强制删除文件或目录,删除文件或目录前不在询问用户
-i
删除既有文件或目录之前先询问用户,此为默认项
-r/-R
递归处理,将指定目录下的所有文件及子目录一并处理
-v
显示命令执行过程
⑸范例:
例1:
直接删除/root/2007435124/24.c文件,删除前不询问用户,如图1-12所示。
图1-12删除文件
例2:
删除/root/2007435124下的wen.txt文件和24子目录,删除前询问用户,如图1-13所示。
图1-13删除特定文件和目录
9.mv命令
⑴mv语法:
mv[文件1或目录1][文件2或目录2]
⑵mv命令说明:
移动文件或修改文件名。
⑶使用权限:
所有用户。
⑷范例:
例1:
修改/root/2007435124目录下的文件24.txt为wen.txt,如图1-14所示。
图1-14修改文件名
例2:
移动/root/2007435124目录下的wen.txt文件到/root/下,如图1-15所示。
图1-15移动文件
10.cat命令
⑴cat命令语法:
cat[选项]文件名
⑵cat命令说明:
用于显示特定文件到标准输出设备或另一个文件中。
⑶使用权限:
所有用户。
⑷cat命令参数表,见表1-4。
表1-4cat命令参数
参数选项
说明
-n
由1开始对所有输出的行数编号
-b
和-n相似,只不过对于空格行不编号
-s
当遇上连续两行以上空白行时就换成一行空白行
⑸范例:
例1:
显示文件wen.txt中的内容,如图1-16所示。
图1-16显示文件内容
11.more命令
⑴more命令语法:
more文件名
⑵more命令说明:
用于分页显示指定文件的内容。
⑶使用权限:
所有用户。
⑷范例:
例1:
逐页显示/etc/samba/smb.conf的内容,要求一次显示10行,如图1-17所示。
图1-17逐页显示文件内容
12.clear和date命令
⑴clear命令说明:
用于清屏。
⑵date命令说明:
显示系统当前时间。
⑶范例:
例1:
显示当前系统时间,如图1-18所示。
图1-18显示系统时间
第二章Vi编辑器
2.1Vi编辑器简介
2.1.1Vi编辑器概述
在各种操作系统中,编辑各种文件是必不可少的工作部分。
在Linux操作系统中提供了一系列的编辑器供用户使用,例如Vi、Vim、Emacs、pico、ex、ed等,其中Vim(Vi的增强版)是最常用的编辑器,它是唯一在所有版本的Linux系统和其他各种UNIX系统中都配备的文本编辑器。
4.1.2Vi编辑器的工作模式
Vi编辑器有3种工作模式,在每种工作模式下能做不同的操作。
⑴命令模式:
是进入Vi的默认模式,在此模式下可以对所编辑文档进行复制、粘贴、删除、移动光标、继续查找等操作,同时它也是末行模式和编辑模式之间进行切换的中转站。
⑵末行模式:
用于文件的保存、退出、定位光标、查找、替换、设置行标等操作。
⑶编辑模式:
用于直接编辑文件。
⑷三种模式之间的切换方法如图2-1所示。
从图2-1中可以看到,编辑模式和末行模式之间不能直接切换,必须通过命令模式进行过度。
图2-1工作模式切换模式图
2.2Vi编辑器操作
2.2.1Vi编辑器的启动
可以使用简单的命令来启动Vim文本编辑器,通常可直接指定需要编辑的文件路径,即使需要编辑的是一个原本不存在的新文件。
一般命令如下所示:
[Root@linuxroot]#vim文件名
2.2.2三种模式的操作
进入Vi后,首先会看到如图2-2所示的界面:
图2-2Vi主界面(命令模式)
图2-2所示的界面即为命令模式的界面,在这个界面下按下“:
”键就可以进入如图2-3所示的末行模式,所谓“末行模式”就是在编辑器的最后一行进行输入。
末行命令wq表示将编辑内容写入文件并退出。
这里不退出而进入编辑模式,因为末行模式不能直接进入编辑模式,因此先按下“Esc”键退回命令模式,在命令模式下按“insert”进入如图2-4所示的编辑模式,在编辑模式下可以输入文本。
图2-3末行模式
图2-4编辑模式
2.2.3命令
1.末行模式命令
在末行模式下可以输入末行命令,常用的末行命令见表2-1。
表2-1末行模式命令
:
wpath/filename
保存文件
:
n,mwpath/filename
保存指定范围文档(n表示开始行,m表示结束行)
:
q!
对文件修改后,不保存强制退出。
:
q
没有对文件做过修改,退出
:
wq或:
x
保存退出
rpath/filename
读取文件
setnu
打开行标
setnonu
关闭行标
/char
正向查找字符
?
char
反向查找字符
2.命令模式命令
在命令模式下,也可以使用大量的命令对文件进行编辑等操作,常用的命令模式命令见表2-2。
表4-2命令模式命令
a
从光标所在位置后面新增文字,光标后的文字随新增文字向后移动
A
从光标所在列最后面的地方开始新增文字
i
从光标所在位置前面开始插入文字,光标后的文字随新增文字移动<可用insert键>
I
从光标所在列的第一个非空白字符前面开始插入文字
o
在光标所在列下新增一列并进入输入模式
O
在光标所在列上方新增一列并进入输入模式
x
删除光标所在字符<也可以用Delete键>
dd
删除光标所在行
r
修改光标所在字符,r后接要修改的字符
R
进入替换状态,新增文字会覆盖原先文字知道按ESC后到命令模式
s
删除光标所在字元,并进入输入模式
S
删除光标所在的列,并进入输入模式
第三章Linux下C语言编程
3.1gcc简介
1.gcc基本语法
gcc[option][filename]
表3-1gcc参数列表
选项
功能
-c
对源文件进行预处理、编译和汇编,产生目标文件,但不进行连接。
-o<文件名>
定义输出的执行文件名为<文件名>
-S
在编译后停止,产生类型名为s的汇编代码文件
-E
在预处理后停止,输出预处理后的源代码至标准输出,不进行编译
-O
对程序进行编译优化,编译速度比不做优化慢且要求内存多。
-O2
比-O优化效果更好,但编译速度较慢
-g
产生一张用于调试和排错的扩展符号表,以便用gdb进行调试
3.2Linux下C语言编程
1.编写程序实现如下图形显示
*
**
***
*****
******
程序实现代码如下,运行结果如图3-1所示。
#include
main()
{inti,j,k;
for(i=0;i<5;i++)
{
for(k=0;k<4-i;k++)
printf("");
for(j=0;j<=i;j++)
printf("*");
printf("\n");
}}
图3-1金字塔图形
2.编写程序实现求三个数中最大值
程序实现代码如下,运行结果如图3-2所示。
#include
intmax(intx,inty,intz)
{
intmax;
max=x;
if(max if(max returnmax; } main() { inti,j,k,l; printf("pleaseinputthreenumbers: \n"); scanf("%d%d%d",&i,&j,&k); l=max(i,j,k); printf("Themaxnumberis: %d\n",l); } 图3-2求三个数中最大值 3.编写程序实现求一维数组中最大值 程序实现代码如下所示,运行结果如图3-3所示。 #include #include #include main() { intarray[10]; inti,max; time_tt; srand((unsigned)time(&t)); for(i=0;i<10;i++) { array[i]=rand()%100; } printf("Thearrayare: \n"); for(i=0;i<10;i++) { printf("%2d",array[i]); if((i+1)%5==0) printf("\n"); } max=array[0]; for(i=0;i<10;i++) { if(max max=array[i]; } printf("Themaxnumberis: %d\n",max); } 图3-3求一维数组中最大值 3.3gdb调试 GDB是一个由GNU开源组织发布的、UNIX/LINUX操作系统下的、基于命令行的、功能强大的程序调试工具。 其基本命令见表3-2。 表3-2GDB命令 命令 说明 file<文件名> 加载被调试的可执行程序文件。 因为一般都在被调试程序所在目录下执行GDB,因而文本名不需要带路径。 r Run的简写,运行被调试的程序。 如果此前没有下过断点,则执行完整个程序;如果有断点,则程序暂停在第一个可用断点处。 c Continue的简写,继续执行被调试程序,直至下一个断点或程序结束 b<行号> b<函数名称> b*<函数名称> b*<代码地址> d[编号] b: Breakpoint的简写,设置断点。 两可以使用“行号”“函数名称”“执行地址”等方式指定断点位置。 其中在函数名称前面加“*”符号表示将断点设置在“由编译器生成的prolog代码处”。 如果不了解汇编,可以不予理会此用法。 d: Deletebreakpoint的简写,删除指定编号的某个断点,或删除所有断点。 断点编号从1开始递增。 s,n s: 执行一行源程序代码,如果此行代码中有函数调用,则进入该函数; n: 执行一行源程序代码,此行代码中的函数调用也一并执行。 s相当于其它调试器中的“StepInto(单步跟踪进入)”; n相当于其它调试器中的“StepOver(单步跟踪)”。 这两个命令必须在有源代码调试信息的情况下才可以使用(GCC编译时使用“-g”参数)。 si,ni si命令类似于s命令,ni命令类似于n命令。 所不同的是,这两个命令(si/ni)所针对的是汇编指令,而s/n针对的是源代码。 p<变量名称> Print的简写,显示指定变量(临时变量或全局变量)的值 display... undisplay<编号> display,设置程序中断后欲显示的数据及其格式。 例如,如果希望每次程序中断后可以看到即将被执行的下一条汇编指令,可以使用命令 “display/i$pc” 其中$pc代表当前汇编指令,/i表示以十六进行显示。 当需要关心汇编代码时,此命令相当有用。 undispaly,取消先前的display设置,编号从1开始递增。 i Info的简写,用于显示各类信息,详情请查阅“helpi”。 q Quit的简写,退出GDB调试环境。 Linux下使用gdb进行程序调试(以一个C语言程序为例)。 首先使用gcc进行编译如下: [Root@linuxroot]#gcctt.c-ott-g 然后进入gdb,会看到说明,接着加载已经编译过的C文件,加载成功后使用r命令运行结果如图3-4所示。 图3-4gdb调试程序 使用gdb进行调试可以进行断点设置,在第21行设置一个断点(b命令),然后使用r命令进行运行,当程序运行至断点时程序停止,继续运行可以使用c命令,运行过程如图3-5所示。 图3-5断点设置 第四章进程控制和通信 4.1进程控制 利用signal和kill实现软中断通信 kill() 系统调用格式: intkill(pid,sig) 参数定义: intpid,sig; 其中,pid是一个或一组进程的标识符,参数sig是要发送的软中断信号。 (1)pid>0时,核心将信号发送给进程pid。 (2)pid=0时,核心将信号发送给与发送进程同组的所有进程。 (3)pid=-1时,核心将信号发送给所有用户标识符真正等于发送进程的有效用户标识号的进程。 signal() 预置对信号的处理方式,允许调用进程控制软中断信号。 singal函数的原型void(*signal(int signo,void(*func)(int)))(int) 这是Linux中的signal interface function,返回值类型: void(*sig....) 系统调用格式: signal(sig,function) 头文件为: #include 参数定义: signal(sig,function) intsig; void(*func)() 其中sig用于指定信号的类型,sig为0则表示没有收到任何信号.function: 在该进程中的一个函数地址,在核心返回用户态时,它以软中断信号的序号作为参数调用该函数,对除了信号SIGKILL,SIGTRAP和SIGPWR以外的信号,核心自动地重新设置软中断信号处理程序的值为SIG_DFL,一个进程不能捕获SIGKILL信号。 function的解释如下: (1)function=1时,进程对sig类信号不予理睬,亦即屏蔽了该类信号; (2)function=0时,缺省值,进程在收到sig信号后应终止自己; (3)function为非0,非1类整数时,function的值即作为信号处理程序的指针。 4.2Linux下进程控制实现 程序代码: #include #include
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Linux 操作系统 报告