[工学]LINUX实验教程.doc

上传人:sccc 文档编号:4532057 上传时间:2023-04-26 格式:DOC 页数:87 大小:355KB
返回 下载 相关 举报
[工学]LINUX实验教程.doc_第1页
第1页 / 共87页
[工学]LINUX实验教程.doc_第2页
第2页 / 共87页
[工学]LINUX实验教程.doc_第3页
第3页 / 共87页
[工学]LINUX实验教程.doc_第4页
第4页 / 共87页
[工学]LINUX实验教程.doc_第5页
第5页 / 共87页
点击查看更多>>
资源描述

《[工学]LINUX实验教程.doc》由会员分享,可在线阅读,更多相关《[工学]LINUX实验教程.doc(87页珍藏版)》请在三一办公上搜索。

1、第1章 Linux系统概述11关于LinuxLinux于1991年诞生于芬兰。大学生Linus Torvalds,编写了一个小的操作系统内核,这就是Linux的前身。Linus Torvalds将操作系统的源代码在Internet上公布,受到了计算机爱好者的热烈欢迎。各种各样的计算机高手不断地为它添加新的特性,并不断地提高它的稳定性。1994年, Linux 1.0 正式发布。现在,Linux已经成为一个功能强大的32位的操作系统。1984年,由Richard Stallman组织成立了Free Software Foundation(FSF)组织以及GNU项目,并不断地编写创建GNU程序(程

2、序的许可方式均为GPL: General Public License)。GNU项目的目的是提供一个免费的类Unix的操作系统以及在上面运行的应用程序。GNU项目在初期进展并不顺利,特别是操作系统内核方面。Linux适时而出,由于它出色的性能,使它成为GNU项目的操作系统的内核。从此以后, GNU项目进展非常迅速:全世界的计算机高手已经为它贡献了非常多的应用程序和源代码。严格地说, Linux只是一个操作系统内核。比较正式的称呼是GNU/Linux操作系统,它使用Linux内核。GNU的意思是GNUs not Unix(GNU不是Unix)一种诙谐的说法,意指GNU是一种类Unix的操作系统。

3、为了保证GNU的软件可以自由使用和拷贝,GNU组织制订了一个新的法律许可协议:GPL协议。该协议的主要特点:允许软件被自由地拷贝允许软件被自由地修改允许软件被修改后自由地传播,但必须提供源代码。很多软件制作者都遵循GPL协议,无数的软件开发人员和软件爱好者将自己的软件通过GPL分布,公布在互联网上,从而形成了一个庞大的GNU社区。Linux是遵从GPL协议的软件,也就是说,只要遵从GPL协议,就可以免费得到它的软件和源代码,并对它进行自由地修改。然而,对一般用户来说,从Internet或者其他途径获得这些源代码,然后对它们进行编译和安装是技术难度很高的工作。一些应用程序的安装也都非常复杂。因而

4、,有一些公司如Red Hat、VA等开始介入Linux的业务。它们将Linux操作系统以及一些重要的应用程序打包,并提供较方便的安装界面。同时,还提供一些有偿的商业服务如技术支持等。这些公司所提供的产品一般称为Linux的发布版本。目前比较著名的Linux发布版本有以下几种:Red Hat最著名的Linux服务提供商,Intel、Dell等大公司都对其有较大投资,该公司收购了开放源代码工具供应商CyGNUs公司。Red Hat最早由Bob Young和Marc Ewing在1995年创建。而公司开始真正步入盈利时代,归功于收费的Red Hat Enterprise Linux(RHEL,Red

5、 Hat的企业版)。而正统的Red Hat版本早已停止技术支持,最后一版是Red Hat 9.0。于是,Red Hat分为两个系列:由Red Hat公司提供收费技术支持和更新的Red Hat Enterprise Linux,以及由社区开发的免费的Fedora Core。Fedora Core 1发布于2003年年末,而FC的定位便是桌面用户。FC提供了最新的软件包,同时,它的版本更新周期也非常短,仅六个月。Fedora 是一个操作系统和平台,基于 Linux。它允许任何人自由地使用、修改和重发布,无论现在还是将来。它由一个庞大的社群开发,这个社群的成员以自己的不懈努力,提供并维护自由、开放源

6、码的软件和开放的标准。Fedora Core 是 Fedora Project 的一部分,得到了 Red Hat, Inc. 的支持。可运行的体系结构包括 x86, x86_64 和 PPC。SlackWare历史比较悠久,有一定的用户基础。SUSE在欧洲知名度较大。Turbo Linux在亚洲,特别是日本用户较多。该公司在中国推出了TurboLinux 4.0、4 .0 2和6 .0的中文版,汉化做得很出色。Debain完全由计算机爱好者和Linux社区的计算机高手维护的Linux发布版本。Linux进入中国后,在我国计算机界引起了强烈的反响,也出现了许多汉化的Linux发布版本,影响较大的

7、有以下几种:Xteam Linux北京冲浪平台公司推出的产品,中国第一套汉化的Linux发布版本。BluePoint1999年底正式推出的产品,内核汉化技术颇受瞩目。红旗Linux中国科学院软件研究所和北大方正推出的Linux发布版本。从本质上来说,上面所有发布版本使用的都是同样的内核(或者版本略有不同),因而,它们在使用上基本上没有什么区别。但它们的安装界面不一样,所包含的应用程序也有所不同。Linux之所以大受欢迎,不仅仅因为它是免费的,而且还有以下原因:1) Linux是一个真正的抢占式多任务、多线程、多用户的操作系统。2) Linux性能非常稳定,功能强劲,可以与最新的商用操作系统媲美

8、。3) Linux有非常广泛的平台适应性。它在基于Intel公司的x 8 6(也包括AMD、Cyrixx、IDT)的计算机、基于Alpha的计算机,以及苹果、Sun、SGI等公司的计算机上都有相应的发布版本,甚至在AS/400这样的机器上都能找到相应的版本。Linux还可以在许多PDA和掌上电脑以及嵌入式设备上运行。4) 已有非常多的应用程序可以在Linux上运行,大多数为SCO Unix开发的应用程序都能在Linux上运行(借助于i B C S软件包),甚至还比在SCO Unix上运行速度更快。借助Dosemu,可以运行许多DOS应用程序,而借助Wabi或Wine,还可以运行许多为Windo

9、ws设计的软件。5) Linux是公开源代码的,也就是说,不用担心某公司会在系统中留下后门(软件开发商或程序员预留的,可以绕开正常安全机制进入系统的入口)。6) 只要遵从GPL协议,就可以自由地对Linux进行修改和剪裁。当然, Linux的优点决不止于此。对计算机专业人员来说, Linux及其相关应用程序也是学习编程的绝好材料,因为这些软件都提供了完整的源代码。Linux的出现为我国软件产业赶超世界先进水平提供了极好的机遇,也为我国软件产业反对微软的垄断提供了有力的武器。12 关于shellShell是一种具备特殊功能的程序,它是介于使用者和 UNIX/Linux 操作系统之核心程序(ker

10、nel)间的一个接口。操作系统是一个系统资源的管理者与分配者,当用户有需求时,得向系统提出;从操作系统的角度来看,它也必须防止使用者因为错误的操作而造成系统的伤害。众所周知,对计算机下命令得通过命令(command)或是程序(program);程序有编译器(compiler)将程序转为二进制代码,可是命令呢?其实shell 也是一个程序,它由输入设备读取命令,再将其转为计算机可以了解的机器码,然后执行它。 各种操作系统都有它自己的 shell,以 DOS 为例,它的 shell 就是 文件。如同 DOS 下有 NDOS,4DOS,DRDOS 等不同的命令解译程序可以取代标准的 ,UNIX 下除

11、了 Bourne shell(/bin/sh) 外还有 C shell(/bin/csh)、Korn shell(/bin/ksh)、Bourne again shell(/bin/bash)、Tenex C shell(tcsh) 等其它的 shell。UNIX/Linux 将 shell 独立于核心程序之外,使得它就如同一般的应用程序,可以在不影响操作系统本身的情况下进行修改、更新版本或是添加新的功能。(1)Shell 的激活 在系统启动的时候,核心程序会被加载内存,负责管理系统的工作,直到系统关闭为止。它建立并控制着处理程序,管理内存、档案系统、通讯等等。而其它的程序,包括 shell

12、程序,都存放在磁盘中。核心程序将它们加载内存,执行它们,并且在它们中止后清理系统。Shell 是一个公用程序,由使用者login时启动,Shell 提供使用者和核心程序产生交谈的功能。 当用户(login)时,一个交谈式的shell 会跟着启动,并提示用户输入命令。在用户键入一个命令后,接着就是 shell 的工作了,它会进行: 1. 语法分析命令列 2. 处理万用字符(wildcards)、转向(redirection)、管线(pipes)与工作控制(job control) 3. 搜寻并执行命令 当用户刚开始学UNIX/Linux系统时,大部分的时间会花在于提示符号(prompt)下执行命

13、令。 如果用户经常会输入一组相同形式的命令,可能会想要自动执行那些工作。如此,可以将一些命令放入一个文件(称为script),然后执行该文件。一个shell 命令文件很像是 DOS 下的批处理文件(如 Autoexec.bat):它把一连串的 UNIX 命令存入一个文件,然后执行该文件。较成熟的命令文件还支持若干现代程序语言的控制结构,如条件判断、循环、测试、传送参数等。要写命令文件,不仅要学习程序设计的结构和技巧,而且要对 UNIX/Linux 公用程序及如何运作需有深入的了解。有些公用程序的功能非常强大(例如 grep、sed 和awk),它们常被用于命令文件来操控命令输出和档案。在用户对

14、那些工具和程序设计结构变得熟悉之后,就可以开始写命令文件。当由命令文件执行命令时,此刻,就已经把 shell 当做程序语言使用了。 (2)Shell 的生平 第一个有重要意义的,标准的 UNIX shell 是V7(AT&T的第七版)UNIX,在1979 年底被提出,且以它的创造者 Stephen Bourne 来命名。Bourne shell 是以 Algol 这种语言为基础来设计,主要被用来做自动化系统管理工作。C shell 是在加州大学柏克来分校于70年代末期发展而成,而以2BSD UNIX的部分发行。这个 shell 主要是由 Bill Joy 写成,提供了一些在标准 Bourne

15、shell 所看不到的额外特色。C shell 是以C 程序语言作为基础,且它被用来当程序语言时,能共享类似的语法。它也提供在交谈式运用上的改进,例如命令列历程、别名和工作控制。因为 C shell 是在大型机器上设计出来,且增加了一些额外功能,所以 C shell 有在小型机器上跑得较慢,即使在大型机器上跟 Bourne shell 比起来也显得缓慢。 有了 Bourne shell 和 C shell 之后,UNIX 使用者就有了选择,且争论那一个 shell 较好。AT&T 的David Korn 在 80 年代中期发明了 Korn shell,在 1986 年发行且在 1988 年成为

16、正式的部分 SVR4 UNIX。Korn shell 实际上是 Bourne shell 的超集,且不只可在 UNIX 系统上执行,同时也可在 OS/2、VMS、和 DOS上执行。它提供了和 Bourne shell 向上兼容的能力,且增加了许多在 C shell 上受欢迎的特色,更增加了速度和效率。 Korn shell 已历经许多修正版,要找寻您使用的是那一个版本可在 ksh 提示符号下按 Ctrl-v 键。 三种主要的 Shell 与其分身 在大部份的UNIX系统,三种著名且广被支持的shell 是Bourne shell(AT&T shell,在 Linux 下是BASH)、C she

17、ll(Berkeley shell,在 Linux 下是TCSH)和 Korn shell(Bourne shell的超集)。这三种 shell 在交谈(interactive)模式下的表现相当类似,但作为命令文件语言时,在语法和执行效率上就有些不同了。 Bourne shell 是标准的 UNIX shell,以前常被用来做为管理系统之用。大部份的系统管理命令文件,例如 rc start、stop 与shutdown 都是Bourne shell 的命令档,且在单一使用者模式(single user mode)下以 root 登录时它常被系统管理者使用。Bourne shell 是由 AT&

18、T 发展的,以简洁、快速著名。 Bourne shell 提示符号的默认值是 $。 C shell 是柏克莱大学(Berkeley)所开发的,且加入了一些新特性,如命令列历程(history)、别名(alias)、内建算术、档名完成(filename completion)、和工作控制(job control)。对于常在交谈模式下执行 shell 的使用者而言,他们较喜爱使用 C shell;但对于系统管理者而言,则较偏好以 Bourne shell 来做命令档,因为 Bourne shell 命令档比 C shell 命令档来的简单及快速。C shell 提示符号的默认值是 %。Korn s

19、hell 是Bourne shell 的超集(superset),由 AT&T 的 David Korn 所开发。它增加了一些特色,比 C shell 更为先进。Korn shell 的特色包括了可编辑的历程、别名、函式、正规表达式万用字符(regular expression wildcard)、内建算术、工作控制(job control)、共作处理(coprocessing)、和特殊的除错功能。Bourne shell 几乎和 Korn shell 完全向上兼容(upward compatible),所以在 Bourne shell 下开发的程序仍能在 Korn shell 上执行。Kor

20、n shell 提示符号的默认值也是 $。在 Linux 系统使用的 Korn shell 叫做 pdksh,它是指 Public Domain Korn Shell。查看登入的SHELLecho $SHELL列出系统中可用的SHELLcat /etc/shells改变登入的SHELLchsh13 常用的Linux命令Linux命令是区分大小写的,通常Linux命令是小写的。1Linux 的 联机帮助man 命令名称2Linux文件系统文件是信息存储的方式。Linux系统几乎所有的东西都以文件的形式存在,从键入的命令,所使用的程序、所存储的数据到所访问的设备都包含在文件中。(1) 文件系统类型

21、常用的文件类型有:文本文件数据文件源代码文件可执行的程序文件SHELL程序文件链接文件设备文件等。Linux文件系统采用树状的多层次的目录结构。Linux支持多种文件系统类型,包括:minixextext2vfatiso9000msdosprocnfshpfsufs等等。(2) 文件系统中重要的目录及其内容。/:根目录/bin:包含二进制可执行的程序文件,是系统必须的文件。/sbin:存放系统启动、关机和修改文件系统装配问题的命令和脚本。只有超级用户才能使用。/dev:包含主机特定的设备文件,用户可以使用这些文件访问设备。/etc:包含主机特定的系统和应用程序配置文件。此目录中的信息对于系统的

22、操作而言是非常重要的。如:passwd、host、fstab等。/boot:系统引导时加载器使用的文件。/lib:存放文件系统中的程序运行所需要的库文件。/home:用户主目录。/kernal:包含启动系统所需的内核配置和二进制文件。 /lost+found:丢失文件的目录。/opt:作为安装应用程序的标准目录。/mnt:管理员临时安装文件系统的安装点。如安装软盘、光驱等。/usr:此目录中存有命令、库和文档等。/temp:存放各种临时文件。/proc:一个虚拟的目录,存放当前内存的映像,由内核自动产生。/var:存放一些会随时改变的文件。如spool目录、其它的暂存文件。(3) 创建文件系统

23、要在硬盘上创建文件系统,首先要进行硬盘分区。硬盘分区的工具有很多,如:fdisk、Cfdisk等。可以用fdisk l显示所有分区的信息。了解每一项的含义。然后用mkfs命令创建文件系统。如:mkfs -v -t ext3 -c /dev/hda3以上命令在磁盘分区/dev/hda3上建立ext3类型的文件系统,同时检查磁盘坏块(-c参数),并显示详细信息(-V参数)(4) 文件系统的安装和卸载Linux文件系统的组织方式和DOS、Windows文件系统组织方式不同。Window把磁盘分区后用不同的驱动器名字来命名,如C:、D:E:等等,称作逻辑盘,每个逻辑盘有自己的根目录。 而Linux系统

24、只有一个根目录或者说只有一个目录树。不同的磁盘或同一磁盘的不同分区都是这个目录树的一部分。象软盘、光盘等文件系统,若要使用,需使用mount命令手工安装。可以使用mount命令安装某个文件系统,命令格式:mount 参数 设备名 安装点umount 设备名或安装点用 t vfstype选项可以指定安装的文件系统类型。例如:安装DOS 软盘,将当前目录下的所有文件复制到软盘上,然后卸载软盘。mount t msdos /dev/fd0 /mnt/floppy /注:/dev/fd0为软盘设备文件。cp * /mnt/floppyumount /dev/fd03ls命令文件显示命令ls 选项 文件

25、目录列表常用的选项:自己查资料。Linux 支持多种文件类型,每一类用一个字符来表示。-:表示常规文件d:表示目录b:表示块特殊设备p:表示有名管道s:表示信号灯m:表示共享存储器文件对不同的用户具有不同的权限:r:读;w:写;x:执行;-:没有相应的权限。举例:ls l 以长格式显示当前目录下的文件列表ls l /home 以长格式显示/home目录下的文件列表查找资料,了解文件列表中每一项的含义。4pwd命令显示当前的工作目录5cd 命令改变工作目录。例如:cd / 将根目录设置成当前工作目录。cd /home 将home目录设置成当前工作目录。cd . 回到上一级目录。6创建目录 mkd

26、ir 目录名例如:mkdir dir1 在当前目录下创建子目录dir1。mkdir p dir2/bak在dir2 目录下创建bak目录,若dir2目录不存在,则创建dir2目录。-p参数的含义:建立目录时,若父目录不存在,则可以和子目录一同创建。7删除目录 rmdir 目录名mkdir 参数 目录名例如:mkdir dir1 删除当前目录下的dir1子目录mkdir p dir2/bak 删除当前目录下的dir2/bak子目录时,若dir2目录下没有其它内容,则一同删除。-p :若被删除目录的父目录无其它内容则一同删除。8拷贝文件 cp例如:cp /etc/inittab inittab.b

27、ak将/etc目录下的inittab文件拷贝到当前目录下,文件名为inittab.bak。cp R /etc/rc.d /home/longkey将/etc目录下的目录rc.d(含rc.d下的文件及子目录)拷贝到/home/longkey目录下。-R参数:递归复制目录,即包含目录下的各级子目录。-f 参数:如果目标文件或目录存在,先删除再拷贝(不提示用户)-i参数:如果目标文件或目录存在,提示是否覆盖已有文件。9删除文件或目录rm-R参数:递归删除目录,即包含目录下的各级子目录。-f 参数:删除时不提示用户-i参数:删除时提示用户。例如:rm * 删除当前目录下的所有文件,但子目录和以.开头的

28、文件(隐含文件)不删除。rm ir bak 删除当前目录下的子目录bak,包含其下所有的文件和子目录,并提示用户。10.移动文件 mv例如:mv /home/txtbak /bak将/home目录下的文件txtbak移动到/bak目录下。-f 参数:移动时不提示用户-i参数:移动时提示用户。11显示文本文件的内容 cat 用来将文本文件的内容显示在屏幕上。如:cat /etc/passwd在linux系统中,执行一个终端命令行时,通常会自动打开三个文件:标准输入文件(stdin,通常对应键盘)、标准输出文件(stdout)和标准错误输出文件(stderr),后两个文件通常对应屏幕。cat命令通

29、常会从命令行给定的文件中读取内容显示在屏幕上,但当命令行没有给出文件时,它将从标准输入文件,即键盘输入中读取信息显示在屏幕上。如:cat12Linux的输入输出重定向 输入重定向:就是把命令的标准输入重新定向为指定的文件。例如wc 命令统计指定文件包含的行数、单词数和字符数。wc /etc/passwd若仅在命令行上键入 wc,wc将等待用户输入信息,且键盘输入的信息出现在屏幕上,直到用户按下ctrl+d,wc才将统计结果显示在屏幕上。另一种将指定文件传给wc的方式是使用重定向。如wc d.out 或ls l d.out13管道管道 |:将一个程序或命令的输出作为另一个程序或命令的输入。例如:

30、cat sample.txt|grep “High”|wc l管道将cat的输出送给grep命令,该命令在输入中查找包含单词“High”的行,这个输出又送给wc命令,该命令统计输入中的行数。14文件的打包和压缩命令从internet上下载文件时,很多文件都是打包或压缩文件,例如:wb.txt.gz, longkey.tar.gz相关命令:zip ,gzip, tar例如:(1)把/home/longkey目录下的所有文件和子目录备份到longkey.tar文件中。 tar cvf longkey.tar /home/longkey从longkey.tar文档中恢复数据,放在当前目录下。tar

31、xzf longkey.tar.gz(2)把/home/longkey目录下的所有文件和子目录以gzip压缩文件的形式备份到longkey.tar.gz文件中。 tar czvf longkey.tar.gz /home/longkey从longkey.tar.gz文档中恢复数据,放在当前目录下。tar xzf longkey.tar.gz注意:在释放文件时,若要指定目录,可加-C 目录名选项15改变文件的存取权限命令改变文件存取权限的用户只能是root用户或文件主用户命令:chmod who operator pemission filename(符号模式)或chmod mode filen

32、ame(绝对模式)who (u ,g, o,a)Operator(+,-,=)Pemission(r,w,x,s,t)例如:chmod u=rwx,g+w,o+r myfilechmod u+s,g+x,o+x myfile 组用户和其它用户执行这个文件myfile时,在运行中具有用户主权限。16组和用户的管理用户管理LINUX下的用户可以分为三类:超级用户、系统用户和普通用户。超级用户用户名:root, 具有一切权限。一般只有在进行系统维护(如创建用户)和其它必要的情况下才使用超级用户身份登录,以避免系统出现安全问题。系统用户:是LINUX系统正常工作所必须的内建的用户,主要是满足相应的系统

33、进程对文件属主的要求而建立的,系统用户不能用来登录。普通用户:大多数用户属于此类。每个用户都有一个数值与之对应,称为UID。超级用户UID:0系统用户UID:1-499普通用户UID:500-60000关于用户的信息,LINUX放在文件/etc/passwd中。组的管理 LINUX的组有私有组、系统组、标准组。 私有组:建立用户帐号时,若没有指定帐号所属的组,系统会建立一个组名和帐号名相同的组,称为私有组。该组只容纳一个用户 标准组可容纳多个用户。 系统组是LINUX系统正常运行所必须的,安装系统或添加新的软件包会自动建立系统组。 LINUX关于组的信息放在文件/etc/group中例如:ca

34、t /etc/group相关的命令:添加一个新组:groupadd 命令组属性的修改:groupmod 命令显示/etc/group文件的内容,解释每一行每一列的含义创建新的用户 useradd 修改用户密码passwd改变用户的属性 usermod显示/etc/passwd文件,解释每一行每一列的含义注:这些命令都可以通过查看联机帮助学习17建立链接ln命令Ln 参数 源文件或目录 链接名-s参数:建立符号链接。不加参数建立的是硬链接。例如:ln /home/test.txt test1在当前目录下建立/home目录下的test.txt文件的硬链接,链接名为test.命令ls li /hom

35、e在文件列表中可以看到/home目录下的test.txt文件的链接计数增1。ln s /home/test.txt test2在当前目录下建立/home目录下的test.txt文件的符号链接,链接名为test2。用ls li显示当前目录下的文件列表,注意test1和test2文件的不同。18进程的启动进程的启动有两种方式:手工启动和调度启动。手工启动又分为前台启动和后台启动。用户直接运行一个程序或执行一个命令时,就启动了一个新的前台进程。前台进程的特点:进程不结束,终端不出现提示符。有些进程耗时长,用户不着急等待结果,就可以在运行的程序或启动的命令后加&,表示以后台方式运行程序或执行命令。如

36、/root/test & 以后台方式运行test程序。后台进程的特点,当进程启动后,不必等待进程结束,终端马上会出现提示符。19报告进程状态的ps命令语法:ps 选项-e:显示所有进程-f:全格式-h:不显示标题-l:给出长列表-a:显示终端上的所有进程,包括其他用户的进程。查看当前进程的情况。通常可用ps命令监视后台进程的工作情况。因为后台进程是不与屏幕、键盘这些标准输入输出设备进行通信的,所以需要检测其情况,可使用ps命令。例如: locate lib |less & ps (locate命令查找绝对路径中包含指定字符串的文件,less命令逐页显示文件中的内容,|为管道,locate指令的

37、输出作为less指令的输入。&表示以后台方式运行命令。)20发送信号的kill命令如果一个指令的执行时间太长,或是屏幕上的输出太多,可以按下ctrl-c终止执行。但是只对在前台执行的进程有效,后台执行的进程不会接收键盘的按键输入,这时可以用kill命令杀死进程。例如:kill -9 进程PID一般先用ps命令列出各进程的pid,然后用kill命令杀死指定的进程。kill命令还可以向进程发送信号kill l 可以显示kill命令所能发送的信号种类。kill 命令的一般格式:kill 参数 进程1,进程2.例如:kill -9 835(值为9的信号表示强制中断并杀死进程)实验测试命令1. 先用ps

38、命令列出当前的进程信息。ps2. 后台执行locate lib |less &3. ps4. kill -9 locate进程的pid5. kill -9 less进程的pid6. ps7. kill -9 shell进程的pid第2章 基于Linux的程序设计基础大多数Linux软件是经过自由软件基金会(Free Software Foundation)提供的GNU公开认证授权的,因而被称为GNU软件。GNU软件免费提供给用户使用,并被证明是可靠和高效的。许多流行的Linux 实用程序如C编译器、SHELL和编辑器都是GNU软件应用程序。在Linux操作系统下进行C程序开发的标准主要有两个:

39、ANSI C 标准和POSIX标准。ANSI C 标准是ANSI(美国国家标准局)于1989年制订的C 语言标准,后来被ISO接受为标准,因此也称ISO C。POSIX标准是最初由IEEE开发的标准族,部分已被ISO接受为国际标准。21 关于编辑器1VIM编辑器VIM简介VI(Visual Interface)是Linux世界最常用的全屏编辑器,所有的Linux都提供该编辑器,它在Linux中的地位如同EDIT在DOS中的地位。VIM是VI的加强版,与VI完全兼容。具体使用可查找资料,通过上机练习掌握。2emacs编辑器emacs编辑器是由Richard Stallman发明的,他创立了FSF

40、(自由软件基金会)。Emacs是 Linux下非常强大的编辑工具,详细使用可参看emacs的在线手册。3图形用户界面下的文本编辑器gedit建议编程时使用该编辑器。22 关于编译器 GNU CC(GCC)GNU CC(通常称为GCC)是GNU项目的编译器套件。它能够编译C、C+和Objective C语言编写的程序。GCC能支持多种不同的C语言变体,比如ANSI C和传统(Kernighan和Ritchie, K&R)C。GCC的编译过程分为四个阶段:预处理,编译,汇编,链接。例如:C 源程序的编译 gcc o hello hello.c若程序中用到数学函数,必须和函数库连接,除了在源文件中加

41、入#include 外,在编译时加上 lm参数。在linux字符命令下运行程序文件:./文件名。例如: ./ hello23 关于调试工具 GDBLinux系统中包含了GNU调试程序,它是一个用来调试C和C+程序的调试器,可以使程序开发者在程序运行时观察程序的内部结构和内存的使用情况,功能:运行程序,设置所有能影响程序运行的参数和环境。控制程序在指定的条件下停止运行。修改程序的错误,并重新运行程序。动态监视程序中变量的值。可以单步执行代码,观察程序的运行状态。关于GDB的详细内容和使用请查找资料,通过上机练习掌握。24 库函数和系统调用1库函数和系统调用库函数一般完成常见的特定功能,通常由某一

42、个组织制作发布,并形成一定的标准,可以应用于不同的平台而不需要做任何修改。例如C函数库能够被大多数C编译器支持。系统调用一般与操作系统相关,不同的操作系统使用的系统调用可能不同。如图所示为Linux函数库调用与系统调用示意图:应用程序库函数系统调用函数系统调用接口Linux内核系统资源用户模式内核模式库函数在实现时也可能需要使用系统调用,但它封装了系统调用的部分操作,用户不必关心它使用了哪些系统调用。2glibc函数库GNU的C 函数库glibc是Linux最重要的函数库,它定义了ISO C 标准指定的所有库函数,以及由POSIX或其它UNIX操作系统变种指定的附加特色,还包括与GNU系统相关

43、的扩展。3系统调用系统调用是操作系统提供给外部程序的接口。在C语言中,操作系统的系统调用通常通过函数调用的形式完成。在Linux系统中,系统调用函数定义在glibc中。4库文件的使用与创建在进行程序开发时,几乎都会使用printf()这样的函数完成特定的功能,但程序员自己并没有实现这些代码,这是因为库文件的支持。程序员在连接自己的应用程序时,编译器会查找到对应函数的连接位置,而在运行时,该程序将在当前系统内存空间中查找该函数在对应库文件中的位置(显然操作系统需要加载该库文件)库函数是由系统提供的供开发人员开发时调用的完成特定功能的函数,库文件由软件提供商的库函数集合,一般就是.o的目标文件。软

44、件提供商在提供库文件时还提供了该库文件的头文件(.h)和简要说明手册。在进行软件开发时,一般都需要使用库文件,主要原因:便于编程 对于部分经常使用的函数,C语言都提供了对应的库函数,便于开发。隐藏具体的函数实现 程序员在使用库文件时,只需包含所需函数所在的头文件,加载目标库文件,而不必关心该函数的具体实现,从而降低开发难度和开发周期。Linux环境下主要有两种库文件:静态库。在Linux中,以.a为后缀,应用程序从静态库中直接复制函数到二进制映象文件。共享库。在Linux中,libxxx.so.x.x 为命名格式。可执行文件在运行时将函数代码从共享库文件中读出,从而间接引用。Linux系统中使

45、用的系统库函数基本路径为:/lib; 系统必备共享库/usr/lib; 标准共享库和静态库/usr/local/lib; 本地函数库系统默认的搜索路径是/lib和/usr/lib25 Linux标准的I/O流对于开发人员来说,计算机系统提供了两种接口:系统调用和库函数。一般情况下,无论是编写系统库还是应用程序,都离不开I/O这个重要环节。相对于低级的I/O操作(即系统调用级的I/O),标准I/O库函数处理了很多细节,如缓冲分配等。使用缓冲的好处之一是减少系统调用的开销,当然缓冲也会带来一些意想不到的结果,比如本来应该输出的内容却没有输出,或者在处理数据边界时产生数据丢失等问题。考虑到程序代码的可移植性,开发人员在编写代码时尽可能使用标准库函数。头文件中包含了标准C的I/O库,标准C的I/O库在所有通用计算机上的C语言实现都是相同的。系统级的I/O操作函数都是针对文件描述符的。即打开一个文件时会返回一个文件描述符,然后可以直接对文件描述符进行操作。对于标准的I/O函数来说,打开或创建一个文件时,会返回一个指向FILE对象的指针。该FILE对象通常是一个结构体,它包含了输入输出函数库为管理该FILE对象所需要的尽可能多的信息,包括用于实际输入输出文件的文件描述符、指向流缓存的指针、缓存的长度、当前在缓存中的字符数以及出错标志等。每一个进程在开始运行时都要

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号