Linux系统工程师的工作职责(共12篇)
以教育部2006年16号文件为指导,根据16号文件关于“根据技术领域和职业岗位(群)的任职要求,参照相关的职业资格标准,改革课程体系和教学内容。建立突出职业能力培养的课程标准,规范课程教学的基本要求,提高课程教学质量。”的要求,以及“大力推行工学结合,突出实践能力培养,改革人才培养模式”的精神,本文以所讲授的课程“网络操作系统———Linux”为例,探讨如何对课程进行调整使其满足以工作过程为导向,注重“全程化”的工学结合改革,突出能力本位的设计思想,从而使课程更加贴近技术领域和职业岗位(群)的任职要求,也更加符合高技能人才的培养规律。
2 围绕社会和岗位需求确定课程目标
随着信息技术的高速发展,我国信息产业的规模也得到了空前的壮大,信息化逐步进入了人民群众的日常生活。作为信息产业的基础操作系统平台,Linux被公认为一种高性能、开放源代码的操作系统,凭借其稳定、安全、可靠的优势得到业界的认可,已经成为公认的企业信息化的最佳操作系统平台。目前,在电信、银行、IT服务、各行业等大中型企业中已经全面普及应用Linux。
随着Linux日益的普及和其强劲的发展趋势,Linux应用型技术人才的需求也日益旺盛,但,目前社会上Linux人才不足,不仅仅表现在数量上,还表现在缺乏工作经验、缺乏高层次人才等方面。因此,根据行业发展形式,结合毕业生就业情况,将“Linux操作系统”课程定位于培养网络管理员岗位所需的高技能专业人才,既是行业发展需要,也是学生就业需要。
3 基于工作过程进行课程设计
基于工作过程的课程开发步骤一般是职业分析(专家研讨、市场调研)→典型工作任务分析→归纳典型工作任务→开发行动领域→学习领域开发分析→学习情境设计→教学过程设计。
3.1 与行业企业合作
“依靠行业企业发展职业教育,推动职业院校与企业的密切结合”是促进高职教育持续发展的重要途径之一。基于工作过程的课程设计第一项要完成的是工作任务与职业能力分析,要通过企业调研,组织行业专家和教师共同讨论确定。作为计算机网络专业的专家组成,应该包括网络设备厂商工程师,网络产品经销商工程师,系统集成商总经理、项目经理等多人,最好能够邀请政府和事业单位信息中心工程师、信息技术外包服务商以及技能鉴定中心的相关负责人。专家组主要是对计算机网络工程岗位的典型工作进行分析,阐述在岗位上做哪些工作,怎么做这些工作,跟岗位还有那些与之有关的拓展知识。了解各项工作的重要程度、难易程度以及相互关联程度。
因此,要使本课程的开发与设计充分体现职业性、实践性、开放性的要求,需要与Linux业界企业共同探索并实践工学结合的人才培养方案,按照职业需求,将专业教学融入企业的生产链,实现校企合作的“双赢”。例如,除了邀请企业的专家参与教学内容的研讨与选取外,还需要邀请企业的工程师参与职业素质实训项目的指导,为学生进入企业顶岗实训和就业做好准备。
3.2 课程设计
通过市场分析、社会需求调研以及专家研讨,得到本专业的典型工作岗位———网络管理员,进而根据对企业、毕业生的跟踪调研总结出安装系统平台、配置系统环境、排除系统故障、排除网络故障等14个典型工作任务,再由这些典型工作任务分析和归纳得到行动领域,然后在此基础上进行提炼和升华,总结出学习领域为“网络操作系统———Linux”课程所对应的内容,如图1所示。得到学习领域后,我们进行统一范畴、选择载体,获得学习情境设计,最后学生进行企业项目实战,获取实际工作经验。
在“学习情境设计环节”中,本着知识够用适用的原则,从企业实际项目出发,与Linux业界共同研讨,将业界的实际案例进行重新整合,针对中小企业网络管理员工作岗位的典型任务,对于“Linux系统管理与维护”和“Linux网络管理与维护”这2个学习领域提炼设计了一个学习情境———组建一个小型局域网。
然后,通过共同的载体———Linux系统,依次完成企业局域网需求分析、系统搭建、系统管理与维护、资源共享、邮件服务器、网站服务器等6个企业真实项目,这些项目的执行顺序如图2所示。最后将对每一个项目分别分解为若干个相对独立的任务,形成图示的教学任务单元,在教学活动中以学习情境为导向,以分解出的教学任务为驱动,组织教学。学生在完成所有任务单元后,稍加整合即可完成整个学习情境。各个项目划分的学习任务如图3所示。
整个课程学习过程模拟了在中小企业中构建Linux局域网的这一工作过程。由于学生是初次接触完整的Linux环境下的网络构建,因此首先让学生以用户的角度来考虑和了解网络,体会网络应具有的功能,然后把整体工作过程分解为许多小的工作过程。在每一个小的工作过程中,遵循工作过程的步骤进行学习。在完成全部小过程并具备相关知识后,再把在企业中构建企业局域网作为一个完整的工作过程在课程设计中来实施完成。
针对高职生的特点,这样可避免学生面对一个大的项目时容易产生的畏难心理。有大的项目作引导,而需要完成的是相对独立的小任务,学生跟得上、完得成,容易产生成就感,有效激励其学习的动力。
3.3 教学过程设计
课程在校内教学环节中,充分利用虚拟机技术,仿真网络管理员的真实工作环境;利用企业真实项目仿真网络管理员的真实工作内容,有机地将工作与学习结合起来。在教学过程中,每台学生计算机均可模拟Linux、Windows服务器以及客户终端,逼真模拟了企业真实的网络运行环境,使每一个学生均可扮演整个企业网络的管理员,针对虚拟的企业网络环境快速方便练习服务器管理与配置的技能。
在校内教学环节完成后,我们在企业项目的真实工作地点,设立为期两周的生产性实践环节,由企业方工程师指导完成企业真实项目,以工学交替促进学生适应真实工作岗位的工作。
本课程基于对建构主义的学习理论的认识,以工学结合为切入点,在教学过程中。采取了以工作过程为导向的学习过程,综合运用基于工作过程的项目引导教学法、任务驱动法、案例分析法、分组讨论法、角色扮演法等教学方法开展教学。
4 小结
基于工作过程的课程设计是一个全新的架构.是对基于学科体系的课程方案解构过程.并依据职业情境对“知识点”实施重新排列、组合,也就是重构,由此产生了全新的知识———工作过程知识,这使得新的课程设计具有更鲜活的魅力。同时,在实施教学中.基于工作过程的教学更重视促进学生对实践情景的理解,教学目标更具有定向性、应用性和整体性,强调学生的主观意识行动,使学习过程的完整性与学生职业工作过程的完整性关系更联系。因此,在高职“网络操作系统———Linux”课程改革中采用基于工作过程系统化的课程设计,对提高计算机专业学生职业能力具有十分重要意义。
摘要:Linux操作系统凭借其稳定、安全、可靠的优势,已经成为公认的企业信息化的最佳操作系统平台,基于工作过程的Linux教学体系建设成为职业教育的需要。本文介绍以工作过程为导向的“网络操作系统——Linux”课程教学的设计和探索过程,课程充分利用虚拟机技术,仿真网络管理员的真实工作环境;利用企业真实项目仿真网络管理员的真实工作内容,有机地将工作与学习结合起来。
关键词:基于工作过程,Linux网络操作系统,职业教育
参考文献
[1]姜大源.基于职业科学的职业教育学科建设辨析[J].中国职业技术教育,2007(4).
[2]姜大源.论行动体系及其特征——关于职业教育课程体系的思考[J].教育发展研究,2002(12).
[3]朱雄军.高职计算机网络专业基于工作过程导向的课程体系设计[J].职业技术教育,2008(5).
[4]李洛,黄达峰,汤庸,罗文村.高校推进Linux技术所应采取的措施[J]计算机教育,2006(4):17-I8
[5]彭土有,陈光海.新编Linux网络组建与实训[M].北京:北京出版社,2008.
[6]张武.“案例教学”在计算机实验中的探讨[J].江西医学院学报,2003(6).
[7]潘自舒.高等职业技术教育改革之瓶颈——课程体系构建浅析[J].商丘职业技术学院学报,2008(6).
[8]黄尧.挑战与创新——21世纪初叶的中国职业教育[J].中国职业技术教育,2004(1).
对于Windows/Linux多操作系统共存的系统,安装顺序是先安装Windows系统,然后才是Linux。下面我们介绍在已经安装了Windows系统的单硬盘上如何安装RedHat Linux 9.0。
Linux安装前的准备工作
1.用Windows系统收集硬件信息
在安装Linux之前,您需要借助Windows系统了解计算机硬件的基本信息,如内存大小、声卡、显示器、鼠标和显卡型号等。
2.设置从光盘引导系统
Linux支持几种安装方式,但直接以光盘开机启动进行安装最方便和快速。若要机器以光盘启动,需要修改BIOS的设置,将CD-ROM变更至开机顺序的第一位。
3.Linux分区
Linux分区的表示方法
分区就是将磁盘驱动器分隔成独立的区域,每个区域都如同一个单独的磁盘驱动器,在DOS/Windows系统下磁盘分区可分为C、 D和E盘等。但Linux则将磁盘视为块设备文件来管理使用,它以 /dev(device的缩写)开头表示。
例: 在Linux用 “/dev/hda1”表示Windows下的C盘
其中:hd 表示IDE硬盘(SCSI硬盘用sd);hda 为 第一个IDE 硬盘(第二为 hdb);/dev/hda1 为主分区,逻辑分区 从5 开始,如: /dev/hda5、/dev/hda6、/dev/hda7等。
为Linux准备分区
Linux分区和Windows分区不同,不能共用。所以需要为Linux单独开辟一个空闲的分区,最好是最后一个分区。如图1中利用Windows下的Partition Magic(分区魔法)软件,在D盘上腾出空间创建新分区E盘(或利用已有的空闲E盘),文件类型暂设为FAT32,作为稍后创建Linux分区使用,RedHat 9.0 大约需4 ~ 5GB的空间。
4.Linux 的文件系统
对于不同的操作系统,文件系统也不同。Windows文件系统为FAT16、FAT32和NTFS。而Linux的文件系统可分为ext2、ext3、swap和vfat。ext2支持最多为255 个字符的文件名;ext3 是基于 ext2之上,主要优点是减少系统崩溃后恢复文件系统所花费的时间,RedHat 9.0 默认文件系统为ext3;交换区swap是被用于支持虚拟内存;Windows的FAT分区在Linux下显示为vfat文件类型。
安装RedHat Linux 9.0
1.用RedHat 9.0第一张安装光盘引导开机,系统在开机后会出现安装菜单。
安装菜单中提供了供用户选择的图形和文本模式的安装方式,按回车选择图形模式进行安装。在进入图形画面的安装模式前,RedHat 9.0比以往的版本多了一个环节,那就是提示对安装光盘介质进行检测, 也可按“Skip”按钮跳过检测。
2.接着安装程序会自动检测硬件,包括视频卡(显示卡)、显示器和鼠标的配置,然后进入图形画面的安装向导。在出现“语言选择”的画面中,我们选择“简体中文”,这样接下去的安装过程界面的文字都会改为中文。在“键盘配置”画面中接受默认的“美国英语式”键盘。选择“下一步”,在“鼠标配置”窗口,系统自动检测出鼠标的配置。
3.选择安装类型,安装类型包含四种不同的安装方式:个人桌面、工作站、服务器和定制。“服务器”的安装适用于专职的服务器使用,“个人桌面”和“工作站”适合于初学者,为了让你更多地了解安装过程,我们将选择“定制”类型进行安装。
4.磁盘分区设置:确认了“定制”方式之后,系统会出现“磁盘分区设置”窗口,它提供了两种分区方式:“自动分区”和“用Disk Druid手工分区”。
“自动分区”是一个危险功能,因为它会自动删除原先硬盘上的数据,并格式化成为Linux的分区文件系统。所以除非计算机上没有其他操作系统,你才可以使用。建议采用Disk Druid程序进行手动分区,它的图形化界面比早期RedHat的fdisk程序操作更简单。
5.磁盘设置:在选择“用Disk Druid手工分区”后,会显示如图2的“磁盘设置”窗口,这是整个安装过程中惟一需要用户较多干预的步骤,也是很重要的环节。
只要有一个主分区就可以安装并使用Windows操作系统,同时D、E等逻辑盘的文件结构也都是独立的。而Linux系统归根结底就只有一个根目录,一个独立且惟一的文件结构。Linux的文件系统采用树型结构,整个文件系统由一个“根”和根上的几个分“杈”组成,Linux需创建几个“Linux Native”分区和“Linux Swap ”分区,每个分区都必须通过 “挂载点”,分别载入到 “根(/)”或几个分“杈(如/boot、/home等)”上。
一个最基本的Linux系统需有一个“/”根文件系统分区、一个“Swap”交换文件分区和/boot分区,为了用户使用方便建议还需创建一个 /home分区。
为Linux建立分区有几种办法,一种是编辑现有空闲分区,使它成为Linux分区。如果没有空闲的磁盘空间,就需要将现有的分区删除后,腾出空间,以建立Linux分区。
图2中的/dev/hda6是在Windows下用Partition Magic为Linux准备的分区E盘(图1)。下面我们将在/dev/hda6上创建“/”、“/boot”、“swap”和“/home”分区。
(1)因 /dev/hda6 的文件类型是vfat,需先删除此分区,使它变成 “空闲”设备和“空闲分区”;
(2)创建“/”分区:选中“空闲”设备,按“新建”按钮,进入“添加分区”的窗口中,挂载点选“/”,文件系统类型选“ext3”,大小输入“5000MB”。
(3)创建“/boot”:同(2),在挂载点选“/boot”,文件系统类型选“ext3”,大小输入“100MB”。
(4)创建swap:一般swap分区的大小设定为机器内存的2~3倍为最佳,在“添加分区”的窗口,文件系统类型选“swap”,大小为600MB(如果内存为256MB),它不需要挂载点;
(5)创建“/home”:在挂载点选“/home”,文件系统类型选“ext3”,我们选择“使用全部可用空间”选项,将剩余的磁盘分配给/home区。
6.在完成了创建Linux分区后,接下来出现“引导装载程序配置”窗口。
对于Windows/Linux多操作系统共存的系统,开机时如何指定引导的操作系统,这需要借助开机引导装载程序(Boot Loader)。Linux内置了两种开机引导装载程序——LILO与Grub,在图3引导装载程序配置中,我们将开机启动的操作系统设为DOS(Windows),同时默认系统设置——以Grub作为引导装载程序。
7.配置好引导装载程序后,在接下来的“网络配置”、“防火墙的配置”、“附加语言支持”和“时区选择”的窗口中,我们都按系统默认进行选择。
8.和Windows XP相同,有一个称为“root”权限最大的管理员账户,使用这个账户登录主机可以完全掌握整个系统,安装过程中需要设置它的口令,请记住设置的口令。在后面的“验证配置”的窗口中,我们以系统默认的设置进行。
9.接下来是进行“个人桌面默认的设置”,选择“定制要安装的软件包集合”。然后是系统软件包的选择安装,在“选择软件包组”窗口中,为了测试每个软件包的功能,选择最后一个选项“全部安装”,安装全部软件包需4850MB的硬盘空间,按“下一步”后,系统开始进行软件包的安装。在安装过程中,系统会提示插入第二及第三张安装光盘。
10.软件包安装完成后,系统会提示“创建引导盘”,当系统无法引导的情况下,引导盘可作为紧急救援盘,我们强烈建议要制作引导盘。
11.随后系统显示“图形化界面(X)配置”、“显示器设置”和“定制图形化配置”的窗口,分别显示系统检测出的视频卡(显示卡)的型号、内存和显示器的型号以及色彩深度、屏幕分辨率等,一般按系统的默认值设置即可。
1、游戏服务器的日常系统运维工作,包括:环境部署搭建,服务器的监控、升级、安全、性能优化,游戏数据库管理等;
2、研究系统的服务架构,实现性能优化和提高系统的健壮性;参与制定和改进应急预案、策略和流程,提高服务运行质量;
3、配合开发人员进行软件系统、服务器环境部署,参与运维支撑平台的建设;
4、保障游戏服务器长期,安全,稳定的运行。
任职要求:
1、对CentOS、windows、SUSE等操作系统有一定的理解和把握,至少一年以上相关经验;
2、掌握Linux下shell,Perl或Python等一种以上的系统环境编程语言;
3、熟悉常用数据库(MSSQL/Mysql等)的操作管理及参数配置, 熟悉常用WEB软件(nginx, tomcat等)操作管理及参数配置;
4、对技术敏感而细致,乐于发现,对解决具有挑战性问题充满激情;
5、具备良好的敬业精神和高度的责任心,能适应高强度工作;
6、了解自动化运维或有游戏运维经验者优先。
★ 网络运维工程师的基本职责说明
★ 系统运维工程师的基本职责说明
★ 服务器运维工程师的基本职责
★ 服务器运维工程师岗位的基本职责
★ 运维工程师的主要职责说明
★ 运维工程师的职责信息
★ IT运维工程师工作的职责
★ 运维工程师面试
★ IT运维工程师岗位的具体职责
备份:
具体说来要这样做:
首先是要用root用户,必须的,然后是到/目录下,就是根目录下,然后就可以使用下面给出的命令一键备份了,easy:
代码如下复制代码
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found--exclude=/backup.tgz --
exclude=/mnt--exclude=/sys
这里稍微介绍一下代码,应该都认识的吧:
tar是Linux下的打包命令,就是类似于压缩的打包,加上参数‘cvpfz’用于表示创建一个打包文件,并且具有保存权限,后面的z表示使用gzip压缩,f参数后面就是街上名称了,这里的就是backup.tgz了。
后面加上的就是备份的目录,这里要备份所有的文件,自然就是根目录了:/。后面--exclude很明白吧,就是要排除的目录,这些目录下的文件我们不想备份,因为没有什么用,或者很大很大,严重影响备份的速度。当然了,不要笨到把自己想要备份的文件也排除了,那样结果会很怪异的。这里提醒一下,如果不想备份/mnt下,那就把它排除把,还有就是/media目录了,不要挂载东西,不然一起备份了,还是比较厉害的一个命令了。
可能在备份的最后会有一条信息,就是提示tar命令由于先前错误的耽搁存在错误之类的,不过这个不要紧,直接pass。
除此之外,还可以选择拥有较高压缩比率的Bzip来压缩文件,高压缩比意味着低压缩速度,那就需要很长的时间了,如果不是很着急,那就可以用下面的命令来做,其实也没什么,就是把上面的命令中的z参数替换成j参数,就可以了,这样的话命令就会变成这样:
代码如下复制代码
tar cvpzf backup.tgz / --exclude=/proc --exclude=/lost+found--exclude=/backup.tgz --
exclude=/mnt--exclude=/sys
恢复:
如果哪一天很不幸你的数据被毁掉了,你应该感到庆幸,因为你曾经备份过系统,但愿这个备份的时间不要太久了,
废话不多说,下面就是恢复。
我们已经将系统整个备份到了backup.tgz文件了
下面还是要确定你就是根用户,这样才能顺利进行,不然又得纠结的。
确定所拥有的备份文件在根目录下。这是必须的,不然会有意想不到的错误,你可以想象恢复到一般的时候恢复文件把自己给覆盖了的情况。
接下来我还是宣扬一下Linux的好处,就是不需要用光盘引导之类的,因为你就在操作的最底层,无需再次关开机什么的,额,这里除去你的系统已经被你搞得连shell都看不见了,还是老实点的引导吧,我们可以再Linux运行的时候还原文件,并且移除所有的其他文件,这是危险的。下面还是正题:
使用这个命令即可:
代码如下复制代码
tar xvpfz backup.tgz -C /
如果使用了bz2:,就是用下面的命令:
代码如下复制代码
tar xvpfj backup.tar.bz2 -C /
这回把分区里所有相同的文件用压缩文件里的文件代替,所有要三思而后行,除非你的系统的确需要还原。
下面的命令用于重新创建被排除的目录:
代码如下复制代码
mkdir proc
mkdir lost+found
mkdir mnt
mkdir sys
■/proc 权限:文件所有者:root群组:root所有者:读取 执行 群组:读取 执行 其它:读取 执行
■/lost+found 权限:文件所有者:root群组:root 所有者:读取 写入 执行 群组:读取 执行 其它:读取 执行
■/mnt 权限:文件所有者:root群组:root所有者:读取 写入 执行 群组:读取 执行其它:读取 执行
今天新上了一个linode的vps, 选择日本的数据中心! 速度还是挺快的,ping值很低。
直接点击,注册时输入 da932e6d6e613d7e0ae2cd3bc1302581a927fb04 ,使用3个月后,linode会返给我$20. 嘿嘿!
顺便提一句linode没有windows的vps。
今天这篇文章主要是记录一点关于mysql数据文件的导入、导出问题。其中涉及到MyISAM和InnoDB两种数据类型.
MyISAM数据类型就不说了,直接导出、导入就可以使用!
起因:我有一个WordPress的小站数据类型中有InnoDB和MyISAM,发现导入的数据文件中,InnoDB不能显示出来。为此,还把lnmp1.1重新换成1.0,最后发现只要是InnoDB数据在导入的数据库中都不能显示出来,才知道可能与mysql的数据类型有关。
上网查了一下,“InnoDB”类型,这种类型的一个表在磁盘上只对应一个“*.frm”文件,不像MyISAM那样还“*.MYD,*.MYI”文件。
MyISAM类型的表直接拷到另一个数据库就可以直接使用,但是InnoDB类型的表却不行。解决方法就是:
同时拷贝innodb数据库表“*.frm”文件和innodb数据“ibdata1”文件到合适的位置,
即在数据库引擎类型为InnoDB时,拷贝数据文件的同时还需要拷贝ibdata1 。
最后停止mysql服务,将目录下的ib_logfile*文件全部删除掉,重新启动mysql服务,大功告成。
上面只是手工备份,如果我们要更高级点是需要自动备份的哦
先编辑一个sh文件:
代码如下复制代码CODEvi /var/local/bin/crontab/backup_db.sh
内容为:
CODE
cd /var/backup/db
rm -f database.sql
mysqldump –opt -uroot database>database.sql
rm -f database.`date -d today +\%w`.tar.gz
tar -zvcf database.`date -d today +\%w`.tar.gz database.sql
scp database.`date -d today +\%w`.tar.gz backup.verycd.com:/var/backup/db/
然后编辑crontab:
CODE
crontab -e
增加:
CODE
0 3 * * * sh backup_db.sh
系统调用劫持是一种常见的rootkit实现技术。由于运行在内核态,因此其具有隐蔽性强,危害大的特点。 对于开源操作系统Linux来说,系统调用劫持的方法更加多样。 本文研究了Linux下常见的系统调用劫持方式,并以此为依据介绍检测系统调用劫持的一些方法,为系统的维护人员提出一些建议,避免攻击者利用系统调用劫持的方法造成危害。
2 SCT地址的寻找方法
在Linux系统下, 系统调用需要由int 0x80 中断实现,其中断服务程序为system_call。而int 0x80 的入口地址存放在IDT (Interrupt Descriptor Table中断描述符表)中。 系统调用的指针存放在SCT(System Call Table系统调用表)中。 因此,实现系统调用替换的关键是获取IDT的地址与SCT的地址。 系统运行在32 位的CPU中,具体实现过程分几步。
(1) 获取IDT地址。 IDT的信息主要存放在IDTR寄存器中, 这个寄存器存放了IDT的线性地址与IDT的大小信息。 可以使用SIDT操作获取IDTR中的数据。这里使用一个结构体idtr,有两个变量base与length,类型分别为unsigned int与unsigned short。 其中base存放了IDT的基址,length存放IDT的大小。 使用SIDT这条指令实现将IDTR寄存器中的内容存入idtr中。
(2) 获取int 0x80 中断处理程序system_call的地址。 获取IDT基址后,可以方便地获取每个中断描述符的地址。 定义结构体指针idt,以及结构体中的两个变量hoffset与loffset分别表示中断程序地址的高16 位与低16 位。 由于每个IDT项的大小为8 字节, 所以只需将IDT基址加上8 乘以中断号即可, 即idt=idtr.base+0x80*8。 此时idt->hoffset即为int 0x80 程序地址的高16 位,idt->loffset为低16 位。 将idt->hoffset左移16位加上idt->loffset即可得到int 0x80 中断处理程序system_call的起始地址。
(3)获取call指令地址。 通过对system_call进行反汇编分析可知,所有SCT中的系统调用都是通过call指令进行调用的。 因此, 可以通过搜索call指令来寻找SCT的入口。 在X86 架构下,call指令的16 进制码为/xff/x14/x85, 攻击者往往采取字符匹配的方式搜索call指令。 定义指针call_ptr,从system_call的起始地址开始搜索, 一旦搜索到连续的三个字节call_ptr[i]、call_ptr[i+1]、call_ptr [i+2] 分别为16 进制的ff、14、85, 可得到call指令的地址为此时的call_ptr[i]。
(4) 得到SCT地址。 由于SCT紧跟在call指令后面,所以call_ptr[i+3]即为SCT的地址。
3 系统调用替换
由于不能重新编译内核, 所以攻击者往往采用LKM实施动态的系统调用替换。 需要注意在完成替换后需要恢复系统原先的状态,以防止系统出错。 当前的绝大多数Linux系统都对IDT等重要的内存页进行了WP(Write Protect写保护),以防止这些内存页被随意篡改。 因此, 在进行系统调用替换前需要修改WP。 类似WP这种控制CPU工作模式与当前任务执行方式的控制位,通常在控制寄存器CR0-CR3 这四个寄存器中。 因此攻击者往往设计的实现过程涉及几方面。
(1) 在Intel 80486 处理器之后,WP被加入到CR0控制寄存器的第16 位, 即高16 位的最后一位。 当WP位为1 时,开启写保护模式,此时CPU不能向属性为只读的内存页中写入数据。 反之WP为0 时关闭写保护。使用内联汇编的方式,将CR0 和操作数0x FFFEFFFF进行与操作,使CR0 的第16 位置为0。
(2)编写一个恶意的系统调用函数。 这个恶意函数可以执行恶意代码,或修改printk输出函数,使得以系统调用作为数据源的IDS收集到错误的信息。 需要注意的是, 在构造函数时需要使用asmlinkage修饰函数名,告诉gcc编译器这个函数不用寄存器,而仅使用栈进行编译。
为了保证系统正常运行,新构造的系统调用函数首先需要实现原先函数的功能, 可以采取两种方法构造。以系统调用listen函数为例,一种方法是通过查看Linux系统的源码, 在其listen函数的基础上增加恶意代码构造一个新的函数newlisten。 它的好处是快速、直接,缺点是增加了代码规模, 且显然不适用于Windows操作系统。 第二种方法是在执行完恶意代码后,指向原先listen函数的地址,这样就可以继续执行listen函数,这种方法的优点是工作量小、代码规模小,缺点是需要两次跳转,执行速度稍慢于第一种方法。
(3) 改变系统调用函数的地址。 在/usr/include/asm目录下的unistd.h头文件中定义了每个系统调用系统函数在系统调用表中的地址, 语句为#define __NR_listen1067,使用上一小节得到的系统调用表SCT的地址,再结合1067 即可得到listen函数的地址。 使用构造的newlisten函数的地址替换原来listen函数的地址,这样,每当调用listen函数时,都会转而调用newlisten函数。
(4) 将CR0 和操作数0x00010000 进行或操作, 使CR0 的第16 位置为1,恢复写保护。
4 系统调用劫持的检测方法
由于Linux下的rootkit往往通过系统调用劫持实现,因此检测系统调用劫持是发现木马与病毒的重要方法。 根据系统调用劫持的实现方式,其直接的检测方法主要有几种。
(1) 监视SCT。 这是一种比较直接的检测方式,攻击者为了使恶意代码运行起来,往往需要修改SCT。 监视SCT,在其表项发生恶意更改时就很可能是遭到了系统调用劫持的攻击。
(2) 监视系统调用函数。 一些有经验的攻击者可能会通过修改原先的系统调用函数来实现rootkit,从而达到不修改SCT劫持系统调用的目的。 这时,系统的维护人员需要通过监视系统调用函数来检测攻击,可以采取的方法包括检测系统调用函数所占大小,其校验和等特征。
关键词:数据备份 Linux Rsync
中图分类号:TP309.3文献标识码:B 文章编号:1673-8454(2009)19-0027-02
校园网建设的工作重心主要集中在保证网络的正常运行和提供良好的网络服务。除此以外,数据备份也是网络管理员的重要职责之一。对数据进行自动远程备份是保证数据安全的有效方法。
一、现状
校园网中的应用系统,比如计费系统和电子邮件系统中积累了大量的用户数据,包括用户的费用和邮件等重要信息,对于此类敏感又很重要的数据一定要做好备份。这些数据具有实时性的特点,即信息随时都在发生动态变化。因此,要求能够对数据做到周期性自动跟踪,反之,需要恢复数据时能够恢复到离故障点较接近的时间点,丢失的数据尽可能少且在大多数用户的可接受范围内。
目前我校没有为备份提供专用的存储空间,在这种情况下,可以使用一台性能相对稳定并且磁盘空间较大的已被替换下来的服务器,作为存储平台。同时能够找到一种相对灵活的备份方案实现备份需求。但是用什么方法将数据传输过来呢?
二、选择方案
由于我校大多数应用系统都使用Linux操作系统,在Linux操作系统中数据备份方法通常有:(1)Linux系统中常用的备份工具tar、dump、restore等,但这些工具大多数适合本地备份,对不同主机之间的远程备份往往力不从心。(2)选择商业化的备份和镜像产品,但是这种产品通常价格昂贵。对于价格高的项目需要审批,从立项到实施周期长。(3)编写脚本,使用FTP等工具定时传输数据,但是这种方法的缺点是每次都要将所有文件和数据重新传输一遍,将要备份的文件和已备份文件没有比较,不考虑哪些文件是新增加的和更新的。当需要备份的数据量较大时,更是需要较长时间的网络传输,效率低。(4)使用自由软件——远程传输工具Rsync,Rsync是一个小巧而灵活但是功能强大的远程备份工具,它使用“Rsync演算法”提供一个非常快速的文件传输方法,使得本地和远端主机间的文档达到同步。Rsync只有第一次备份时需要传输所有数据文件,以后传输数据时会比较两组数据,相同的不再传输,只传输发生变化的数据部分,因此速度相当快,而且节省网络带宽。由此可以看出,选择Rsync做备份工具是最佳选择。
三、制定备份策略
实时数据备份对服务器和网络带宽的要求较高,因为不停地备份会降低服务器性能,而且会造成网络负荷过重。与提供良好的网络服务相比,数据备份应该是第二位的,当出现争抢资源时应该让位于网络服务。因此需要制定一个折中的策略——选择一个合适的时间间隔。白天服务器的访问量大,用户操作频繁,此时不适宜做备份,而晚上的访问量相对较低,系统和网络都处于空闲的状态,此时做备份既可利用系统的低使用率也不会增加网络负载。因此,选择每天凌晨备份,一天的数据差别在用户的可接受范围内。
四、实施方法
Rsync是以服务器/客户端的方式工作的,较为特殊的一点是Rsync服务器和客户端都使用同一个程序。启动服务器的时候需要指明以daemon方式运行,表明启动的是服务器。而启动客户端程序的时候则不需要指定daemon选项。
每台需要备份数据的服务器在设置上都类似,因此以一台服务器和一组待备份数据为例。例如,需要备份数据的服务器IP地址为10.0.0.1,该主机称之为Rsync-server,程序以daemon方式运行;作为存储平台的主机IP地址为10.0.0.200,运行Rsync客户端程序,该主机称之为Rsync-client。Rsync程序默认运行在TCP的873端口,即Rsync-server会监听873端口,等待对方的rsync连接。当以认证方式登录时,Rsync-server与Rsync-client连接时会检查密码是否相符,如果相符则开始文件传输。
1.Rsync-server(10.0.0.1)的配置
Rsync-server需要设置以下几项:
明确需要建立备份的目录
设置/etc/xinetd.d/rsync
设置/etc/rsyncd.conf
设置密码文件
(1)目录/udata以及子目录中存有用户数据,需要备份。
(2)设定/etc/xinetd.d/rsync,确保文件中两个参数:
disable = no
server_args = --daemon
使用命令service xinetd restart,使设置生效,使rsync服务进程以daemon方式运行rsync。
(3)Rsync服务器最重要最复杂的就是配置文件/etc/rsyncd.conf,这个配置文件控制着Rsync服务器的认证、访问、日志、可用模块等信息。该文件由一个或多个模块结构组成。一个模块定义是以方括弧中的模块名开始,直到下一个模块名或者文件结束。每个模块对应一个需要备份的目录。配置文件以行为单位,模块中的行是一些参数赋值或注释等。
uid = root
read only = yes
list = no
log file = /var/log/rsyncd.log
pid file = /var/run/rsyncd.pid
hosts allow = 10.0.0.200
hosts deny = 0.0.0.0/32
[userdata]
path = /udata
ignore errors
read only = yes
list = no
auth users = secretuser
secrets file = /etc/rsyncd.secrets
前五行指定在daemon模式下运行的Rsync-server是以root用户的只读方式运行,指定日志和运行时的进程ID的存放位置,以及允许连接的Rsync客户端地址等。这些选项是全局的。在模块[userdata]中指定了需要备份的目录,忽略了一些无关的IO错误,不允许列文件,备份时需要认证,及密码文件的存放位置等。
(4)密码文件的格式很简单,账号:密码。例如,/etc/rsyncd.secrets的内容可设为:
secretuser:secretpasswd123
注意,一定要设置密码文件的属主和权限,否则备份会失败。
#chown root.root rsyncd.secrets
#chmod 600 rsyncd.secrets
2.Rsync-client(假设主机地址为10.0.0.200)的配置
Rsync需要设置如下几项:
规划一个容量足够大的独立分区,并设置好存储目录
编写备份指令文件
将指令加入crontab列表中,完成定时备份
(1)设置存储目录为/backup。
(2)编辑文件rsync-restore,并存放在某一目录下,比如/目录下,文件内容为:
rsync-tvzrp-progress-delete secretuser@10.0.0.1::userdata /backup-passwd-file=/etc/rsyncd.pass
命令参数-tvzrp中的v是将传输过程显示到屏幕中,z是传输时压缩数据,r是逐级保留目录及目录下文件,tp是保持文件原有属性如权限、时间等参数。-progress指示详细的进度。-delete删除在Rsync-client上存在而Rsync-server上不存在的额外文件,精确保存副本。这一选项对邮件服务器很有实施价值,如果不删除已经不存在的文件,比如用户邮件,当恢复数据时,被用户删除过的邮件又会出现在用户的邮箱当中,这种莫名其妙的事情发生会给用户造成困扰。-passwd-file:指定用于rsync服务器的用户验证密码。/etc/rsyncd.pass文件中指定访问密码,内容为:secretpasswd123(与Rsync-server的/etc/rsyncd.secrets文件中密码一致),设置文件权限为读写 #chmod 600 rsyncd.pass。
注意,要修改rsync-restore文件的权限,否则备份不会成功。
#chmod 755 rsync-restore
(3)使用crontab命令定时备份文件,编辑如下内容:
0 2 * * * /rsync-restore
这样,每天凌晨2点Rsync-server就将待备份目录/udata以及目录下的文件以目录树结构做镜像自动备份到Rsync-client的/backup目录下。
五、结束语
当需要恢复数据时,在保证重新架设的应用服务程序与原服务程序保持一致的前提下,只要将备份的整个目录树恢复到服务器相应的目录下即可。注意,备份实施过程中设置rsync相关文件时,一定要设置使用权限,否则将导致备份失败。一般来说,备份用户数据比备份系统数据更频繁一些,合理规划备份方案,明确备份的内容、备份时间及备份方式,并进行适时备份可以有效防止重要数据的丢失。在日常工作中,备份是管理员的一项重要工作,掌握好备份技巧对管理员的工作很有帮助。
参考文献:
[1]用Rsync对网站进行镜像备份[EB/OL]. http://fanqiang.chinaunix.net/a6/b7/20010908/1305001258_b.html
[2]Linux下的远程备份(镜像)工具Rsync[EB/OL]. http://wuwd.blog.ubuntu.org.cn/2007/12/22/
在实际工作中,经常会遇到Linux系统进行重启网卡的操作。在这里整理一下,进行多种方法的网卡重启。
一、service network restart
1、首先用CRT工具连接到Linux命令行界面。 或者进入操作系统界面,选择终端输入。
2、如果我们对所有的网卡进行重启操作。 可以尝试输入:service network restart 命令进行操作。
3、样就完成了用service network restart命令重启网卡的操作,
二、ifconfig eth0 down / ifconfig eth0 up
1、连接到命令行界面,输入ifconfig查看网卡的基本信息。
2、查看到eth3的网卡信息。 输入ifconfig eth3 down ,卸载eth3网卡。
3、输入ifconfig eth3 up,重新加载eth3网卡。
三、ifdown eth0 / ifup eth0
1、连接到命令行界面。输入ifdown eth3,对网卡eth3进行卸载。
2、输入ifup eth3,对网卡eth3进行重新加载。
检查用户登录记录
more /var/log/secure
who /var/log/wtmp
检查系统守护进程
检查/etc/inetd.conf文件,输入:cat /etc/inetd.conf | grep –v “^#”,输出的信息就是你这台机器所开启的远程服务,
一般入侵者可以通过直接替换in.xxx程序来创建一个后门,比如用/bin/sh 替换掉in.telnetd,然后重新启动inetd服务,那么telnet到服务器上的所有用户将不用输入用户名和密码而直接获得一个rootshell。
检查网络连接和监听端口
输入netstat -an,列出本机所有的连接和监听的端口,查看有没有非法连接。
输入netstat –rn,查看本机的路由、网关设置是否正确。
输入 ifconfig –a,查看网卡设置。
检查系统日志
命令last | more查看在正常情况下登录到本机的所有用户的历史记录。但last命令依赖于syslog进程,这已经成为入侵者攻击的重要目标。入侵者通常会停止系统的syslog,查看系统syslog进程的情况,判断syslog上次启动的时间是否正常,因为syslog是以root身份执行的,如果发现syslog被非法动过,那说明有重大的入侵事件。
在linux下输入ls –al /var/log
在solaris下输入 ls –al /var/adm
检查wtmp utmp,包括messgae等文件的完整性和修改时间是否正常,这也是手工擦除入侵痕迹的一种方法
干了些什么?
root账户下输入history
能看到这个用户历史命令,默认最近的1000条
.拨掉网线
这是最安全的断开链接的方法,除了保护自己外,也可能保护同网段的其他主机.
2.分析登录文件信息,搜索可能入侵的途径
被入侵后,决不是重新安装就可以了,还要分析主机被入侵的原因和途径,如果找出了问题点,就可能使您的主机以后更安全,同时也提高了自己的Linux水平.
如果不知道如何找出入侵途径,下次还有可能发生同样的事.一般:
1.分析登录文件:可以通过分析一些主要的登录文件找到对方的IP以及可能出现的漏洞.一般分析的文件为:/var/log/messages和/var/log/secure文件.还可以使用last命令找出最后一个登录者的信息.
2.检查主机开放的服务:很多Linux管理员不知道自己的主机上开放了多少服务,每个服务都有漏洞或不该启动的增强型或测试型功能.找出系统上的服务,逐个检查服务是否有漏洞或设置上的失误.
3.重要数据备份
所谓重要的数据就是非Linux上的原有数据.如/etc/passwd,/etc/shadow,WWW网页的数据,/home里的用户文件,至于/etc/*,/usr/,/var等目录下的数据就不要备份了.
4.系统重装
重要的是选择合适的包,不要将所有的包都安装.
5.包漏洞修补
安装后,要立即更新系统包,更新后再设置防火墙机制,同时关闭一些不必要的服务,最后才插上网线.
6.关闭或卸载不需要的服务
启动的服务越少,系统入侵的可能性就越底
7.数据恢复与恢复服务设置
备份的数据要复制回系统,然后将提供的服务再次开放.
8.将主机开放到网络上
查找Centos Linux服务器上入侵者的WebShell后门
服务器被挂马或被黑的朋友应该知道, 入侵web服务器的第一目标是往服务器上上传一个webshell,有了webshell 就可以干更多的事 情,
网站被挂马后很多人会束手无策,无从查起,其实并不复杂,这里我将以php环境为例讲几个小技巧,希望对大家有帮助。
先讲一下思路,如果服务器上被上传了webshell那么我们肯定能够查到蛛丝马迹,比如php文件的时间,如果我们可以查找最后一次网站代码更新以后的所有php文件,方法如下。
假设最后更新是10天前,我们可以查找10天内生成的可以php文件:
find /var/webroot -name “*.php” -mtime -10
命令说明:
/var/webroot为网站根目录
-name “*.php”为查找所有php文件
-time -10为截止到现在10天
如果文件更新时间不确定,我们可以通过查找关键字的方法来确定。要想查的准确需要熟悉webshell常用的关键字,我这里列出一些常用的,其他的大家可 以从网收集一些webshell,总结自己的关键字,括号里面我总结的一些关键字 (eval,shell_exec,passthru,popen,system)查找方法如下:
find /var/webroot -name “*.php” |xargs grep “eval” |more
find /var/webroot -name “*.php” |xargs grep “shell_exec” |more
find /var/webroot -name “*.php” |xargs grep “passthru” |more
当然你还可以导出到文件,下载下来慢慢分析:
find /home -name “*.php”|xargs grep “fsockopen”|more >test.log
关键词:Linux;Ntloader
中图分类号:TP316文献标识码:A文章编号:1009-3044(2007)16-31156-01
1 引言
现在学习使用Linux操作系统是件很流行的事,所以很多人的电脑上除了安装常用的Windows系列操作系统之外还安装上了Linux操作系统,一般来说安装一个Linux是够学习用的了,但由于Linux的发行版众多,优缺点也各不一样,同时各个发行版更新的速度也相当迅速,所以有很多用户尝试着在电脑上安装多个Linux发行版,用来体会各个发行版的异同或是学习新旧版本之间的区别。安装多个版本的Linux有很多种方法,比如Linux系统所带的GRUB程序或第三方的多系统启动引导软件BootMagic和System Commander等,除此之外利用Windows 2000系列和Windows Xp系列自带的Ntloader引导程序也可以实现多个Linux系统与Windows系统共存。本文就以在一个硬盘上安装Windows XPProfessional(以下简称Xp)、Windows 2000 Server(以下简称2000)、Redhat linux 9.0(以下简称Redhat)、Redflag desktop 4.0(以下简称Redflag)为例给出其实现的方法。
2 实现方法
2.1硬盘的分区
安装系统前先进行合理分区,这里将硬盘的前一部分划分成C:、D:、E:、F:四个分区,其中C盘和D盘分别用来安装XP和2000 ,E盘和F盘用来存储数据。另外,为了发挥Windows 2000 服务器版的优势,将Windows 2000 Server所在盘的分区格式设置为Ntfs。值得注意的是此时只对硬盘的前一部分进行了分区,硬盘里还应有一部分磁盘空间未进行分配,这些未分配的空间是留给Linux系统使用的。此时的分区情况如图1。
图1 对硬盘的划分出C: - F:后的磁盘空间情况
2.2设置Windows系统
分完区后开始安装Windows系统,先安装XP系统,装好后将C盘根目录下的ntldr ,NTDETECT.COM,bootfont.bin三个文件备份。接下来安装2000系统,在2000安装完毕后会出现一个问题:在启动菜单中选择Xp系统却不能进入Xp,解决的办法很简单,用刚才备份的三个文件覆盖掉C盘下的原有文件,然后再重新启动就能正常进入Xp系统,这是因为Xp系统是在2000系统之后面世的,如果先安装Xp再安装2000的话就会出现2000 的启动文件覆盖掉Xp系统的启动文件,所以就会出问题。当然,更简单的解决办法就是将2000安装在C盘,Xp安装在D盘,这样先装2000再装Xp就不会出现这个问题了。
2.3 Linux系统的安装与设置
同样,安装Linux系统之前也要进行分区,需要注意的是Linux的分区不能事先划分好,如果在事先划分好的分区上安装多个Linux很可能造成只有一个Linux 系统能正常使用,所以Linux的分区最好在安装过程中用安装程序附带的分区工具进行手工分区。进行正式安装之前先规划出分区情况(如图2所示),为两个Linux系统分别划分出引导(boot)分区和根(/)分区,由于交换分区可以两个Linux系统共用,所以只划分一个就可以了。
图2 分区的最终结果
规划好后开始正式安装Redhat和RedFlag,在安装过程中一定要将Redhat与Redflag的引导程序(Lilo或Grub)安装在自己的引导(boot)分区的上,即Redhat要安装在hda8上,Redflag要安装在hda10上,千万不能安装在MBR上,这一点非常关键,否则就只有一个Linux系统能启动。
2.4获取两个Linux系统的启动文件
两个Linux系统安装完后重新启动计算机会发现开机的启动菜单里没有Linux的选项,只有2000和Xp的启动菜单。这是主要是因为我们暂时还没能将Linux的启动信息添加进开机菜单,要想开机菜单里出现这两个Linux系统的启动菜单就要得到这两个Linux系统的启动文件。
(1)Redhat第一张安装光盘的dosutils目录中的loadin.exe文件与子目录Autoboot下的vmlinuz文件拷贝到E盘(hda6)中,这两个文件可使我们能在DOS下进入Linux系统中。
(2)启动盘启动到DOS下,转到E盘,执行loadlin vmlinuz root=/dev/hda9 ,执行后会进入到Redhat Linux中。
(3)进入Redhat Linux后,执行dd if=/dev/hda8 of=/Redhat.lnx bs=512 count=1。这条命令是将Redhat Linux的引导分区储存为一个文件,并且文件名为Redhat.lnx,存放在其根 (/)目录下。
(4)重新启动计算机,重复步骤(2),但命令改成loadlin vmlinuz root=/dev/hda11,这样就进入到RedFlag Linux中。
(5)重复步骤(3),但命令改成dd if=/dev/hda10 of=/RedFlag.lnx bs=512 count=1。这样也在根目录下得到了RedFlag Linux的启动文件。
2.5将Linux的启动选项加入到开机启动菜单中
将刚刚得到的两个Linux的启动文件拷贝到C盘(hda1)中,然后修改C盘下的boot.ini文件,在其最后添加两行命令:c: Redhat.lnx=” Redhat Linux 9.0”,c: RedFlag.lnx =” RedFlag Linux 4.0”,这两条命令要分两行书写,这样就将Linux的启动选项添加到了开机菜单中。
2.6完成
重新启动后,启动菜单中就出现了Redhat Linux 9.0和 RedFlag Linux 4.0的选项,这时就可以从Windows Xp,Windows 2000 Server ,Redhat Linux 9.0,RedFlag Linux 4.0这四个选项中选择一个进入系统了,当选择其中的Linux系统时Ntloader引导程序就会调入其相应的引导文件进行引导,这样正常进入了Linux系统。
3 结束语
这种实现方法的最大好处在于安装完成后Linux系统与Windows系统互不干扰,即使要重装其中任何一个系统,也不会对其它已安装的系统造成影响。在没有重新划分过分区的前提下如果重新安装Xp只须备份好两个Linux的安装文件(Redhat.lnx,Redflag.lnx)和2000的三个启动文件(ntldr ,NTDETECT.COM,bootfont.bin),重装完成后放回C盘,再按修改C盘下的boot.ini文件即可,这样其它的系统比如2000、Redhat 或RedFlag仍能正常使用;如果重新安装2000、Redhat或RedFlag则按照正常安装的过程即可,不需要进行其它的设置,这是因为重新安装时在C盘中各自的引导文件并没有丢失。当然,如果将硬盘重新进行过分区后再用此方法就可能会有问题,因为所备份的安装文件已经不适应新的分区情况,所以这时仅将备份文件还原是不够的,应从步骤1开始重新进行安装。
另外,这种方法的另一优点是其不仅仅只适用于两个Linux系统与Windows系统的共存,只要仔细按照前文所述的方法,安装3个、4个或更多的Linux系统也是可行。
参考文献:
[1]许社村.Red Hat Linux 9中文版入门与进阶[M].清华大学出版社:北京,2003.
[2]CANDACE LEIDEN TERRY COLLINGS.著.王自东.等.译.LINUX宝典[M].电子工业出版社:北京,2002.
[3]中科红旗软件技术有限公司.红旗LINUX系统管理教程[M].电子工业出版社:北京,2001.
[4]梁如军.Red Hat Linux 9应用基础教程[M].机械工业出版社:北京,2005.
近年来,我国的养猪业发展很快,规模化养猪发展尤其迅速。2006年,我国生猪存栏量达到5.01亿头。我国养猪的分布表出现明显的区域特点,区域分布逐渐向长江流域、中原、东北和“两广”等地区集中。我国猪地方品种资源丰富,品种数有上百个,目前仍有72个地方猪种,列入《中国猪品种志》的有48个。随着我国养猪生产日益集约化发展,生猪及加工产品的转运也越来越频繁,猪病的复杂程度及其危害也越发严重。2007年,在我国发生了大规模的猪高致病性蓝耳病,具有传染性强、传播快、发病后可在猪群中迅速传播扩散和蔓延等特点,给养猪业造成巨大损失。因此,传统的猪养殖业需要进一步调整,信息技术也将成为发展现代养猪业的重要手段之一。
1 Linux发展现状
我国先后颁布了《鼓励我国软件产业和集成电路产业发展的若干政策》和《振兴软件产业行动纲要》,软件产业发展的政策环境得到不断完善。随着信息技术的不断发展,开源软件在我国得到越来越广泛的应用,对社会与经济发展的促进作用逐步增强。Linux系统已成为最重要的开源软件,它具有稳定、源代码开放、成本低廉、漏洞修补方便和相对耗资源低等优点,市场中涌现出了中科红旗Linux和中标普华Linux等一批优秀Linux软件。我国Linux应用市场领域主要分布在政府、金融、电信及嵌入各种数字设备等领域。国产Linux及开源软件企业在产品定位、技术研发、市场销售和培训服务等方面逐步形成了相对完善的运营体系。不过也看到,目前舆论支持大于实际应用是linux应用软件的特点,Linux应用软件在农业领域还没有推向市场。
2 农业应用软件发展现状
农业信息技术对于农业发展的重要性已经得到社会共识。农业专家系统的普及应用有助于提高农业的生产管理水平。自1992年开始,国家863计划智能计算机系统主题组织了农业专家系统的研制和应用推广工作。到目前为止,全国已经有20个智能化农业信息技术应用示范区,已经开发并推广的农业专家系统达到100多个,有效地解决了农民在生产过程中遇到的肥水管理和病虫害诊断等问题,取得了很好的应用效果。
养猪信息系统的研究日益受到人们的关注。1994年,中国农业科学院畜牧所许万根等为北京养猪中心开发猪场计算机管理信息系统。2006年,国家农业信息化工程技术研究中心开发了区域性养猪专家系统,在北京市、河北省和广东省等地得到较好地应用。“十一五”期间,国家大力提倡发展国产软件,基于开源软件的养猪应用系统将成为该领域发展的重点方向。
3 养猪专家系统总体结构和功能设计
3.1 总体设计
3.1.1 网络环境设计
利用软件编译技术和面向对象技术的软件设计方法将养猪专家系统体系架构设计为4层,即桌面用户层、Web服务层、应用服务层和数据服务层。采用Linux服务器进程分布技术,提供标准接口,进行各部分的信息交换。其体系结构如图1所示。
系统基于J2EE多层的分布式应用模型,充分利用网络技术和XML技术建立。它遵循MVC(Model-View-Controller)设计规范。模型(Model)提供应用业务逻辑,对应J2EE中的EJB类。视图(View)是其在屏幕上的显示,包括HTML页面和JSP页面。控制器(Controller) 对应Servlet、JavaBean类,它处于视图和数据之间,用于管理用户与视图以及视图与模型发生的交互。
用户的浏览器在客户层运行,并从一个Web服务器上下载Web层中的静态HTML页面或由JSP和Servlet生成动态的HTML页面。业务层由系统构件及管理工具组成,最主要的功能是支持养猪专家系统知识录入与编辑、推理机制、专家系统测试与调试等。它以知识库管理和推理机制为核心。知识库管理包括知识的录入与编辑,将这个知识库类库用一个无状态的会话EJB进行封装,一方面它可以定义一套完备的接口供接收器Servlets启动推理服务;另一方面它还需与代表知识库的实体EJB进行数据交换,访问事实与规则,存取临时数据等。
后台数据库层的访问采用了JDBC标准,它以一种标准的方法方便地访问数据库资源。JDBC的目标是使应用程序开发人员无需对特定数据库系统的特点有过多的了解,从而大大简化和加快了开发过程。
3.1.2 应用设计
从养猪业的生产实际需要出发,总结要解决的主要问题,设计出养猪专家系统数据库与知识库等,如图2所示。
3.1.3 数据库
建立猪的品种资源数据库、各品种种猪性状资源数据库、不同生长发育阶段的营养需求数据库、生产管理技术数据库以及种猪的主要疾病及其防治方法数据库。
3.1.4 知识库
搜集猪品种、猪场建设、饲养管理、生产管理、繁殖和疾病防治方面的数据资料。从搜集的数据资料中,根据专家系统规范,建立知识规则,有效为用户提供高效信息服务。
3.1.5 模型库
基于试验数据、观测数据和农艺数据,建立农业专家系统的模型库,包括猪生长发育模型、饲养管理模型、疾病防治模型和猪饲料利用率决策模型等。
3.2 功能框架
实现猪的品种选择、猪舍设计、饮食管理、饲料水平、肥育分析、粪便管理、繁殖管理以及疾病诊断与防治等,具体功能框架图如图3所示。
4 关键技术
4.1 构件开发技术
采用构件技术有利于在整个计算机工业中形成软件开发的规模效益,具有缩短开发时间、降低集成费用和软件维护费用等优点。同其它任何一个具有可改变部分的系统一样,标准对于构件架构也是很重要的。智能服务系统在基于前期工作的基础上,进行构件化分析,合理划分粒度构件和建立组合模型,实现小粒度功能构件,并能根据用户的不同需求自动组合成不同的功能构件,进一步优化软构件管理器的功能结构,包括基本软构件信息管理、软构件的导入与导出、构件与类型库的注册、类型库解析、接口检查以及软构件信息的一致性检查等,研究软构件接口规范以及软构件与基础平台其它部分的接口技术,并将知识管理方法结合到软构件管理技术中。
养猪专家系统通过功能构件接口进行构件集成。接口分为必要接口和可选接口两种类型:人机接口功能构件、推理机功能构件和解释机功能构件等是必要接口,而可选接口是用户进行配置时的可选接口,如知识获取构件接口;用户可以根据需要决定是否选择该种功能构件。
用户对功能构件的定制信息可有选择地存储在数据库中或者XML文件中。这样就为系统的扩展提供了可能,系统在执行时读取数据库或XML文件,组装指定的功能构件进行动态集成,并通过构件一致性检查功能对信息进行正确性验证,保证基于构件开发的养猪专家系统运行的正确性。
4.2 智能推理技术
智能推理技术是系统的核心技术,也是系统智能化的体现。智能推理功能是系统的显著特征之一,其主要任务是由事实推出结论,这些事实是利用规则或其它在知识库中的知识结构送进推理机的,要求增加合适的信息,根据要求对其结论和信息需求进行解释。常用的推理策略包括正向推理、反向推理和混合推理。本系统主要采用了反向推理策略,其基本思想是先假定某一结论,再通过合适的规则逐步推导,确认该结论。实现基于模糊知识库与模型库相结合,支持模型的计算和求解;采用模糊产生式规则的模糊匹配算法,由元知识控制的目标驱动和启发式搜索算法,进行冲突消解。创新难度主要体现在对多种基础理论的研究,其中包含演绎推理和归纳推理、精确推理和不精确推理、单调推理和非单调推理等。智能推理算法流程如图4所示。
4.3 基于XML的知识管理方法
为了实现养猪专家系统知识库跨平台管理与服务,研究采用可扩展标记语言XML作为知识库的知识描述语言。
定义的XML文档结构如下:
作为知识描述语言,XML提供了一种开放灵活的数据结构化机制。通过自定义的标记系统,XML不仅能将信息进行结构化,而且还能确定信息的语义,指定信息语义的结构。另外,通过向标记中嵌入脚本语言,还可以方便地对过程性知识进行描述。知识表示就是把知识编码成为一种适当的数据结构。目前,养猪专家系统已经把基于XML的知识表示模型与主流的数据表示模型(如数据库中的数据模型)耦合在一起。
4.4 养猪专家系统开发流程
图5为猪专家系统开发技术流程。基于该技术流程的猪专家系统,针对知识库、决策模型和决策系统依次开发,并最终通过应用验证不断完善。
猪农业专家系统与外部农业生产规划及模拟计算系统的连接,通过以下方式实现:作为专家系统推理开始的起点,作为推理的中间节点或者作为推理过程的结果(给出决策方案);调用和使用模型库,由系统中元知识(Meta-knowledge orented system)来进行管理,专家系统与模型间的通讯由存储有关参数和信息的文件来实现;专家系统中的模型运行结果,预测下一阶段猪生长发育的状态和走向,在此基础上根据预测结果制定调控措施方案。
5 结束语
当今市场经济条件下,农民迫切需要农业科技信息。随着计算机软硬件及相关的信息技术产品成本的大幅度降低,农业软件在信息的采集、存储、分析、加工和传送等过程中的位置越发重要,高质量的软件是信息技术在农业领域应用成功的关键。本系统充分结合养猪业发展现状,利用现代信息技术,能够为养猪业产前、产中和产后全过程提供信息服务,克服了农业专家和科技人员短缺的问题,有利于改变传统的农业技术推广手段,提高基层广大农民科技信息意识和文化素质。养猪业是我国的主要农业产业,需要现代技术,特别是信息技术提供辅助支持和指导实践,提高科学管理水平,以促进区域农业经济的发展。
参考文献
[1]吴华瑞,赵春江,杨宝祝,等.基于规范化软构件技术的农业专家系统开发平台研究[J].计算机与农业,2003(1):15-19.
[2]孙德林.信息技术在养猪业中的应用:信息技术在养猪生产中的过去、现在和未来[J].猪业科学,2006,23(2):12-15.
[3]张登伦,张树滨,孙敬,等.农业信息化建设与新农村建设的关系[J].农机化研究,2007(8):252.
[4]杨宝祝,吴建伟,薛敏菊,等.基于网络的智能化专家系统开发平台的研究[J].农业图书情报学刊,2007(9):5-7;13.
L我们是否有发现环境中我们较为常用的wordpress伪静态不生效,内页出现404错误页面。这个问题很好解决,因为我们lnmp采用的是nginx,而不是apache,所以不如apache直接丢htaccess文件到网站根目录就可以生效伪静态。
首先,默认安装的lnmp环境中已经有伪静态文件wordpress.conf文件在”/usr/local/nginx/conf/wordpress.conf”中,我们可以核对一下里面的编译代码是不是为:
代码如下复制代码if (-f $request_filename/){
rewrite (.*) $1/ break;
}
if (-f $request_filename/index.php){
rewrite (.*) $1/index.php;
}
if (!-f $request_filename){
rewrite (.*) /index.php;
}
如果不是,我们需要修改成上面的代码文件用来rewrite跳转伪静态,
其次,我们需要在属于我们网站的配置文件:
/usr/local/nginx/conf/vhost/www.***.org.conf(自己添加域名自动命名)
我们会看到类似下面的代码,看到粗线部分是我添加进去的,你就添加进去就可以:
代码如下复制代码server {
listen 80;
server_name www.111cn.net;
index index.html index.php;
include wordpress.conf;
最后,我们用ssh登录VPS,然后用下面的命令重启lnmp
/root/lnmp restart
【Linux系统工程师的工作职责】推荐阅读:
高级系统工程师的岗位职责07-12
Linux操作系统的权限代码分析06-29
构建嵌入式linux系统10-25
《Linux 操作系统》课程教学心得10-08
《Linux操作系统》理论教学大纲07-22
公路工程系统设计的论文06-06
系统集成工程师要求10-06
物流系统工程12-15
电气系统工程小结07-03
系统工程验收报告07-03