我从2003年6月开始接触linux,真正应用它是在2003年底。那时学校的实验选课系统服务器装的是linux,为了能更好的维护它,决定学习linux。下面谈谈我的学习经历,以及一些感受,希望能给大家带来一点帮助。说明一下,我用的最多的是Redhat linux,也学过一点Sun Solaris及SCO,下面仍以Redhat为主介绍,linux/unix可以认为是一个大类,有很多是共性的东西。
和一般的初学者一样,我学习linux也是从基本命令学起的。下面列举一些实际工作中常用的命令及概念,按照功能排序。
文件、目录类:cd、pwd、ls、ll、file、cp、rm、mv、chown、chmod、chgrp、tar、gzip、gunzip、wc、find、locate、
文本文件类 cat、more、less、head、tail、echo、diff、grep
用户管理 useradd、userdel、passwd
网络及安全类 ifconfig、ifup、ifdown、netstat、ping、htmlview、ssh、telnet、nmap、talk、wall
系统类 date、logoff、uname、w、who、whoami、sar、free、df、du、poweroff、reboot、sar、uptime、top、man、make、cron、ps、kill
工具软件类 rpm、vi、ftp、setup、bc、gcc、gdb
概念 目录树 管道 配置文件 运行级 脚本文件 任务调度
熟悉上述命令对于完成日常工作很有帮助,这些命令几乎涵盖了各种常规的系统管理任务。从文件管理、用户管理、软件安装、网络及安全管理到系统性能监测与诊断,熟悉这些命令,再加上学会下面介绍的几种常用软件的使用,成为一名Linux技术员应当没有问题。我们应用linux一般是作为服务器,所以下面的这些也都是服务器软件。
1、Web服务器 apache
我感觉Web服务器apache的配置最关键的就是一个httpd.conf文件。对它的操作就要用到上面的几个命令了,下面举例说明。要找到它的位置,需要熟悉目录树结构,或用locate httpd.conf搜索,一般先用cd切换到指定目录,linux下的配置文件一般是文本文件,用file httpd.conf命令,看到ASCII English text,说明是文本文件。对配置文件操作前,一般需要先备份一下原始配置文件,防止修改错误,可以用cp httpd.conf httpd.conf.bak来做备份。对于内容的修改,就需要用vi了。它是linux下的很经典的工具,确实好用。一般需要改动的不多,可能会需要改DocumentRoot()、DefaultLanguage zh-CN、AddDefaultCharset GB2312等。
2、数据库服务器 mysql
数据库的安装可以参考它的安装手册,需要注意的是每一步必须严格按照说明,看准每条命令哪里加空格,哪里加点(.),有时候问题就出在这些小地方。还有一点,如果安装失败,可能是缺少一些必须的函数库。
对于数据库的管理,可以在Web服务器上安装一个Web形式的管理软件phpmyadmin。它可以完成建立、删除数据库、数据库的重起、建立、删除表、更改表结构、sql语句的执行、数据库状态监测、数据库的权限分配、数据的导入导出等。
对于数据库的灵活控制,我感觉还是靠脚本及任务调度。比如自动备份数据库,可以通过写一个脚本文件,里面写上/usr/local/mysql/bin/./mysqldump --password=*** *dbname*>dbbak,另外通过/etc/crontab里面写上任务调度来实现,如写0 19 * * * root /root/mysqlback.sh,表示每天17点执行脚本备份。
3、ftp服务器
Redhat Linux主要集成的FTP服务器是wu-ftp和vsftpd,RH9及以上都是vsftp了。我安装系统的时候一般装上他们,用于开启匿名FTP,在系统中加入用户后,每个人就有了一个网络存储空间了。再加上磁盘配额,可以限制用户过多的占用磁盘空间。
4、邮件服务器
邮件服务器不是必需的,会架设它更好。我试验了几次,始终没成功,说需要域名的支持,故繁琐一些。还有一点说明,据说邮件服务器的架设需要备案。
上次写了四个小时,今天晚上继续写点。
关于linux的用途:
以前应用Linux主要是做为应用服务器,也就是上面说的那几种,主要看中它的安全可靠、管理方便。最近一段时间用它做其他的用途了,这也是Linux另一个施展才华的领域----嵌入式应用,交换机、路由器、防火墙、手机、信息家电、手机、PDA、智能仪表、工业控制,等等。我将主要用它做工业控制,现在正在学习,并且已经取得了阶段性的进展。linux因其开放源代码、安全可靠、功能强大、内核可裁减,在嵌入式领域扮演越来越重要的角色,对它进行深入研究,可以大大提高我们的嵌入式系统设计水平。
linux的内核
关于深入学习linux,必然要提到Linux的内核。这主要包括内核的原理、结构、编译等。linux的内核结构复杂,源文件多,并且不同版本的源代码往往又有差异,内核实现的时候又用到很多巧妙的方法(这也就是前几年流传的linux应用了很多黑客技术,它是电脑高手的操作系统的原因),这几点都是影响我们学习linux内核的重要因素。尽管有诸多困难,当我们迎难而上,深入钻研的时候就能发现其中的乐趣,能从中学到很多关于计算机以及处理问题的思路。具体点说,关于操作系统、数据结构、C、汇编、计算机体系结构、网络、文件系统等等。
学习linux的内核,对我们的要求较高,上面提到的基础知识很多都会用到。比如linux内核的源码的查看会用到Vi,会用到目录树的概念,还有gcc编译器的使用,gdb调试器的使用,linux的启动过程。linux的源码及说明大约有上万个文件,但是这些文件的组织有其内在规律。它们按照功能、硬件体系结构分类,比如源代码的根目录下有几个目录:体系结构arch、驱动drivers、文件系统fs、内存管理mm、网络net、内核kernel、初始化init、脚本scripts等。比如要考虑Linux在不同的体系结构上的移植就要参考arch下的文件了。关于网络的功能都放在了net下,比如以太网、蓝牙、IPv4等等。读内核先从分析内核的组织结构开始,从简单的代码开始,逐渐熟悉内核编写的习惯,注意积累,多读多想,有的时候就会豁然开朗。
我现在学习内核的时间也不长,等我理解了再继续深入讲解。
说说linux下的编程
linux发行包内一般都集成了多种语言的编译器,最常见的当然要算C了。linux下的编译器一般用gcc。我这里说的linux下编程仅包含linux命令行下的程序的编写,不包括带图形界面的。gcc的基本使用很简单,但是它的功能很强,关于它就可以写一本书(其实linux/unix下的很多开源软件都有这个特点----功能强大、参数多)。创建一个c源文件a.c,用gcc a.c就可以编译了,如果没有错误的话在当前目录下会生成一个可执行程序a.out。用./a.out就可以执行了,注意要把a.out的文件属性改为当前用户可以执行(用 chmod +x a.out)。


robertmaggie 于 2007-11-16 11:51:14发表:
不错 不错 很不错