沈阳航空航天大学
Linux系统操作实习报告
院(系):计算机学院 专 业:计算机科学与技术 班 级:04010101 学 号:2010040101015 姓 名:刘航源 指导教师:李晓明 完成日期:2013年7月9日
7月5日实习内容
今天在李老师的带领下,我们初步了解了关于Linux系统的产生背景,及其与Windows系统一些不同。我还了解到,Linux系统是开源的操作系统。做完简单介绍后,我们便开始学习了Linux系统里的一些基本的终端命令,下面将这些命令做一些简单的罗列。
1.系统关闭命令及用法:shutdown
命令格式:shutdown [选项] [时间] [警告信息] 命令中各选项的含义为:
- k 并不真正关机而只是发出警告信息给所有用户
- r 关机后立即重新启动
- h 关机后不重新启动
- f 快速关机重启动时跳过fsck - n 快速关机不经过init 程序 - c 取消一个已经运行的shutdown
2.重启系统命令及用法:reboot
格式:reboot [-n] [-w] [-d] [-f] [-i] 主要参数
-n: 在重开机前不做把记忆体资料写回硬盘的动作。
-w: 并不会真的重开机,只是把记录写到/var/log/wtmp文件里。 -d: 不把记录写到/var/log/wtmp文件里(-n这个参数包含了-d)。 -i: 在重开机之前先把所有与网络相关的装置停止。 3.列出目录内容命令:ls Ls:ls [选项] [文件]
ls -a 列出当前目录下的所有文件,包括以.头的隐含文件
ls –l|more 列出当前目录下文件的详细信息,more是分页显示,按空格继续显示下一个画面,按Q键停止显示 4.显示当前路径命令:pwd 5. 改变工作目录命令cd
1
格式:cd [路径]
cd .. 回当前目录的上一级目录 cd - 回上一次所在的目录 cd ~ 或 cd 回当前用户的宿主目录 cd ~用户名 回指定用户的宿主目录 cd zkl 切换到当前目录下的zkl子目录 6.创建一个目录mkdir 格式:mkdir [选项] 目录名 例如:mkdir zk 选项 –m 设定权限
m模式:在建立目录时把按模式指定设置目录权限。该目录的权限分为:目录所有者的权限、组中其他人对目录的权限和系统中其他人对目录的权限。这三个权限分别用三个数字之和来表示:对目录的读权限是4、写权限是2、执行权限是1 7. 删除目录rmdir 格式:rmdir 目录名
一般情况下要删除的目录必须为空目录,如果所给的目录不为空,系统会报告错误。
8.作用设定文件或目录权限chmod 格式:chmod [选项] 文件和目录列表
说明:只有文件和目录的所有者才有权限修改其权限,超级用户可对所有文件或目录进行权限设置 字符串表示:rwxrw-rw-
三种不同的访问权限:w 写访问权限,r 读访问权限, x 执行权限 u(文件拥有者)g(所属用户组)o(其他用户)权限 9.复制命令cp
格式:cp [选项] 源文件或目录 目标文件或目录 选项:
2
-f 覆盖已经存在的目标文件而不提示 -i覆盖已经存在的目标文件要求用户确认
-r若给出的源文件是一个目录,递归复制该目录下所有子目录和文件,目标文件必须是目录 10.移动文件或目录mv 作用:
格式:mv [选项] 源文件或目录 目标文件或目录 选项:
-f 覆盖已经存在的目标文件而不提示 -i覆盖已经存在的目标文件要求用户确认 11. 删除文件或目录命令rm
格式: rm [选项] 源文件或目录 目标文件或目录 选项:
-f 覆盖已经存在的目标文件而不提示 -i覆盖已经存在的目标文件要求用户确认 12. 在指定目录中搜索文件 find 格式:find [路径] [选项] [文件] 选项:-name 支持通配符*和? 13. 连接命令 cat
作用:并显示一个和多个文件的内容 格式:cat [选项] 文件1 文件2 14. useradd 命令: 作用:创建一个新的用户 格式:useradd [选项] 用户名 15.passwd 命令 作用:为用户创建密码 格式:passwd [选项] 用户名
passwd -d用户名 删除用户密码也能登陆
3
passwd -S用户名 查询账号密码 16.who命令 作用:显示登录用户 17.su命令 作用:变更用户帐号 18.压缩解压命令gzip
作用:对文件进行压缩和解压缩 格式:gzip [选项] [文件名]
遇到的问题和解决方法
1. gzip压缩命令是压缩文件的命令,但是现在还不会新建文件。 解决方法:
问过老师后,知道用Vi编辑器可以新建并编辑一个文件。所以我先用Vi命令新建了一个chengyi.c文件,这样的话,就可以试着执行gzip命令了。
7月6日实习内容
今天主要学习的是Vi编辑器、GCC编译器和GDB调试工具的使用。首先Vi编辑器有三个主要的状态:vi分为三种状态,分别是命令模式、插入模式和底行模式,各模式的功能区分如下: 1. 命令行模式
控制屏幕光标的移动,字符、字或行的删除,移动复制某区段及进入插入模式,或者到底行模式。 2. 插入模式
只有在插入模式下,才可以做文字输入,按「ESC」键可回到命令行模式。 3 底行模式
将文件保存或退出vi,也可以设置编辑环境,如寻找字符串、列出行号„„等。
Vi的使用方法介绍:
1.在「命令行模式」下按一下字母「i」就可以进入「插入模式」,这时候你就可
4
以开始输入文字了。
2. 在「命令行模式(command mode)」下,按一下「:」冒号键进入「底行模式」,输入 q:表示不存盘强制退出vi
输入 w filename: 表示将文章以指定的文件名filename保存) 输入 wq :表示存盘并退出vi。
输入 set nu:在文件中的每一行前面列出行号。 输入 #:再按回车键就会跳到该行了 输入 /关键字:查找字符
对于GCC编译器,它是一个全功能的 ANSI C 兼容编译器. gcc 命令的基本用
法如下:
gcc [options] [filenames] options选项的用法如下:
-c参数,只编译生成一个目标文件“.o” -o 编译选项、生成可执行文件 -g打开程序的调试选项
至于GDB调试工具,它可以用来调试C和C++程序,它的主要功能:1.监视
程序中变量的值;2.在程序中设置断点;3.程序的单步执行。
下面来简单罗列一些gdb命令的缩略表示如下: 1.(gdb)l 2.(gdb)b 6 3.(gdb)r 4.(gdb)p j 5.(gdb)c 6.(gdb)n 7.(gdb)s
查看载入文件,l代表list 在第6行设置断点 运行程序 查看变量j的值
查看变量后,恢复程序继续运行 单步允许(不进入函数内部) 单步允许(进入函数内部)
8.(gdb)delete 1 删除断点1
遇到的问题和解决方法
1. 实验室电脑上的字符界面和图形化界面之间无法切换。
5
解决方法:
这是因为VWware和Windows之间切换的热键与Linux系统里的字符界面和图
形化界面切换键Ctrl+Alt重合了。通过改变VMware的菜单中的VM->preference->Hotkeys就可以了。
7月7日实习内容
今天主要学习的是Linux进程与线程编程。Linux系统是多任务操作系统,支持多进程,进程是程序的一次执行,进程在生存周期呈现各种状态及状态转换。
进程基本系统操作有: 1.getpid()
作用:进程用来取得自己的PID编号 2.getppid()
作用:取得该进程的父进程(parent) PID编号。 3.
fork()系统调用
作用:创建一个子进程
调用形式:pid_t fork(void) 4.exec系统调用
作用:以新进程替代原有进程,但PID保持不变
execl: 加上l表示要利用C的var args机制来传递程序参数.
execl()函数格式: int execl(const char *path, const char *arg, ...); execv:表示利用数组来传递程序参数.
execp:在环境变量PATH所指定的路径里查找外部程序.若没有加上p,则必须指定完整路径.
5.
exit()系统调用
作用:终止发出调用的进程 形式:void exit(int status);
函数中的参数status是返给父进程的状态值,取值范围:0-255
为了提高计算机的并行性,引入的线程。线程是系统调度的独立单位,但它不是系统资源分配的基本单位。Linux系统下的多线程遵循POSIX线程接口,称
6
为pthread。编写Linux下的多线程程序,需要使用头文件pthread.h。
线程基本系统操作有: pthread_create函数
形式:int pthread_create ((pthread_t *thread, pthread_attr_t *attr,void *(*start_routine) (void *), void *arg));
第一个参数*thread是一个pthread_t结构的指针,该结构用于保存线程的信息,函数创建成功时,将线程的标识符等信息写入*thread指针所指向的内存空间
第二个参数用来设置新线程属性,设为NULL时表示不改变线程的默认属性。 第三个参数表示需要传递的是start_routine()函数的地址。start_routine()函数的作用是启动线程。
第四个参数是start_routine()函数的参数。 2.pthread_exit()函数
作用:结束调用这个函数的线程
形式:void pthread_exit(void *retval); 3.pthread_join函数 作用:等待线程结束
形式:int pthread_join(pthread_t th, void **thread_return);
遇到的问题和解决方法
1. 不知道怎样合适地设置execvp 的参数才能调用自己写的函数。 解决方法:
通过老师讲解,我们知道了如果execvp函数的参数是内嵌函数的函数名
的话,就可以直接写函数名,例如:
char *arg_list[] = { \"ls\execvp(\"ls\
但是我想将自己写的函数设置为execvp函数的参数,试过很多次之后还是失败了。通过老师的讲解我理解知道了,按照我的要求的话,execvp函数的第一个参数应该是我的程序的完全路径名。经过修改后,果然能实现自己想要
7
色功能。
7月8日实习内容
今天主要学习了DNS服务器配置与管理和Web服务器的安装与配置。域名系统 (Domain Name System, DNS), 是一种分布式的、层次型的、客户机 /服务器模式的数据库管理系统。 DNS服务器功能主要有两个:
(1)将域名转换成IP 地址(俗称正向解析);
(2)将IP 地址转换成计算机的域名(俗称逆向解析)。 域名系统的结构
其结构类似于一棵倒置的树,由最顶端的根一层一层往下延伸。这样所组成的结构,即称为域的名称空间。
DNS域名解析的工作原理:
(1)DNS客户机提出域名解析请求,并将该请求发送给本地的域名服务器。 (2)当本地的域名服务器收到请求后,就先查询本地的缓存,如果有该记录项,则本地的域名服务器就直接把查询的结果返回。
(3)如果本地的缓存中没有该记录,则本地域名服务器就直接把请求发给根域名服务器,然后根域名服务器再返回给本地域名服务器一个所查询域(根的子域)的主域名服务器的地址。
4)本地服务器再向上一步返回的域名服务器发送请求,然后接受请求的服务器查询自己的缓存,如果没有该记录,则返回相关的下级的域名服务器的地址。
(5)重复第4步,直到找到正确的记录。
(6)本地域名服务器把返回的结果保存到缓存,以备下一次使用,同时还将结果返回给客户机。
访问www原理:
1. 上网用户在IE中输入网址(URL)回车; 2. 本地DNS服务器把URL中的主机解析成IP; 3. 根域名服务器根据IP向WWW服务器提出请求; 4. WWW服务器响应请求,返回内容。
8
7月9日上机考核内容
在实验室学习了4天,终于要考核了。今天的考核的要求是:在root目录下创建一个以自己学号为名字的子目录,并在这个子目录下创建两个子目录并分别命名为st1、st2;最后在st1目录下编写一个程序,这个程序从“求N!”和“在子进程中显示2013年7月的月历”两个题目中选一个。
从表面上看,这考察了我们学的改变工作目录命令cd,创建一个目录命令mkdir,以及Vi编辑器,GCC编译器的综合运用。
但是在最后检查结果的时候,老师还当场考察了我们对作用设定文件或目录权限chmod命令,列出目录内容命令ls等命令以及GDB调试器的综合运用。
心得体会
时间如涓涓流水缓缓地流过,一周的实习生活弹指一挥间已经划上句号。 在这一个星期的时间里留下了许多美好的回忆,让我们细细品味。在817的一个星期的实习生活,让我过得很充实,很快乐。老师们都十分热心,并将他们的一些教学经验传授给我们,我们所遇到的难题,他都很耐心的讲解;老师们都很热情负责,学习上给予指导,我们的成长与进步离不开老师们的帮助,在此特别要感谢老师们,祝愿老师能够工作顺利,事事如意。
虽然只有短短1周的实习时间,但是我在这段时间中有巨大的收获。首先,在工作、学习中要有良好的学习能力,要有一套学习知识的系统,遇到问题自己能通过相关途径自行解决能力。扎实的专业知识是你提高工作水平的坚实基础。在学校学习专业知识时,可能感觉枯燥无味,但当你工作以后,你才会发现专业知识是多么的重要。因为在工作、学习中遇到问题各种各样,并不是每一种情况都能把握,在这个时候要想把工作、学习做好一定要有良好的学习能力,通过不断的学习从而掌握相应技术,来解决工作中遇到的每一个问题。这样的学习能力,一方面来自向老师们的学习,向工作经验丰富的人学习。另一方面就是自学的能力,在没有他人帮助的情况下自己也能通过努力,寻找相关途径来解决问题。另外在实习之中自己也有很多不足的地方。例如:粗心大意,在实习过程中总是犯一些低级的错误。还有时候不懂得灵活运用某些命令和灵活配置Linux服务器。
9
所以我常提醒自己一定不要怕苦怕累,一定不要粗心大意,在掌握扎实知识的同时加强实践,做到理论联系实际、灵活运用。另一方面要不断的加强学习,学习新知识、新技术更好的为他人服务,为自己服务。实习是每一个大学毕业生必须拥有的一段经历,它使我们在实践中了解社会,让我们学到了很多在课堂上根本就学不到的知识,也打开了视野,增长了见识,为我们以后更好地服务社会打下了坚实的基础。这次实习生活,对我而言有着十分重要的意义。它不仅使我在理论上对Linux这个领域有了全新的认识,而且在实践能力上也得到了提高,真正地做到了学以致用。在一次次理论与实践相结合的过程中,在老师们悉心指导下,我不但对Linux有了系统的理解,从无数次的失败中吸取了宝贵的经验教训,而且随着时间的推移,自己的意志也得到了磨练,恐惧心理也逐渐地消失了。我时刻提醒自己,唯有不断努力,才能与时俱进。总之,这次实习的意义。感谢老师和同学在这段时间里对我的指导和帮助,我从中受益非浅。通过这次Linux服务器配置与管理的实习,一方面巩固了自己所学知识,提高了自己处理实际问题的能力;另一方面,它是我们从学校走向社会的一个过渡,它为我们顺利的走出校园,走向社会为国家、为人民更好服务做好了准备。
我们在大学里所学的知识应更多的与实践结合在一起,用实践来检验真理。使一个专科生具备较强的处理基本事务的能力与比较系统的专业知识,这才是我们学习与实习的真正目的。社会是不断发展变化,计算机技术更是日新月异的进步,我们只有不断学习学习再学习,才能保持自己不会落后。
10
因篇幅问题不能全部显示,请点此查看更多更全内容