Linux高级培训教程


红联的个人空间 Linux高级培训教程 作者:红联 Linux高级培训教程 ─────Linux实用学习教程(第一版)延续版 内容节选自: 《中文版Linux 桌面操作系统初级教程》郭守华 宋雪娇 编著 本书是在Linux实用学习教程(第一版)的基础上制做的。本书需要你对linux有一些了解及基础,同时也 是一本入门的经典合集。 内容基础,语言简短简洁,循序渐进的介绍Linux相关知识,内容包含:linux软件的安装和卸载、 Shell 命令行操作、linux编程基础、搭建个人网站。 Linux实用学习教程(第一版) 下载地址:http://www.linuxdiyf.com/bbs/thread-26554-1-2.html 红联Linux论坛制作:http://www.linuxdiyf.com/bbs 博客:http://www.linux286.com/6/12/?3 1/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 目录 Linux高级培训教程 linux软件的安装和卸载 TAR源码包 RPM包 软件包安装案例 例1:RAR for Linux 例2:WWW服务器软件Apache 例3:RedOffice办公套件 例4:C++集成开发环境Kdevelop 例5:“我爱背单词” 软件包管理器 Linux shell 简介 启动shell Shell命令基本规则:一般格式 命令补全 历史命令 联机帮助 常用的Shell命令-目录和文件操作 用户管理 文件的打包和解包2 远程Shell 登录4 磁盘信息的低级复制 使用缩略符号 输出重定向 管道 练习 远程Shell服务 安装rpm软件 linux编程基础 基于文本的C/C++ vi 最基本操作 C程序编译和运行 用GNU gdb 调试 C++程序的编译 Kdevelop-安装和启动 基本步骤 例1 单文件面向过程C++编程 例2 多文件面向对象的C++程序 例3 改进程序 例4 使用已有的源文件 搭建个人网站 用Apache 提供简单Web 服务 安装Apache 2.0.53 配置 启动和关闭 自动启动 支持PHP 的Web 网站 安装Apache 2.0.53 安装PHP 5.0.2 博客:http://www.linux286.com/6/12/?3 2/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 配置Apache 测试 FTP服务-安装ProFTP 1.2.9 基本配置 用户权限控制 启动 相关命令 海量Linux技术文章 博客:http://www.linux286.com/6/12/?3 3/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 Linux 高级培训教程 发布时间 :2006-11-15 11:13:22   新概念Linux学习电子书籍,给大家一个离线认识Linux与学习Linux的平台。   本书是在Linux实用学习教程(第一版)的基础上制做的。本书需要你对linux有一些了解及基础,同时也是一 本入门的经典合集。   内容基础,语言简短简洁,循序渐进的介绍Linux相关知识,内容包含:linux软件的安装和卸载、Shell 命 令行操作、linux编程基础、搭建个人网站。   注:本书籍会继续更新,下一版本将在这个版本当中更进。点击查看这本书籍是否最新版本。 http://www.linuxdiyf.com/zs/sj.htm   红联Linux论坛是致力于Linux技术讨论的站点,目前网站收录的文章及教程基本能满足不同水平的朋友学 习。 红联Linux门户: www.linux110.com 红联Linux论坛: www.linux110.com/bbs 红联 Linux 论坛大全,所有致力点都体现在这 http://www.linuxdiyf.com/bbs/rf/linux/07.htm                                  制作:红联核心组成员 祝您阅读愉 快! 博客:http://www.linux286.com/6/12/?3 4/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 linux 软件的安装和卸载 发布时间 :2006-11-15 11:13:47   概述   一般的Linux系统套件都包含了丰富的应用程序,但有时并不能满足实际需要。这时就要涉及到对低版本软 件的卸载、安装新版本软件,或者安装全新的应用软件。   简单的软件可能只包含一个可执行文件。但Linux系统中运行的大部分应用软件要复杂得多。   一般的应用程序或工具软件都会由多个可执行文件、配置文件、文档组成,有的还会涉及库文件。把所有 这些文件以及其存储位置的信息统一存储到在一起,就形成了安装包。讨论应用程序的安装和升级,就是要讨 论对这些安装包的安装和维护。   在linux系统中,安装包有多种格式。本章将一般性地介绍TAR 源码包和RPM包及其操作方法,实际使用 时,会出现这样那样的差异。读者应结合本章的实例,学习对软件包的管理和维护。   提示:对软件包的管理和维护,需要以root身份进行。 博客:http://www.linux286.com/6/12/?3 5/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 TAR 源码包 发布时间 :2006-11-15 11:14:12   tar源码包是在Linux环境下经常使用的一种源码发布的软件包。tar包文件一般都以“.tar.gz” 或“.tar.bz2 ”作为扩展名。比如, httpd-2.0.48.tar.gz,httpd 就是软件的名字,也就是提供WWW服务的Apache服务器 软件,2.0.48 则是这个安装包的版本号,.tar.gz 表示这是一个经过gzip 压缩的tar 包。再比如, kdevelop-3.1.0.tar.bz2,kdevelop 是软件的名字,这个软件提供了Linux 下的C++集成开发环境,版本为3.1.0 ,其扩展名 tar.bz2表明它是一个经过bzip 压缩的tar包。   用tar包安装软件的一般过程是:首先,解开tar包,解包后一般都会形成一个以软件名命名的目录;用其次 ,cd命令转移到这个目录,依次执行配置、编译和安装命令,安装工作就完成了;安装后,一般应清理一下安 装过程中的一些临时文件。   下面是解tar 包的命令例子:   tar -xvzf httpd-2.0.48.tar.gz   tar -xvjf httpd-2.0.52.tar.bz2   配置、编译和安装命令一般是如下三条:   ./configure   make   make install   清理临时文件的命令如下:   make clean   如果要卸载,则执行如下的命令。   make uninstall 博客:http://www.linux286.com/6/12/?3 6/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 RPM 包 发布时间 :2006-11-15 11:14:54   对于小型软件,按上述方法安装是可以的。但对于比较复杂的软件,运行configure命令前还需要设置很多 系统变量,configure命令本身也会要求提供复杂的参数。在安装前,必须自己检查文件的依赖关系。这对于初 学者是比较困难的。为了简化软件包的安装,就出现了一种被称为RPM 的软件包。RPM 包也是非常常见的一 种软件包。使用它安装软件,只需执行简单的命令即可。不需要人工检查依赖关系。操作RPM 包的命令无非 是安装和卸载两种。   安装的命令如下:   rpm -Uvh Kdevelope-3.1-1.rpm   其中,kdevelope-3.1-1.rpm 是相应的RPM 包文件名,对应的软件包名就是kdevelope,版本号为3.1-1。   如果要卸载kdevelope,则执行如下的命令。   rpm -e kdevelope 博客:http://www.linux286.com/6/12/?3 7/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 软件包安装案例 例 1: RAR for Linux 发布时间 :2006-11-15 11:15:14   要想在红旗Linux4.1桌面版操作rar 格式的压缩文件,必须安装RAR for Linux。RAR for Linux的软件包是 tar包,但其中并没有源代码。以RAR 3.41 for Linux为例,其安装包的文件名是rarlinux-3.4.1.tar.gz。安装此软 件的第一步是解压缩,用cd命令转移到rarlinux-3.4.1.tar.gz所在的目录,然后执行下面的命令。解压后,会形 成一个目录rar。   tar -xvzf rarlinux-3.4.1.tar.gz   由于此tar包不包含源代码(也就是说,这是一个编译好的软件安装包),因此不必编译,直接执行安装命令 就可以。用cd命令转移到解压生成的那个rar 目录执行安装命令。   make install   这样就算安装完了。从安装时的提示信息可以看出,安装程序只是把RAR运行所需的文件复制到特定的目 录。如果要卸载,把这些文件删除即可。 博客:http://www.linux286.com/6/12/?3 8/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 2:WWW服务器软件 Apache 发布时间 :2006-11-15 11:15:34 假设要建立一个个人WWW网站,允许别人能通过内部局域网访问这个网站,阅读文档或下载软件。网站的网 页文件都存在/mnt/WinD/www123下,首页文件名是index.html,可供下载的软件存在/data/pub下。要达到目 的,需要安装Apache服务器软件。下载得到Apache服务器软件的安装包是httpd-2.0.48.tar.gz,这是一个标准 的含有源码的tar包。其中,2.0.48是版本号。按典型的tar 源码包的安装方法即可。 具体步骤如下:1、解压缩。用cd 命令转移到httpd-2.0.48.tar.gz所在的目录然后执行: tar -xvzf httpd-2.0.48.tar.gz 解压后,会形成一个目录httpd-2.0.48 2、编译和安装转移到解压生成的那个httpd-2.0.48目录 依次执行如下命令: ./configure make make install make clean 这样就算安装完了。接下来要修改配置文件/usr/local/apache2/conf/httpd.conf来控制服务器软件,使其按要求 运行。 首先,修改Listen行,确定服务的IP 地址和端口号: Listen 10.1.30.144:80 说明:10.1.30.144是当前计算机的内网IP 地址,通过80 端口提供Web 服务。此项不特意设也可,默认端口就 是80。 其次,修改DocumentRoot ,设定主页所在的根目录。修改后形成如下两行: DocumentRoot "/mnt/WinD/www123" 第三,修改DirectoryIndex行,确认首页的文件名在其中。如果没有就追加上。 DirectoryIndex index.html index.html.var 第四,修改AddDefaultCharset行,将默认编码改为GB2312,这样保证主页上的汉字能正常显示。修改后的 博客:http://www.linux286.com/6/12/?3 9/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 AddDefaultCharset行是: AddDefaultCharset GB2312 第五,增加一个Alias,把/data/pub映射为网站根目录下的download目录。增加的内容如下: Alias /download/ "/data/pub/" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all 上述五步配置的目的是使局域网的其他计算机能用http://10.1.30.144/这个网址访问我的网站了。要下载存放在 /data/pub/的软件,则输入http://10.1.30.144/download/就可以看到文件列表。安装配置好之后,运行下面的命 令是就可以启动这个WWW服务器了。 /usr/local/apache2/bin/apachectl start 如果希望系统每次启动时自动启动httpd 服务器,则还要做如下工作。首先,拷贝apachectl 到/etc/rc.d/init.d/, 并更名为httpd ,相应的命令是: cp /usr/local/apache2/apachectl /etc/rc.d/init.d/httpd 然后,修改/etc/rc.d/init.d/httpd中的ARGV 行,改成: ARGV="start" 最后,在/etc/rc.d/rc5.d目录下,创建一个指向httpd 的连接。相应的命令是: ln /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd 为了保证在字符模式下启动红旗也能提供Web 服务,还要在/etc/rc.d/rc3.d目录下,创建一个指向httpd的连接 。相应的命令是: ln /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S85httpd 提示:若要重启动这个WWW服务器 /usr/local/apache2/bin/apachectl restart 若要关闭WWW 服务 /usr/local/apache2/bin/apachectl stop 博客:http://www.linux286.com/6/12/?3 10/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 3:RedOffice 办公套件 发布时间 :2006-11-15 11:15:55   目的:在Windows下,可以用MS office套件处理处理文档、表格、演示稿等文件。那么在Linux下也需要 这样的软件来处理类似的工作,并且这个软件一定能处理过去在Windows下生成的这类文件。操作:安装 RedOffice For Linux V2.0个人版。RedOffice个人版相对RedOffice标准版进行了一些功能裁减,这些功能是: 宏、数据源、文献数据库、新建标签/名片/HTML等文档类型的功能、自动文件助理、插入动态框、插入区域、 图像地图、插入Applet对象/Plug-in 对象、与Java/XML相关的功能。RedOffice个人版无需安装密码,没有时间 限制,可以由个人用户免费、自由地下载、安装和试用。下载得到的RedOffice 安装包名字为 RedOffice2.0_ForLinux.tar.gz,它虽然以.tar.gz结尾,但不是包含源代码的那种tar包,而是一个带安装向导的 软件包。   要解开包,只需执行下面的命令。解压后会形成一个名为RedOffice2.0_ForLinux的文件夹。   tar -xvzf RedOffice2.0_ForLinux.tar.gz   接下来在图形界面中进入RedOffice2.0_ForLinux文件夹,双击setup就开始安装了。按提示即可完成全部 安装过程。默认的安装路径是在/root/RedOffice2.0-PE之下。按Linux 管理程序的习惯,应将其修改为 /usr/local/RedOffice2.0-PE。安装完成后,要适当修改RedOffice的某些目录的权限,以防止其他用户使用该软 件时出现安全备份错误。相应的命令有:   chmod 777 /usr/local/RedOffice2.0-PE/user/backup   chmod 777 /usr/local/RedOffice2.0-PE/user/basic   安装程序已自动把RedOffice各组件启动的快捷方式放到开始菜单里了。 博客:http://www.linux286.com/6/12/?3 11/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 4:C++集成开发环境 Kdevelop 发布时间 :2006-11-15 11:16:15   在红旗Linux4.1的开发工具盘中,提供了集成开发环境Kdevelop3.0.92。可以下载相应的ISO 文件并利用 其中的安装程序,安装之。安装的第一步,是要挂载红旗Linux4.1的开发工具盘的ISO文件 RedFlag4-devel-20040121158.iso,以便读取其中的内容。挂载前需要选择挂载点。假设在/mnt下创建一个iso 目录,专门用于挂载 ISO文件。未挂载前,查看此目录,是空的。   mkdir /mnt/iso   确定了挂载点之后,就可以执行mount 命令进行挂载了。先用cd 命令转移到 RedFlag4-devel-20040121158.iso所在的目录,然后执行如下命令1:   mout -t iso9660 -o loop,iocharset=cp936 RedFlag-4-devel-20040121158.iso /mnt/iso   再查看/mnt/iso,我们发现其中已经有文件了。用鼠标双击autorun 就可以启动开发工具盘中的安装向导程 序。   在选择软件包的窗口列表中,选中kdeools 分组,点击“下一步”按钮就可以自动把Kdevelop安装到系统 中。安装完成后,从开始菜单中就可以启动Kdevelop:【开始】→【应用程序】→【软件开发】→【Kdevelop 】如果不再需要读取开发工具盘的 ISO文件,应该及时卸载它,命令如下。卸载后查看/mnt/iso,会发现它又 空了。   umount /mnt/iso   ------------   1对开发工具盘的ISO文件而言,参数iocharset=cp936并不是必须的。只有在挂载含有中文文件名的的ISO 文件时,才需要   iocharset=cp936这个参数以确保中文文件名的正确显示。不使用iocharset=cp936 时的命令应该是这个样 子:   mout -t iso9660 -o loop RedFlag4-devel-20040121158.iso /mnt/iso 博客:http://www.linux286.com/6/12/?3 12/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 5 :“我爱背单词” 发布时间 :2006-11-15 11:16:34   背单词软件是比较流行的一种学习软件,很多人都用它一边背单词,一边练习指法。可以从红旗Linux4.1 的工具盘中找到背单词软件的安装包。当然可以用例 4中提到的方法,借助工具盘中的安装程序安装这个软 件。这里介绍用rpm 命令的安装方法。第一步,从工具盘中提取需要的rpm包。先挂载相应的ISO文件:   mout -t iso9660 -o loop,iocharset=cp936 RedFlag-4-tool.iso /mnt/iso   然后借助autorun 看背单词安装包包括哪些rpm包。   根据这些信息,可以猜测出“背单词”软件所需RPM包的文件名。转移到   /mnt/iso/RedFlag/RPMS目录下,执行ls命令并以reciteword 关键词过滤,就可以找到相应的rpm包了。   ls -l | grep reciteword   可以先把这5 个文件复制到一个单独的目录里备用。第二步,安装rpm包。   可以执行如下命令安装“背单词”软件的5 个rpm包2。 rpm -Uvh reciteword-0.8.1-10.i386.rpm rpm -Uvh reciteword-books-0.8.1-2.i386.rpm rpm -Uvh reciteword-dicts-0.8.1-2.i386.rpm rpm -Uvh reciteword-RealPeopleTTS-0.8.1-2.i386.rpm rpm -Uvh reciteword-skins-rw-0.8.1-2.i386.rpm   也可以执行如下一条命令来安装这5 个包: rpm -Uvh reciteword*.rpm --nodeps --force   *是文件名通配符,reciteword*.rpm 正好匹配上述5 个文件包。参数nodeps 表示在安装时不检查软件包之 间的依赖关系;force 表示强制安装,即使系统中已经有了要安装的软件包,也会重新安装一遍,新安装的将 覆盖原有的。   --------------   2有些软件的各个rpm包之间是有依赖关系的。安装其中某个rpm包,它所依赖的rpm包必须事先安装好, 否则安装将无法完成。为了确定个rpm包之间的依赖关系,可以先尝试随便安装其中某个包,安装程序会自动 检测并给出依赖关系提示。手工确定RPM 包之间的依赖关系是非常麻烦的。   进行rpm包安装时,会出现进程提示。上述安装操作的提示信息。 博客:http://www.linux286.com/6/12/?3 13/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联   安装完成后,从开始菜单中就可以启动“背单词”软件:【开始】→【应用程序】→【我爱背单词】→【 背单词】软件安装完成后,不要忘记把ISO文件卸载。   umount /mnt/iso 博客:http://www.linux286.com/6/12/?3 14/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 软件包管理器 发布时间 :2006-11-15 11:16:51   为了编译软件包的管理,可以使用软件包管理器。【开始】→【设置】→【控制面板】→【软件包管理器 】软件包管理器有三个标签,分别是用户软件包、系统软件包和其他工具。如果想查看安装Linux操作系统是, 已经自动安装了哪些软件包,可以查看“系统软件包”。这里的软件包对系统运行很重要,除非特别清楚自己 干什么,否则不要随便卸载它们。如果想安装或卸载应用软件包,可以使用“用户软件包”标签。列出了已经 安装的一些应用软件包。选中某软件包,点“卸载软件包”按钮,就可以进行卸载操作了。其效果等效于带-e 参数的 rpm命令。 博客:http://www.linux286.com/6/12/?3 15/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 Linux shell 简介 发布时间 :2006-11-15 11:17:12   Linux shell指的是一种程序,有了它,用户就能通过键盘输入指令来操作计算了。Shell会执行用户输入的 命令,并且在显示器上显示执行结果。这种交互的全过程都是基于文本的,与其他各章介绍的图形化操作不同 。这种面向命令行的用户界面被称为CLI(Command Line interface)。在图形化用户界面(GUI)出现之前,人们 一直是通过命令行界面来操作计算机的。   现在,基于图形界面的工具越来越多,许多工作都不必使用Shell就可以完成了。然而,专业的Linux用户 认为Shell是一个非常有用的工具,学习Linux时一定要学习Shell,至少要掌握一些基础知识和基本的命令。 博客:http://www.linux286.com/6/12/?3 16/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 启动 shell 发布时间 :2006-11-15 11:17:31   在启动Linux桌面系统后,Shell已经在后台运行起来了,但并没有显示出来。如果想让它显示出来,按如 下的组合键就可以: + + 组合键中的F2可以替换为F3、F4、F5、F6。如果要回到图形界面 ,则按如下组合键: + + 另外,在图形桌面环境下运行“系统终端”也可以执行Shell命令, 与用组合键切换出来的命令行界面是等效的。“系统终端”启动后是一个命令行操作窗口,可以随时放大缩小 ,随时关闭,比较方便,推荐使用。启动“系统终端”的方法是:【开始】→ 【应用程序】→ 【附件】→ 【 系统终端】就是系统终端的界面。该软件允许建立多个Shell客户端,它们相互独立,可以通过标签在彼此之间 进行切换。 博客:http://www.linux286.com/6/12/?3 17/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 Shell 命令基本规则:一般格式 发布时间 :2006-11-15 11:17:49   Shell命令的一般格式如下:命令名【选项】【参数1】【参数2】...【选项】是对命令的特别定义,以减号 (-)开始,多个选项可以用一个减号(-)连起来,如ls -l -a 与ls -la 相同。【参数】提供命令运行的信息,或者是命 令执行过程中所使用的文件名。     使用分号(;)可以将两个命令隔开,这样可以实现一行中输入多个命令。命令的执行顺序和输入的顺序相同 。 博客:http://www.linux286.com/6/12/?3 18/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 命令补全 发布时间 :2006-11-15 11:18:07   在送入命令的任何时刻,可以按键,当这样做时,系统将试图补全此时已输入的命令。如果已经输 入的字符串不足以唯一地确定它应该使用的命令,系统将发出警告声。再次按键,系统则会给出可用来 用来补全的字符串清单。使用命令补全功能,可以提高使用长命令或操作较长名字的文件或文件夹的都是非常 有意义的。 博客:http://www.linux286.com/6/12/?3 19/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 历史命令 发布时间 :2006-11-15 11:18:24   系统会把过去输入过的命令记忆下来,只要按方向键中的上下箭头,就可以选择以前输入过的命令了。 博客:http://www.linux286.com/6/12/?3 20/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 联机帮助 发布时间 :2006-11-15 11:18:42   可以通过man命令来查看任何命令的联机帮助信息。它将命令名作为参数,该命令的语法格式为:   man 【命令名】   在任何命令之后给--help参数,也可以显示该命令的帮助信息。 博客:http://www.linux286.com/6/12/?3 21/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 常用的 Shell 命令-目录和文件操作 发布时间 :2006-11-15 11:19:00 查看当前目录相对于根目录的位置 pwd 查看当前目录内容 ls 以长格式查看当前目录内容。对应每个文件的条目将包括连接数目、所有者、大小、最后修改时间、权限等内 容 ls -l 改变当前目录。目的目录名可用相对路径表示,也可以用绝对路径表示。 cd [目的目录名] 转移到上一级目录 cd .. 创建目录 mkdir [新目录名] 例:mkdir /var/ftp 删除空目录 rm [目录名] 例:rm /var/ftp 递归删除一个目录中的所有文件和该目录本身。 rm -r [目录名] 复制文件 cp [源文件名] [目标文件名] 重命名文件 mv [源文件名] [目标文件名] 博客:http://www.linux286.com/6/12/?3 22/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例:mv /etc/rc.d/rc3.d/K50xinetd /etc/rc.d/rc3.d/S50xinetd 删除文件 rm [文件名] 不需确认地删除多个文件 rm -f [带通配符的文件名] 硬链接文件。不能对目录文件做硬链接,不能在不同的文件系统之间做硬链接。 ln [源文件名] [目标文件名] 例:mv /etc/rc.d/rc3.d/K50xinetd /etc/rc.d/rc3.d/S50xinetd 软链接文件。也就是符号链接。可用此法创建文件的快捷方式。 ln -s [源文件或文件夹名] [目标名] 按文件名查找文件。 find / -name nametofind -print 改变文件所有者。 例:chown workman.workgroup /data/pub/upload 改变文件访问权限 例:chmod -R 755 /usr/local/LumaQQ 查看一个文件有多少行 wc -l usr.bin 查看一个文件有多少字节 wc -c usr.bin 查看文本文件的内容 cat usr.bin 博客:http://www.linux286.com/6/12/?3 23/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 用户管理 发布时间 :2006-11-15 11:19:17   改变身份。如果不指定用户名,则默认将用户身份换至root。从root身份切换到其他任何身份都不需要口令 。   su [username]   添加用户   例:adduser -c "MyW" -d /home/workman -g root workman   设置用户口令   例:passwd workman 博客:http://www.linux286.com/6/12/?3 24/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 文件的打包和解包 2 发布时间 :2006-11-15 11:19:39 解tar包 例:tar -xvzf gaim-0.77.tar.gz tar -jxvf XXX.tar.bz2 生成tar包 例:tar cvf - /etc | gzip-9c > backup.tar.gz 生成rar包3 rar a test.rar file1.txt rar a test.rar dir1 解rar包 rar x test.rar 解zip 包 unzip lumaqq_p3.zip 挂装一个iso 文件 mout -t iso9660 -o loop,iocharset=cp936 /data/myarc.iso /mnt/iso --------------- 2除iso文件外,其他各类型压缩包均可以在图形界面下使用“压缩工具”进行管理。从开始菜单的启动“压缩 工具”的方法是:【开始】→【应用程序】→【附件】→【压缩工具】3需要安装RAR for Linux才能处理RAR 格式的压缩文件,参见“软件的安装和升级”一章。 卸装iso文件 umout /mnt/iso 生成一个iso 文件 cp /dev/cdrom /home/gsh/TomJerry1.iso 博客:http://www.linux286.com/6/12/?3 25/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 远程 Shell 登录 4 发布时间 :2006-11-15 11:20:07 ssh远程登录进行命令行操作 ssh -l workman 192.168.0.101 ssh远程登录进行文件的传送 sftp workman@192.168.0.101 博客:http://www.linux286.com/6/12/?3 26/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 磁盘信息的低级复制 发布时间 :2006-11-15 11:20:24 把Linux分区引导扇区的信息提取出来生成一个文件bootsect.lnx,放到Windows的C 盘。 dd if=/dev/hda2 ō f=bootsect.lnx bs=512 count=1 把bootdisk.img写到软盘上。 dd if=bootdisk.img ō f=/dev/fd0 博客:http://www.linux286.com/6/12/?3 27/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 使用缩略符号 发布时间 :2006-11-15 11:20:42   波浪线(~)代表家目录。如果现在位于/home/workman/MyOSS-Stuff/IOSN,那么只需执行“cd ~”就可以 回到家目录/home/workman而不必输入“cd /home/workman”。一个点(.)代表当前目录,而“../” 代表上一 级目录。“../”可以嵌套使用,   比如“../../”。   -------------   4被登陆的目标主机应该开启安全Shell服务。参见“远程操作” 博客:http://www.linux286.com/6/12/?3 28/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 输出重定向 发布时间 :2006-11-15 11:21:01    在默认的情况下,Linux从键盘接受输入,并将命令的输出送到屏幕。在有时候,这样做并不方便。比如 ,在一个目录里有很多文件,如果只用简单的ls命令,在屏幕上显示的输出结果可能上千行!为了得到我们需 要的信息。我们或许需要把这些结果存储到一个文件中然后再查看这个文件,这就要用到系统的输出重定向功 能。输出重定向的操作符为>或>>。单个大于号(>)后面紧跟文件名。 如果指定的文件不存在,将建立这一文件。如果指定的文件存在,则文件原有的内容将被覆盖。如果使用两个 大于号(>>)则会把输出内容追加到原来文件里面。下面是一个例子: 1.[-(/tmp)> ls /usr/bin >> usr.bin 2.[-(/tmp)> wc -l usr.bin 3.2171 usr.bin 4.[-(/tmp)> ls /usr/bin >> usr.bin 5.[-(/tmp)> wc -l usr.bin 6.4342 usr.bin 7.[-(/tmp)> ls /usr/bin > usr.bin 8.[-(/tmp)> wc -l usr.bin 9.2171 usr.bin 注:行号是为了行文方便加入的,并不是shell 的输出. 第1行,/usr/bin中的文件列表被写入文件usr.bin,由于这个文件原来并不存在,系统会自动创建。从第3行可以 看出usr.bin的行数。在第4行又重复了第1行的命令,由于使用的是>>,usr/bin中的文件列表被追加写入文件, usr.bin的行数也就增加了一倍。在第7行我们使用了>, usr/bin中的文件列表被写入文件,usr.bin中原有的内容 被覆盖了,行数也变成了新的值。 博客:http://www.linux286.com/6/12/?3 29/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 管道 发布时间 :2006-11-15 11:21:18    将一个程序的标准输出写道一个文件中去,再将这个文件的内容作为另一个命令的标准输入,等效于通过 临时文件将两个命令结合起来。这种情况很普遍,需要Linux系统提供一种功能:它不需要或不必使用临时文件 ,就能将两条命令结合在一起。这种功能就是管道。管道的操作符是一个竖杠“|”。管道是可以嵌套使用的, 因此可以把多个命令结合在一起。接上例,如果执行下面的命令将直接返回/usr/bin 中的文件列表的行数,而 不是列表的内容。   ls /usr/bin | wc -l 博客:http://www.linux286.com/6/12/?3 30/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 练习 发布时间 :2006-11-15 11:21:38 从桌面上启动shell终端,执行如下操作: 1.查看当前所在的目录 2.显示当前目录中的内容 3.显示/usr/bin目录中的内容 4.转移到家目录,并创建一个子目录,命名为Temp11 ,然后转移到该目录中 5.从/etc中复制如下目录到Temp11目录中: services, motd, fstab, hosts 6.查看services内容的行数 7.删除Temp11中列出的四个文件 博客:http://www.linux286.com/6/12/?3 31/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 远程 Shell 服务 发布时间 :2006-11-15 11:21:55 支持远程操作是Linux的一个非常重要的特点。利用此功能,用户从另一台计算机5远程登录上来,进行Shell命 令的操作。红旗Linux4.1桌面版已经安装了支持远程操作的安全Shell服务软件OpenSSH。在默认情况下,此 软件并没有运行起来。可以通过服控制启动OpenSSH来支持远程操作。下面介绍一下操作方法。首先,从开 始菜单启动服务管理工具,方法是:【开始】→【设置】→【控制面板】→【服务】从服务管理工具中找到 sshd(安全Shell服务)。选中它,从操作菜单中就可以启动安全Shell服务了: 【操作】→【启动】如果希望,每次启动计算机时,自动启动安全Shell服务,可以选中它,修改它的属性: ------------- 5可以是运行Linux操作系统的计算机,也可以是运行Windows操作系统的计算机【操作】→【属性】修改属性 的界面,把启动类别改成自动即可。 提示:如果想用一台装有windows系统的电脑进行远程操作,要在这台电脑上安装ssh 客户端程序。可以使用 运行于Windows 上的专用客户端程序SSHSecureShellClient。另外使用putty 等通用的ssh客户端软件也能进行 远程操作。 博客:http://www.linux286.com/6/12/?3 32/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 安装 rpm 软件 发布时间 :2006-11-15 11:22:13 例:rpm -Uvh kdevelope-3.1-1.i386.rpm 卸载rpm软件 例:rpm -e kdevelope 配置、编译、安装、卸载源码发布的软件包。 ./configure make make install make clean 卸载源码发布的软件包 make uninstall 博客:http://www.linux286.com/6/12/?3 33/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 linux 编程基础 发布时间 :2006-11-15 11:22:38 学习编程,主要应该学习三方面的知识,即程序开发环境的使用、编程语言的语法规则以及可供直接使用的标 准类库/函数库。 博客:http://www.linux286.com/6/12/?3 34/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 基于文本的 C/C++ 发布时间 :2006-11-15 11:22:56   C/C++语言非常灵活,是众多专业程序员最为喜欢的编程语言之一。下面讨论基于文本的C/C++编程问题 ,主要涉及:如何编写程序,如何编译,如何调试,如何运行。涉及的开发工具有GNU C/C++、GNU GDB。 博客:http://www.linux286.com/6/12/?3 35/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 vi 最基本操作 发布时间 :2006-11-15 11:23:15 要编程,第一步就是要写程序。用什么写呢?用文本编辑器Kedit和高级文本编辑器KWrite编写当然可以。但这 里要介绍是基于纯文本环境的编辑工具,那就是大名鼎鼎的vi。在以命令行方式启动Linux,或者通过ssh 远程 登陆到某Linux 系统时,很可能只有vi这样一个工具可以用来编写程序。 vi用不同的颜色表示不同的程序元素,增加了程序的可读性,看起来也特别漂亮。好,下面结合一个简单的例 子,来讨论vi的最基本操作。值得注意的是,vi支持的操作是非常丰富的,这里只介绍最常用的操作。执行下面 的指令,在当前目录下建立一个文件名为calculator.c的程序文件。如果该文件已存在,此命令将打开这个文件 。 vi calculator.c 执行完上面的指令后,就进入了vi编辑界面。下面说说vi最基本的操作方法。进入编辑界面后,按i键就进入了 “插入”模式,按Esc 键就退出了“插入”模式。如此可以来回切换。 不管哪种模式,都可以用光标键(←↑↓→)及Home、End、PageUp、PageDn键移动光标。这与图形方式下的 操作习惯是一致的。在“插入”模式下就可以输入字符了。可以用Delete 和BackSpace键删除字符。在非“插 入”模式下可以执行一些带冒号的指令。例如:w存盘,注意是输入一个冒号后面再跟一个字母w。还有一些其 他指令,列举如下: :wq 存盘并退出vi。 :q 退出vi。如果尚未保存,vi会提示,并拒绝退出。 :q! 不保存已做的修改,强制退出。 :g/str1/s//str2/g 寻找str2,并全都替换成str1。注意,s后面是两个斜杠(/)。如果斜杠(/)本身就是str1或str2中的 字符,则加前导反斜杠(\)区别。这一点对用vi编辑html文件的操作尤为有用。 要进行复制、粘贴、查找等操作,也必须在非“插入”模式下输入指令完成,这时输入的指令不带冒号。现列 举如下: y5y 包括光标所在行,往下数,复制5 行到内存。若只复制一行,可以不写数字。 y3w 复制光标后面的3 个英文单词。 p 小写,把剪贴板内容粘贴到光标之后。 P 大写,把剪贴板内容粘贴到光标之前。 d3d 包括光标所在行,往下数,剪切3行到内存。若只剪切一行,可以不写数字。接下若不进行粘贴操作,就 相当于删除操作。 /str1 寻找字符串str1,str1就是要寻找的字符串。如果斜杠(/)本身就是str1中的字符,则加前导反斜杠(\)区别。 博客:http://www.linux286.com/6/12/?3 36/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 C 程序编译和运行 发布时间 :2006-11-15 11:23:33   假设已经写好了一段C 程序,源代码文件是calculator.c。那么,如何把它编译成可执行文件呢?   很简单,只需执行如下指令即可。-o表示要指定可执行文件的名字,可执行的文件名是calc。gcc -o calc calcutlator.c如果编译成功,就可以执行这个程序了。编译形成的可执行文件有5KB。./calc 博客:http://www.linux286.com/6/12/?3 37/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 用 GNU gdb 调试 发布时间 :2006-11-15 11:23:53 如果编译时,使用下面的指令(增加了参数-g),就会生成带源代码调试符号的可执行文件。编译形成的可执行 文件有7KB。之所以增加了2KB,就是因为增加的调试符号。 gcc -o calc calcutlator.c -g 进一步地,就可以执行下面的指令启动调试工具进入调试环境对程序进行调试了。 gdb calc 在调试环境下,可以输入下列指令来控制调试。 l 28 第一个字母是小写的L,列出第28行附近的源程序。 b sum 在sum函数处设断点 b 25 在第25行处设断点 r 运行程序 n 单步执行,不进入函数 s 单步执行,进入函数 c 继续连续执行 p choice 显示变量choice 的值 q 退出调试环境 k 杀死程序 博客:http://www.linux286.com/6/12/?3 38/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 C++ 程序的编译 发布时间 :2006-11-15 11:24:10 假设用vi编写好了一个C++程序,源程序文件名为hello.cxx。如何编译?编译,指定生成的可执行文件名为hw 。 g++ -o hw hello.cxx 带源代码调试符号进行编译。g++ -o hw hello.cxx -g 博客:http://www.linux286.com/6/12/?3 39/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 Kdevelop -安装和启动 发布时间 :2006-11-15 11:24:29   在红旗Linux4.1的开发工具盘中,提供了集成开发环境Kdevelop3.0.92。可以下载相应的ISO文件并利用 其中的安装程序进行安装。安装完成后,从开始菜单中就可以启动Kdevelop:【开始】→【应用程序】→【软 件开发】→【Kdevelop】利用Kdevelop可以编写C和C++程序,它把编辑、编译、调试和运行集成到一起,给 编程工作带来很大方便。 博客:http://www.linux286.com/6/12/?3 40/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 基本步骤 发布时间 :2006-11-15 11:24:47 一般而言,用Kdevelop编程大体要经历如下几个步骤。编程是比较复杂的,很难一次成功,这些步骤可能要反 复进行多次。 第一步,新建工程 可以通过菜单操作启动相应的向导程序,借助它完成工程的初建工作。【Project】→【New Project】在新建 工程过程中,主要需要指定工程文件保存位置、工程名称、工程类型,并且可以填写编程作者的信息。根据所 选工程类型(比如,是文本界面的程序还是图形界面的程序,是C 程序还是C++程序),向导程序会自动生成一 批模板文件。 第二步,编辑程序文件 向导程序一般会创建一些程序文件,应该对这些文件进行编辑以满足特定的编程需要。还可以执行菜单操作来 增加新的文件。【File】→【New】上述操作后,会出现一个对话框,用于指定文件名和文件类型。根据文件 类型的不同,会自动设定合适的扩展名。 注意,“Add to project”复选框应该勾选上以确保新文件被加入到当前的工程中。 第三步,生成源码结构 在编辑好程序文件后,要先借助GNU Build System 生成系统生成源码结构。在增加了新文件(或目录)、修改了 文件(或目录)名、改变文件的保存位置之后,都应该重新生成源码结构。具体而言,生成源码结构包括 autoconf、automake等操作,把每个子目录的Makefile.am变成了Makefile.in。具有源码结构的程序文件包可以 在任何UNIX、LINUX的系统上使用简单的命令(即configure/make/make install等)进行配置、编译、连接和安装 。可以执行菜单操作来生成源码结构: 【Build】→【Run automake&conf】 第四步,配置,即运行configure configure是一个脚本,用来确定所处系统的细节,比如使用何种编译器、何种库,以及编译器和库的保存位置 ,并把Makefile.in的相应部分进行替换,形成Makefile。可以执行菜单操作来进行配置:【Build】→【Run configure】 第五步,编译连接 执行菜单操作【Build】→【Built Project】即可完成编译连接,形成可执行文件。默认情况下,这种可执行文 件是带有源码调试符号的。对于多文件的程序,一般需要对每一个文件分别进行编译生成目标文件。当每个文 件的编译通过之后,再统一进行编译连接。单独编译当前正在编辑的文件的菜单操作是:【Build】→【 Compile File】 第六步,运行 如果想在KDevelop的控制下运行已编译连接好的程序,可以执行菜单操作:【Build】→【Excecute program 博客:http://www.linux286.com/6/12/?3 41/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 】如果想单独运行程序,则需要先安装,然后在命令行中输入相应的可执行文件的名字 (一般来讲,就是工程 的名字)即可。KDevelop会把可执行文件放在/usr/local/bin之中【Build】→【Install】 博客:http://www.linux286.com/6/12/?3 42/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 1 单文件面向过程C++ 编程 发布时间 :2006-11-15 11:25:12 有观点认为,非跨平台病毒在操作系统混合部署的环境中,其扩散速度比较低。这里要编写一个程序来模拟计 算机病毒的扩散过程,直观地验证这个观点。这里将使用C++语言。为简单起见,仍然使用面向过程的编程方 法,程序文件也只有一个。学习本例时,应着重理解用KDevelop编程的基本步骤。 问题陈述 假设有一个封闭的环境,其中有计算机N 台。这N 台计算机都可以选择安装A或B种操作系统。有一种非跨平台 病毒病毒,能感染运行安装A操作系统的计算机。当染毒计算机与未染毒计算机交换时,此病毒将以概率pA 扩 散。同理,设有另一种非跨平台病毒病毒,能感染运行安装B操作系统的计算机,扩散概率为pB 。把操作系统 单一部署2条件下的病毒扩散情况与两种操作系统按比例r:1 混合部署时的{2即所有计算机都安装同一种操作系 统}扩散情况进行比较。初始条件:设N=70, pA = pB =p=0.3, rO{0,1,2,3} ,r=0 对应单一部署,其他对 应混合部署;单一部署时,有两台计算机已经感染了病毒;混合部署时,每种操作系统的计算机各有一台计算 机已经感染了病毒。输出:用数值和图形来表示感染病毒的计算机总数和增量的变换情况。终止条件:当所有 计算机都感染病毒时,停止模拟。 设计 首先,定义一个TComputer类型的数组,每个元素代表一台计算机。TComputer是用户自定义类型,其中记录 计算机上的操作系统类型、以及是否感染了病毒等信息。应根据初始条件,对这个数组进行初始化。 其次,定义一个模拟计算机交互的函数ComputerContact(),用以模拟任意两台计算机的交互。当这两台计算 机的操作系统一样,并且其中一台已经感染了病毒时,另一台计算机将以概率p感染病毒。为了方便,可以产 生一个0 到9 范围内的随机数,当此随机数小于p*10时,就认为病毒扩散了。 第三,可以产生两个小于N 的互不相等的随机数,来确定一次交互中的两台计算机。 编写程序文件 通过菜单操作【Project】→【New Project】启动新建工程向导程序,选择工程类型,并指定工程名称及其保 存位置,接下来一路点击Next即可完成工程的创建工作。 向导程序会自动生成一个含有主函数的文件。以此文件是一个模板,在它的基础上修改并添加代码,即可编写 需要的程序。本例的源程序见linuxv-viruspread-0.0.1.tar.gz中的/src/viruspread.cpp。 编译 程序写好后,应该把文件保存起来,然后按照前面提到的步骤,生成源码结构、配置、编译,即依次执行如下 菜单操作: 【Build】→【Run automake&conf】 【Build】→【Run configure】 【Build】→【Compile File】 每一个操作若能正常完成,在Messages 窗口中会出现Success的提示。如果没有Success 的提示,则表明相 博客:http://www.linux286.com/6/12/?3 43/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 应的操作失败,应查明原因。一般来讲,生成源码结构和配置这两个操作都能顺利通过。如果编译连接是首次 进行,则一般会失败,因为很少有人能一次写出没有任何语法错误的程序。查看Messages窗口中的提示信息 ,可以了解哪些地方出现了语法错误。单击某一条错误提示信息,KDevelop会自动把光标定位到发生该错误的 语句上。依据错误提示,修正程序中的语法错误,然后再次尝试编译,直到出现Success的提示。经常出现的 一种情况是,程序上的一个语法错误会导致多条错误信息的出现。因此,应该把第一条错误信息认真处理好, 再从随后的错误信息中随机选择几条加以处理,然后就再次尝试编译,看还有没有错误信息。如此反复多次, 直到把所有的错误提示消除掉,编译就成功了。不要把所有错误信息都依次处理完再尝试编译,那样的效率比 较低。 生成可执行文件 编译成功后,执行菜单操作【Build】→【Built Project】即可生成相应的生成可执行文件。本例的可执行文件 见viruspread 。 调试 接下来,可以执行菜单操作【Build】→【Excecute program】试运行程序。这种运行是在KDevelop的控制下 进行的。因此,如果出现“死循环”,可以执行菜单操作【Build】→【Stop】或按Esc 键即可中止程序的运行 。如果在程序中存在逻辑错误,就得不到期望的结果。逻辑错误的排除比较困难。必须对程序进行仔细的分析 才能找到错误的原因。 一般的逻辑错误可以根据程序的运行表现加以判断。比较深层次的逻辑错误则需要借助调试工具。本章前面介 绍的调试工具GNU gdb就是一个很好的工具,可以用它对程序进行仔细分析,查找逻辑错误的根源。默认情况 下,经过【Build】→【Built Project】操作之后,可以在工程目录下的/debug/src/中找到带源代码调试符号的 可执行文件。发现逻辑错误后,就要修改程序,重新编译连接。然后再试运行。如果仍然得不到期望的结果, 说明程序中还有逻辑错误,应再次进行分析。如此反复多次,直到消除全部的逻辑错误。 发布可执行文件 如果只想发布程序的可执行文件,可以先调整项目的编译连接选项,选择优化编译的方式。这样可以得到更小 更快的可执行文件。 可以通过菜单【Project】→【Build Configuration】修改编译连接选项。此菜单之下有三种选项,默认为 Debug,生成的可执行文件中含有源程序调试符号;还可以选择Default或Optimized。选择Optimized时,编译 连接时将进行优化,生成的可执行文件更小,执行起来也更快。 选择Debug时,可执行文件保存在工程目录下的/debug/src/中;选择Optimized时, 可执行文件保存在工程目 录下的/optimized/src/中;选择Default时, 可执行文件保存在工程目录下的/src/中。对于本例,三种选择所生 成的可执行文件的大小差别很大。选择Debug 时,93kb;选择Default时,42kb ;选择Optimized 时,只有 8.8kb(见viruspread)。因此,如果要发布可执行文件,应该选择Optimized的方式进行编译连接。 发布源程序 把工程目录及其中的所有文件打包即可形成源程序包。linuxv-viruspread-0.0.1.tar.gz是本例的源程序包。用户 得到这个源程序包并解压后,不必安装KDevelop 就可以按标准方法进行编译和安装,即支持configure,make , make install,make clean,make uninstall等命令。这个包也含有KDevelop的工程文件和其他相关的信息 。因此,如果用户安装了KDevelop,可以直接打开该工程进行修改。 博客:http://www.linux286.com/6/12/?3 44/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 2 多文件面向对象的C++ 程序 发布时间 :2006-11-15 11:25:32 前例程序中虽然有一些C++的成分,但程序的设计思想还是面向过程的。本例将采用面向对象的思想对其进行 改进。对象是C++中非常重要的成分。面向对象的编程往往可以使程序设计更直观,更简捷。 设计 首先,定义一个CComputer对象数组,每个对象代表一台计算机。CComputer是用户自定义的类,其属性包括 操作系统类型和所染病毒的传染概率(用0 到9 范围内的整数表示,0 代表无病毒),成员函数Contact()则用于模 拟与其他计算机的交互。当一台染毒计算机与另一台计算机未染毒计算机进行交互时,病毒将扩散。为了方便 ,可以产生一个0到9范围内的随机数,当此随机数小于染毒计算机的传染概率时,就认为病毒扩散了。其次, 在主函数中产生两个小于N 的互不相等的随机数,来确定一次交互中的两台计算机。 编写程序文件 创建工程的操作与前例相同。这里将工程命名为virus_os。除了向导程序自动生成的那个含有主函数的文件 virus_os.cpp 外,还应该增加两个新文件,即ccomputer.h和ccomputer.cpp,前者是含有CComputer类声明的 头文件,后者含有CComputer类的实现方法。执行菜单操作【File】→【New】即可增加新文件。注意在对话 框中输入正确的文件名和文件类型,并且“Add to project”复选框应该勾选上。本例的源程序见 linuxv-virus_os-0.0.1.tar.gz中的/src 编译 程序写好后,依前例进行生成源码结构、配置、编译等操作即可。这个工程包括三个文件。执行菜单操作【 Build】→【Compile File】只是对当前的文件进行编译。这为分别排除每个文件的语法错误提供了方便。 其他 编译成功后,即可依前例进行“生成可执行文件、调试、发布可执行文件、发布源程序”等操作,就不再赘述 了。本例的可执行文件见virus_os。 博客:http://www.linux286.com/6/12/?3 45/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 3 改进程序 发布时间 :2006-11-15 11:25:51   如果得到了某个用KDevelop开发的软件的全套工程文件,可以很容易地对其进行升级,然后发布新的版本 。   下面举例说明。取得linuxv-virus_os-0.0.1.tar.gz后,解压缩形成一个目录,virus_os-0.0.1的全套工程文件 就保存在其中。启动KDevelop,然后执行【Project】→【Open Project】,找到virus_os.kdevelop并打开它, 相应的工程也就打开了。调试成功后,可以按前面提到的方法发布修改后的软件即可。在发布前应修改版本号 。修改方法是,执行菜单操作【Project】→【Project Options】,在随后出现的工程属性窗口中进行修改即可 。 博客:http://www.linux286.com/6/12/?3 46/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 例 4 使用已有的源文件 发布时间 :2006-11-15 11:26:12   前例的程序还有改进的余地:在CComputer类的基础上创建一个病毒扩散类CViruSpread 来模拟病毒扩散 。当需要模拟不同计算机数量、不同操作系统布置比例以及不同病毒扩散概率条件下的病毒扩散情况时,就可 以通过创建相应的对象来进行了。   新建工程virusimulator,创建CViruSpread 的文件cviruspread.h 和cviruspread.cpp。这里需要把 ccomputer.h 和ccomputer.cpp 两个文件添加到本工程中来。操作方法:在KDevelop 主窗口的右侧有一个 Automake Manager标签。点击该标签,就可以看到本工程源文件所在的文件夹以及各文件。在列有文件的那 个窗口上方有工具条,其中就是用来添加文件的。添加文件有两种方式,一种是链接(link)方式,另一种是复制 (copy)方式。 博客:http://www.linux286.com/6/12/?3 47/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 搭建个人网站 发布时间 :2006-11-15 11:26:33   在一个被Windows垄断的办公环境中使用Linux办公,你就是少数,你就不得不照顾大多数人的习惯,想办 法“兼容”大多数人。   一个比较有效的办法就是把自己的计算机改造成简单的个人网络服务器,利用流行的网络服务解决与大多 数人交流电子文档的问题。下面将讨论如何基于红旗Linux桌面版配置服务器,提供WWW/FTP服务的问题。注 意,这里的讨论只适合个人使用。如果要搭建企业级的服务器,需要考虑更多的问题,这里介绍的方法也许并 不够充分。 博客:http://www.linux286.com/6/12/?3 48/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 用 Apache 提供简单Web 服务 发布时间 :2006-11-15 11:26:50   假设要建立一个个人Web网站,允许别人能通过内部局域网访问这个网站,阅读文档或下载软件。网站的 网页文件都存在/mnt/WinD/www123 下,首页文件名是index.html,可供下载的软件存在/mnt/WinD/unixsoft下 。 博客:http://www.linux286.com/6/12/?3 49/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 安装 Apache 2.0.53 发布时间 :2006-11-15 11:27:08   Apache服务器软件安装包是一个tar包,可以下载得到。其中包含所有的源程序。2.0.53版的文件名是 httpd-2.0.53.tar.gz,也有httpd-2.0.53.tar.bz2的,只是压缩方式不同而已。在图形界面下,选中压缩包点鼠标 右键,在弹出菜单中选择“解压”即可完成解压1,形成httpd-2.0.53目录。在命令行方式下,转入httpd-2.0.53 目录, configure,make,make install,make clean 等命令就可以完成安装完了。为了方便,可以把这些命 令用分号(;)隔开写成一行,如下所示。   ./configure;make;make install;make clean   这样做之后,安装程序会自动在/usr/local中创建apache2 目录,Apache服务器软件的所有配置文件和可 执行文件就都保存在这里。如果要卸载,只需将apache2 目录删除即可2。有两点需要注意:   第一,安装时必须使用root身份;第二,如果httpd-2.0.53目录处于系统自动挂装的非ext2/ext3分区,执行 configure 命令可能会出错,导致无法正常安装。如果httpd-2.0.53 目录在ext2/ext3分区,就不会出现这个问题 了。因此,建议把解压形成的httpd-2.0.53目录放在/root目录之下。 博客:http://www.linux286.com/6/12/?3 50/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 配置 发布时间 :2006-11-15 11:27:27   接下来要修改配置文件/usr/local/apache2/conf/httpd.conf 来控制服务器软件,使其按要求运行。首先,修 改Listen行,确定服务的IP 地址和端口号:   Listen 10.1.30.147:80   说明:10.1.30.144 是当前计算机的IP地址,通过80端口提供Web服务。此项不特意设也可,默认端口就 是80。   其次,修改DocumentRoot ,设定主页所在的根目录。修改后形成如下两行:   DocumentRoot "/mnt/WinD/www123"      第三,修改DirectoryIndex行,确认首页的文件名在其中。如果没有就追加上。   DirectoryIndex index.html index.html.var   ---------------------   1当然,也可以使用命令行命令进行解压。   2不能用make uninstall卸载,因为Apache 安装的make 没有定义uninstall这个参数。   第四,增加一个Alias,把/mnt/WinD/unixsoft映射为网站根目录下的unixdown目录。增加的内容如下: Alias /unixdown/ "/mnt/WinD/unixsoft" Options Indexes MultiViews AllowOverride None Order allow,deny Allow from all   上述四步配置的目的是使局域网的其他计算机能用http://10.1.30.144/这个网址访问我的网站了。要下载存 放在/mnt/WinD/unixsoft的软件,则输入http://10.1.30.144/download/就可以看到文件列表。 博客:http://www.linux286.com/6/12/?3 51/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 启动和关闭 发布时间 :2006-11-15 11:27:45   安装配置好之后,运行下面的命令是就可以启动这个WWW服务器了。   /usr/local/apache2/bin/apachectl start   若要重启动这个WWW服务器   /usr/local/apache2/bin/apachectl restart   若要关闭WWW 服务   /usr/local/apache2/bin/apachectl stop 博客:http://www.linux286.com/6/12/?3 52/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 自动启动 发布时间 :2006-11-15 11:28:02   如果希望系统每次启动时自动启动httpd 服务器,则还要做如下工作。   首先,拷贝apachectl 到/etc/rc.d/init.d/,并更名为httpd ,相应的命令是:   cp /usr/local/apache2/bin/apachectl /etc/rc.d/init.d/httpd   然后,修改/etc/rc.d/init.d/httpd中的ARGV 行,改成:   ARGV="start"   最后,在/etc/rc.d/rc5.d目录下,创建一个指向httpd 的硬链接。相应的命令是:   ln /etc/rc.d/init.d/httpd /etc/rc.d/rc5.d/S85httpd   为了保证在字符模式下启动红旗也能提供Web服务,还要在/etc/rc.d/rc3.d目录下,创建一个指向httpd的硬 链接。相应的命令是:   ln /etc/rc.d/init.d/httpd /etc/rc.d/rc3.d/S85httpd 博客:http://www.linux286.com/6/12/?3 53/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 支持 PHP 的Web 网站 发布时间 :2006-11-15 11:28:21   上面已经建立了简单的Web网站。很多情况下,这已经能满足了文档和软件共享的需要。但有些时候,还 需要记录网站被访问的次数、软件的下载次数,甚至需要建立一个简单的留言簿。这时,就需要使Web网站支 持某种动态网页。在Linux上,一种最流行的支持动态网页的搭配就是:Apache+PHP。下面就讨论如何用 Apache 和PHP 搭建支持PHP 的Web网站。 博客:http://www.linux286.com/6/12/?3 54/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 安装 Apache 2.0.53 发布时间 :2006-11-15 11:28:38   关于Apache的安装前面已经做了介绍。但为了与PHP 配合工作,Apache的安装操作会有所变化。对比前 面“简单Web服务”的安装操作,在执行configure指令时稍有不同,需要给configure 增加参数--enable-so使 其支持可装载模块和标准的MPM prefork。具体来说在命令行方式下,转入httpd-2.0.53目录后,执行如下命令 进行安装。   ./configure --enable-so   make;make install;make clean 博客:http://www.linux286.com/6/12/?3 55/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 安装 PHP 5.0.2 发布时间 :2006-11-15 11:28:56   PHP软件安装包也是一个tar包,可以下载得到。文件名为php-5.0.2.tar.gz3,解压方法与Apache的相同。 需要注意的是,为了能正常编译,最好直接在ext2/3分区上进行解压。解压后会形成php-5.0.2目录。转入该目 录开始安装。安装PHP 前应关闭Apache。安装时configure 指令需要参数,这个参数说明了Apache具体的安 装路径。   ./configure --with-apxs2=/usr/local/apache2/bin/apxs   make4   make install;make clean   安装完成后,还需要把php 的配置文件复制到合适的目录下,具体命令如下:   cp php.ini-dist /usr/local/lib/php.ini 博客:http://www.linux286.com/6/12/?3 56/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 配置 Apache 发布时间 :2006-11-15 11:29:15   关于Apache的配置前面已经做过一些介绍。显然,在搭建支持PHP的Web网站时这些配置仍需要做。为 了使其与PHP 配合工作,还要增加如下的配置。首先,检查配置文件/usr/local/apache2/conf/httpd.conf中是否 有如下的条目(一般来说,在安装php的过程中,都会自动增加),如果没有,一定要添加以便Apache在启动时 可以自动加载php 模块。   LoadModule php5_module modules/libphp5.so   其次,还要手工增加如下两个条目:   AddType application/x-httpd-php .php .phtml   AddType application/x-httpd-php-source .phps   第一条的含义是:如果文件扩展名为.php 或.phtml,就要用PHP 解析;第二条的含义是:如果文件扩展名 为.phps就按PHP 语法高亮显示该源文件5。最后,还应该修改DirectoryIndex行,允许首页以index.php 作为文 件名。修改后的情况就是:   DirectoryIndex index.html index.php index.html.var   --------------   3经验表明,php-4.3.10.tar.gz在红旗Linux4.1桌面版上无法编译,因此这里用php-5.0.2.tar.gz。   4不要在fat分区执行此命令,否则会出现错误。   5经测试,Linux 下的Firefox无法实现这种高亮显示,但Windows下的IE 可以。 博客:http://www.linux286.com/6/12/?3 57/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 测试 发布时间 :2006-11-15 11:29:36   做了上述配置后,这个Web网站就支持PHP了。可以编写一个简单的PHP文件phptest.php进行测试,其中 含有PHP 语句即可。   下面是一个例子:         Example                  如果在浏览器上只显示了红色字体的文字,就说明该网站能正确解析PHP 文件。 博客:http://www.linux286.com/6/12/?3 58/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 FTP服务-安装 ProFTP 1.2.9 发布时间 :2006-11-15 11:29:54   可以安装ProFTP 来提供ftp 服务。可以下载得到ProFTP的安装包proftpd-1.2.9.tar.gz,先用tar命令解压。 也可以在图形界面下,选中压缩包点鼠标右键,在弹出菜单中选择“解压”进行解压,形成后形成 proftpd-1.2.9目录。在命令行方式下,转入proftpd-1.2.9目录, 依次执行configure,make,make install, make clean等命令就可以完成安装完了。为了方便,可以把这些命令用分号(;)隔开写成一行,如下所示。   ./configure;make;make install;make clean   ProFTP 的安装程序会把配置文件proftpd.conf放在/usr/local/etc下,把可执行文件proftpd及ftpshut 放在 /usr/local/sbin下。 博客:http://www.linux286.com/6/12/?3 59/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 基本配置 发布时间 :2006-11-15 11:30:15   在运行proftpd之前,需要对运行环境和proftpd的配置文件进行设置,以便该软件按要求运行。   首先,核实系统是否存在系统用户ftp 的默认家目录,即/var/ftp这个目录。/var/ftp这个目录是系统用户ftp 的默认家目录,也是匿名 ftp用户(anonymous)登陆后自动进入的目录。如果没有/var/ftp,匿名ftp 服务可能会 有问题。如果系统中没有/var/ftp 这个目录,就应该创建它,并将其属主设成ftp。相应的命令如下:   mkdir /var/ftp   chown ftp.ftp /var/ftp   还有一种办法,就是修改系统用户ftp的属性,使其家目录指向其他已存在的目录。方法是:执行【开始】 →【设置】→【控制面板】→【本地用户和组】,找到ftp这个用户,选中它并点鼠标右键,执行弹出菜单的“ 属性”即可调出该用户的属性设置界面,在“主目录”中输入相应的目录,然后确定即可。其次,修改proftpd 的配置文件 /usr/local/etc/proftpd.conf。在配置文件中有User 和Group 项,是用来设定运行proftpd 的身份的 。其中,Group 项初始值设为nogroup,而实际上红旗Linux4.1中并没有自动创建nogroup这个组,只有 nobody这个组(其中有nobody用户)。因此,Group 项应改为Group nobody   如果想给匿名用户开放写入权限,还应该修改配置文件中之间的Limit 段改写成:      #DenyAll   AllowAll    博客:http://www.linux286.com/6/12/?3 60/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 用户权限控制 发布时间 :2006-11-15 11:30:31   经上述配置后,当以匿名身份登陆时,只能访问系统用户ftp的家目录。读写权限由配置文件控制。如果创 建了普通用户帐户,也可以用这个帐户来登陆ftp服务,密码就用该用户登陆系统时所用的密码。此用户登陆后 的读写权限与直接登陆系统时的权限相同。这意味着,该用户以ftp方式登陆后,对系统中绝大多数文件和目录 都有读的权限,都可以下载!在大多数情况下,这是比较危险的。如果希望普通用户以ftp方式登陆后被限制在 其家目录内,就需要让配置文件/usr/local/etc/proftpd.conf中的DefaultRoot ~生效。方法很简单,把 DefaultRoot ~之前的井号(#)删除即可。 博客:http://www.linux286.com/6/12/?3 61/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 启动 发布时间 :2006-11-15 11:30:49   执行proftpd命令,就可以启动proftpd,以stand-alone模式提供FTP 服务。带完整路径的命令6如下:   /usr/local/sbin/proftpd   如果希望proftpd 能被自动启动,则应打开/etc/rc.d/rc.local,加入如下一行内容。   /usr/local/sbin/proftpd   这样,每次启动计算机后,proftpd都会被自动启动。 博客:http://www.linux286.com/6/12/?3 62/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 相关命令 发布时间 :2006-11-15 11:31:07   关闭FTP服务   ftpshut now   此命令会在/etc 下生成文件shutmsg。此命令仅仅是停止FTP 服务,并不是关闭proftpd程序。重新开放 FTP 服务   -----------   6直接在命令行输入proftpd 也是可以的,因为/usr/local/sbin已经被记录在系统的PATH 变量中了。   ftpshut -R now   直接把/etc/shutmsg删除也能产生相同的效果。   查看服务器在线人数   ftpcount   显示在线人员名单   ftpwho 博客:http://www.linux286.com/6/12/?3 63/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 海量 Linux 技术文章 发布时间 :2006-11-15 11:32:55 下面是linux技术文章快速入口。需要联网: Linux 技术交流 http://www.linuxdiyf.com/bbs/forum-3-1.html Linux 应用 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=1 Linux 安装及学习指导 http://www.linuxdiyf.com/bbs/forum-45-1.html Linux 系统安装 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=45&filter=type&typeid=11 Linux 学习指导 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=45&filter=type&typeid=12 Linux 软件安装 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=45&filter=type&typeid=13 shell http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=3 Linux 壁纸 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=4 红旗 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=5 Redhat http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=6 SuSE http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=7 博客:http://www.linux286.com/6/12/?3 64/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 Linux 认证 http://www.linuxdiyf.com/bbs/forumdisplay.php?fid=3&filter=type&typeid=9 Linux下载分享{酷件、书籍、视频分享 } http://www.linuxdiyf.com/bbs/forum-6-1.html 服务器应用 http://www.linuxdiyf.com/bbs/forum-7-1.html 数据库应用 http://www.linuxdiyf.com/bbs/forum-8-1.html Linux 编程与内核 http://www.linuxdiyf.com/bbs/forum-9-1.html UniX 技术文章 http://www.linuxdiyf.com/bbs/forum-32-1.html Linux 业界声音、新闻 http://www.linuxdiyf.com/bbs/forum-11-1.html Linux 人才招聘信息 http://www.linuxdiyf.com/bbs/forum-46-1.html 博客:http://www.linux286.com/6/12/?3 65/66 制作于:2006-11-15 Powered by X-Space红联的个人空间 Linux高级培训教程 作者:红联 内容节选自: 《中文版Linux 桌面操作系统初级教程》郭守华 宋雪娇 编著 红联Linux论坛(http://www.linuxdiyf.com/),如文章原创作者认为我们侵犯了你的合法权益,请来信告知 注:本书籍会继续更新,下一版本将在这个版本当中更进。点击查看这本书籍是否最新版本。 http://www.linuxdiyf.com/zs/sj.htm 博客:http://www.linux286.com/6/12/?3 66/66 制作于:2006-11-15 Powered by X-Space
还剩65页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 3 人已下载

下载pdf

pdf贡献者

xjlnjut730

贡献于2010-11-01

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf