尚观科技linux学习笔记.docx
《尚观科技linux学习笔记.docx》由会员分享,可在线阅读,更多相关《尚观科技linux学习笔记.docx(23页珍藏版)》请在冰豆网上搜索。
尚观科技linux学习笔记
尚观科技linux
第一节、对于学习linux学习建议
总体建议
1、从兴趣开始,对于将来要在IT方面从事工作的人来说,学习linux事一个必须的事情。
现在大型的IT企业的公司,其后台的服务器基本都是搭建的linux集群;
2、避免工具型的学习,要学习起本质,因为当你学习了本质之后,不管是在那个平台,用哪种工具都很容易上手。
比如你学习了VB或者VC这些的话,对于在其他平台或者其他工具的学习很不利,加入你深入的学习了必须向C、java等语言,将在不同的平台受用;
3、理解OOS开源文化;
4、从项目开始的需求,反向学习,看你要做的项目需要什么,然后开始针对你的项目的实际需求开始。
现在学校的教育都是按部就班的进行的,学校学习的东西基本这是一个概念,没有形成体系;
具体建议:
1、抛开门户之见,windows和linux个有长处,windows在客户端占有优势,而linux是占据服务器端,并且高手是不论平台的;
2、学习linux只是学习的开始,要知道加入你一个平台用的好的话,但是不可以在上面做出一个产品或者做出属于自己的东西的话,那你仅仅开源被称作是修电脑的。
并且学习好了linux之后,开开源世界里面,有GUN里面有许多东西是围绕linux的,需要将周围的东西熟透并且用熟;
3、从开发者的角度学习,当看到一个软件的时候,不要被他所傻瓜化,要从开发者的角度思考这个软件是怎么做出来的,在linux下面,安装很多软件基本都是要自己去编程实现的;
4、学习unix触类旁通,因为linux有许多和unix相同之处,其实在unix的基础上修改过来的,人们经常乘linux为类unix(likeunix);
5、不管学习什么,关键是学的怎么样。
第2节、linux的概述
首先来介绍一下操作系统的角色:
操作系统
如图所示,操作系统最重要的是内核,内核的作用就是对硬件进行管理,而应用程序是不开源直接作用于内核的,他必须通过操作系统提供的系统调用接口来对作用于内核,然后内核作用于硬件。
但是不同的操作系统的内核是不同的,甚至是不兼用的,就像windows和linux一样,在windows上面运行的应用软件是通过windows提供的接口来进行对硬件的操作,而对linux无法进行,因为两种系统提供的接口不一样。
在编写操作系统的时候,他们就针对程序员提供不同的接口,让他们根据接口来编写程序。
最开始Torvalds在写linux的时候其实仅仅只有内核,其内核驱动的是368的计算机。
Linux的历史:
在进行介绍linux的时候,就必须要知道他的历史。
但是要知道linux的历史,肯定是绕不开unix的。
因为linux就是按照unix来编写的,现在又很多人都叫linux为类unix(likeunix)。
在1969年的时候KenThompson用汇编语言编写了Unics(后面才叫UNIX)。
但是由于他是用汇编语言编写的,所以当时的unix的可移植性差,到了1973年,Rutchie才有高级语言——C编写的第一个正式的Unix内核。
这才真正意义的诞生了Unix。
当时的Unix属于AT&T,因为当时的贝尔实验室是属于这家公司。
重要的强调一下,C语言就是为了使Unix有可移植性才在B语言的基础上改进成的。
在后来,Unix出现了两个分支,那就是BSD和systemV,BSD当时主要用于大学实验室免费使用,systemV主要用于商业,当时在后来两个分支出现了版权之争,在这儿及不用再说明了。
目前纯种的Unix就是SystemV和BSD,虽然SystemV不承认BSD,因为Unix是一个商标。
1984年,谭宁邦在不看UNIX内核代码的时候编写Minix,并且他通过磁盘销售给需要的人,并且提供源代码。
接下来不介绍linux,要介绍一下雨linux发展起着重要重要作用的一个组织——GNU。
GNU's是GUN'snotUNIX的缩写,是史托曼在1984年成立的的一个项目,这个项目的就是创建一个自由的、开放的UNIX操作系统,但是由于UNIX是不开放源代码的,所以说非常困哪,所以史托曼反其道而行之,创建开源软件在GNU上面运行。
之后为了方便软件的编写,GNU开始编写C语言的编译程序,由此产生了GCC,并且史托曼利用卖编译器Emacs获得了部分资金,用于支持GNU项目的前行,并且成立了自由软件基金会(freesoftwarefoundation,FSF)。
1985年,为了避免所开发的软件因为专利带来问题,所以草拟了通用公共许可证(generalpubliclicense,GPL)避免的这种问题的发生。
1991一年,芬兰学生托瓦兹照着minix编写了linux内核,并且放在网上给人免费下载修改,着直接导致了后来linux的不断改进。
在linux诞生之后,由于其内核是免费使用的,因此linux加入到了GNU中去了,着就解决了GNU没有操作系统的尴尬局面,之后越来越多的程序员根据linux,不断的开发出了适合在linux上面运行的开源软件,也就形成了今天的很多软件程序员围绕着在linux周围开发软件,并且不断为改进linux做出贡献。
值得一提的是linux的开发、改进、修改这些工作都是网络虚拟团队进行的,大家分布在不同的国家地区,只是通过互联网互相学习。
关于linux的版本就不在这儿提及了。
第3节、UNIXlike学习的要点
Linux基本都是文本进行操作。
学习linux和学习UNIX基本是一样的,只要精通了其中一项,其他的都会触类旁通。
学习要点:
1、不要用windows来要求UNIX,因为windows主要使用在客户端,而UNIX主要是运用在服务器,要是用windows来要求UNIX的话,那就没有学习的意义,包括LINUX和UNIX都是一样的。
比较简单的技术学习的学习的人就比较多,学习的门槛就低。
难度大的话,学习的人就少,收益可能就更大。
2、UNIX与DOS使用命令。
任何系统的操作不外乎三种,commend、TUI、GUI。
3、UNIX和windows占领着不同的领域,UNIX占领的是服务器,主要是用命令行,windows占领者客户端,主要是用GUI,也可以使用命令行。
搞服务器端的钱景更强。
4、两者的思维习惯不同。
UNIX重视喜欢用小的程序来组成大的应用。
Windows不可以,他只能用大的程序,功能集成的程序进行。
为什么在UNIX可组成不同的程序呢?
因为他们都遵循共同规则。
同时在UNIX下面只有很少的交互,在windows下有很多不同的交互行为。
Windows更是倾向于图形交互界面。
UNIXLike系统的主要原则:
1、没有信息就是好事,加入加入一个程序或者操作操作成功的话,一般不会有信息输出,表示成功结束。
2、一切都是文件,包括内核中的配置。
连硬件等设备都是文件的形式存在。
只需要简单的操作就可把所有的资料归零,包括所有硬盘里面的资料。
3、配置的信息以文本的信息保存着。
可以通过操作查看所有的配置。
可以通过文本的操作修改配置,要是自己像修改配置而没有写进文本里面保存的话,重新启动的时候将恢复原样。
而windows是注册表等存在。
4、避免不必要的用户交互,以参数来完成信息传递,直接一个命令让他自己去完成操作。
而windows不是这样,需要不停地交互,保证操作的合法性。
5、组合小的程序老完成复杂的操作。
第4节、linux操作系统的基本结构
Linux的基本机构是:
1、内核(Kernel)
2、模块(modules)
3、库(Lib)
4、Shell
5、工具、应用程序(tool)
其中shell和tool可以放在一个部分里面,即应用程序里面,所以说Linux主要是四个部分
在上面的记录中已经介绍了操作系统的结构,但是现在我在将两本书进行交叉的学习,所以在这儿同样描述一下操作系统,但是以不同的结构,更直观的详细的描述:
其中的程序中,有一个shell,是提供给用户对系统进行操作的。
内核的版本是可以下载了,可以下载到最新的源代码。
Kernel.org提供下载。
奇数版本的内核版本是在实验版本的,在测试,不稳定。
最新版的内核是2.6.24,并且2.4和2.6内核是在并行发展的。
从搭建服务器搭建上讲的话,linux的安全性没有windows强,因为linux的内核是开源的,黑客开源看到linux的内核,千万不要在其他地方下载,因为可能在其他的地方队kernel修改了。
所以说下载开源的软件的话,一定要在官方去下载。
不要将自己的操作系统的版本和kernel版本搞混了,比如redhat6.1它的内核不是6.1版本的。
Redhat的版本号结束为-EL,它是他的公司将linux根据自己的企业的需要进行了漏洞的修改,不是官方内核。
Linux的图形界面(Xwindow)是独立于系统之外的应用程序,不运行图形界面的话一样可以运行,但是windows的图形界面是已服务的形式运行的,是在内核空间里面运行的,要是图形界面没有启动的话是不可以的。
Xwindows下可以按CTR+ALL+F1进入第一个控制台,+F2进入第二个,一直到F6.以tty(1—6)虚拟终端表示,终端里面切换为ALT+F1-F6,若切换到Xwindow,应是ALT+F7。
启动第多个个xwindow的命令式:
startx--:
1……,是以pts表示,在xwindow下切换到其他xwindow的话,是ctrl+F7……(这个不好表示,只能意会)。
Xwindow下,关掉其他控制台进程的命令式:
shill-9pts/(控制台编号)……
一般企业的不会打开Xwindow界面,一般是以命令行的形式打开的,因为Xwindow好用的时间和内存是很大的。
可以再vi/etc/inittab下面的第一个不是注释的行(id:
),将数值5改成3即可,操作时R+3。
这样的话,若要在命令行启动xwindow,需要输入命令startx即可。
第5节linux下寻求帮助
Linux下的命令主要两种:
shell的内部命令和shell的外部命令,内部命令是shell本是跟提供的,外部命令shell本身不提供但是他会帮你去调用,外部命令在/bin下。
我们在与linux打交道的时候,其实大部分是与shell打交道,通过shell调用库,然后调用api,或者是通过shell直接调用api。
所以说学习linux其实是学习shell。
Shell的版本有很多,通过命令ls/bin/*sh可以看到系统中所有的shell版本,加入要使用其他版本的shell,可以自己在界面中输入shell版本的名称就可以了。
外部命令在/bin/下,内部命令可以直接运行,外部命令是可以在/bin/(命令名),可以对外部命令进行修改,例如mv/bin/ls/bin/lss,这样ls命令就变成了lls,(l注:
s命令是外部命令),这样在使用ls命令的时候就无法使用,需要用的是lls命令。
通过(命令)--help可以查看的外部命令的基本用法。
加入是内部命令的话,帮助可以用help+(命令名),但是man+(命令名),为通用的。
调用类型的用法是:
man(数值)(命令名)。
如果用info,可以用连接。
还有一个帮助的方式是google,google的英文帮助要比XX强很多倍。
Ctrl+C是停止进程,+L清屏、+Z暂停运行丢入后台运行(输入jobs可以看到后台运行的进程)、+S锁屏、+q推出s状态、+Q可以追踪命令历史
使用了man帮助之后,可以继续使用/-(参数)找到参数所在位置的帮助。
按n是向下查找,shit+n是向上查找。
命令的类型中,普通命令类型是1,文配置文件类型是5等,可以通过manman查看命令的命令。
所以可以通过man(系统类型代码)进行查找命令,例如man2man,就是查找系统调用命令。
下图所示的是使用manman命令看到的命令的类型。
其他方式的帮助,比如howto文档tldp.org、google、软件包的doc里面的readme文件等。
习惯:
a、命令和参数是区分大小写的。
B、程序是否可以执行,与后缀名无关。
C.、善于用tab键补全命令。
(按一个tab键补全,两次的话将全部可能显示)
第六节文件命令初步
通过pwd可以观看当前所在的路径,个人主目录是“~”表示。
创建和更新文件的命令是touch,假如文件已经有了的话,那个touch将会对文件进行的修改时间、访问时间、配置时间。
Ls-l可以查看文件的基本属性。
在linux下的文件假如以“.”开头的话,那么这个文件时隐含文件。
用ls无法看到。
需要用ls-a才可以观看到。
用ls-F的话,所看到的文件,假如文件后边带有“/”的话代表是文件夹,假如带有'"*"的话代表是可执行文件,假如是连接的话,带有"@"。
所以文件的属性不一样的话,所加的符号是不一样的。
Linux下的命令的参数可以连用,比如ls—Fa,是合法的。
单个ls命令,他本身就已经加了参数,只是他是默认的,假如在执行/bin/ls-a的话,将显示不出来文件的基本属性,直接使用ls的话是可以的,这样对于定制linux或者自己开发嵌入式系统的时候是有用的。
mv命令是移动文件盒重命名。
cp是复制文件。
rm是删除问价。
假如对一个文件夹进行操作的,需要加参数“-r”,但是这些操作都要交互,想要不交互的话,可以使用“/bin/”下访问,或者是再加上参数‘f’。
这些命令都是很简单的,关键是要连接linux以及使用。
任意一个以树形结构的文件都是可以通过跟"/"去找到。
“.”代表当前目录,“..”代表的是上一级目录。
Cd-是回到刚才的路径。
创建文件夹的命令是mkdir,rmdir用来删除空文件夹,所以一般都是有rm-r进行删除。
Cat命令是查看文件,more或者less是分页查看。
vi是编辑文件。
Alias查看别名以及命名别名。
添加用户的命令是useradd,修改密码是passwd。
root的账户默认账号忽略复杂性要求。
切换账户的命令是su-(用户名),要是没有‘—’的话,切换的不彻底。
(补充)
Pwd查看当前所在路径。
Touch一个文件的时候,在没有文件的时候将会创建一个文件,假如存在的化将会更新文件的三个时间。
命令ls-l可以查看文件的一部分基本属性,是有ls-a可以查看到隐藏文件,ls-F可以通过标记查看文件的类型,通过ls查看文件的时候可以通过颜色区分文件的类型。
但是如果使用/bin/ls将不会显示颜色,因为在平常我们使用的ls命令已经带有了参数。
可以通过mv命令更改文件的名字,例如mvab,就已将将文件名字修改成为b;
Cp为复制文件,加入是文件夹需要加上-r参数。
使用rm命令的时候有交互,假如不交互而立即删除的话,加上-f参数。
Linux的文件结构是树形结构的,要查找一个文件可以通过根开始去查找。
“.”代表的是当前目录。
Cd-回到刚才访问的目录,cd直接就是到自己的主目录中。
..代表的是前以目录,但是只能是两个点,不能是三个,到前两级的的命令是cd../../
Rmdir可以删除空目录,但是不能删除有文件的目录,因此rmdir很少用,一般都是用rm-r。
Vi是对文件进行编辑的命令,进入之后按i进入编辑模式,按esc键停止编辑,输入:
进入命令模式,输入q退出编辑。
别名,通过alias查看有哪些别名,同时通过alias定义一个别名,如下图所示,
不想要这个别名命令是unalias
但是这样的修改只能针对本次,假如想长久修改,则需要修改主目录下的“.bashrc”文件,命令是vi~/.bashrc
添加帐号命令是useradd,但是新建立的帐号无法登录,因为没有修改密码,通过命令passwd对其进行修改,记住root的密码不要求复杂性要求,但是其他的帐号的密码必须要求复杂性要求。
切换帐号如果直接用su的话,切换不是很彻底,可以用su-进行彻底切换,但是如果想彻底切换回去的话,不能直接用su-,因为他本身已创建了自己的节点
,需要通过exit退出之后才可以彻底切换回去。
第七节初级系统管理命令
显示/设置主机名的密码是:
hostname
用了这个命令的话,主机名在下次开机的时候是没有改变的,原因是没有修改配置信息。
需要vi/etc/sysconfig/……下面去修改信息。
只能是本次生效。
ifconfig命令式查看和修改自己的网卡的ip地址。
Netconfig是直接修改配置文件,但是在本次是不生效的,需要重启服务,命令式servicenetworkrestart。
显示内核版本命令式uname,id是显示用户信息。
Date是显示日期,加上参数“+%m”+%d,=%y,是显示月份、天、年的。
这些命令在shell编程的时候是很有用的。
cal是显示日历。
File命令式查看文件的信息。
Mount,是将设备挂在某个文件下面,设备的文件是在/dev/下。
命令格式是mount/dev/sda(磁盘编号)/(文件名)。
取消挂载的命令式umount,但是记得在当个文件下或者当前文件下有一个程序在运行的话是不可以取消挂载的。
其实在windows下面同样是可以的,只不过在windows下面将树的概念抽象出来,并且形成了即可不同的树。
在linux下面只有一颗是个。
在linux在,usb是sdb编号。
光盘是cdrom。
光盘的文件系统是iso9660.
在linux下的问价结构是单树结构的,windows是多树结构的。
制作镜像的命令式cat。
du是看文件大小,同时ls-l同样可以,但是ls-了现实的不是实际大小,显示的是文件本身的大小,目录也是文件。
df显示资源的使用情况。
切换用户的命令式su,完全切换的su-。
Ssh是远程登录。
Exit是推出当前shell,logout是推出登录shell。
(补充)2012、6、25
Hostname查看自己的主机名和修改,但是修改将在重启的时候不再生效,需要修改的是配置文件,具体的配置文件是/etc/sysconfig/network.
查看和修改自己ip地址的命令是ifconfig,但是同样在重新启动的时候不再生效,需要修改的文件是/etc/sysconfig/network-scripts/ifcfg-(网卡),记住以太网卡的第一张网网卡名字是eth0
所示通过以上总结得知,一般通过命令修改的配置信息是在重启的时候不生效的,都需要修改配置文件。
但是也有命令来修改配置文件的,比如上述的修改ip的地址的命令是netconfig,然后通过servicenetworkrestart既可以。
uname是查看你的机器系统的信息,uname-a查看编译,uname-r查看内核版本。
id显示的用户的信息。
这些信息都是很简单的,但是这些都是用来做shell脚本的。
Date显示时间信息,显示的形式是%,比如date+%y%m%d,显示出年月日,cal显示的是日历。
File是查看文件的信息,比如查看文件是否可执行等。
Mount命令可以识别优盘格式,但是假如不能识别的化需要进行参数说明,加入优盘为fat格式的,则命令是mount-tvfat/dev/sdb1/mnt等。
假如是光盘,命令格式为mount-tiso9660/dev/cdrom/mntd等,因为光盘的文件系统为iso9660.。
同时可以挂载一个windows系统,格式为mount-tcifs//(ip地址)
第8节linux系统用户和组的管理
新建和删除用户和组命令:
useradd添加用户,usdel删除用户,passwd修改用户密码,gruopadd添加组,guorpdel是删除组,gpasswd修改组密码。
如果要彻底删除的话,需要添加—r参数。
用usermod对用户的信息进行修改
Linux中只区分两种账号,一种是UID为0的,即root,另外一种的uid不为0的,即一般用户,所以如果将某个用户天剑在root组里面的话,依然不是管理员,只不过权限相应会变高。
在一台新的机器上,可以讲配置文件以及用户文件home/复制过去既可以用了,因为linux下的所以操作都是基于文件的。
(补充)2012.6.24
对用户进行添加的时候,会修改三个文件,分别是/etc/passwd、/etc/shadow、/etc/group
用户的密码放在shadow里面,组的密码放在/gshadow里面,passwd文件记录用户的基本信息。
在创建用户的时候,会创建/home/(用户名)的用户文件夹,同时会将/etc/shel/.*复制到用户文件夹下,并且将这些文件的文件和文件夹的拥有者都进行了修改。
自己添加的用户和组的编号都是从500开始的,500以前的都是系统用的。
进入shadow进去可以看到密码,到时这个密码是md5加密的,并且是单项加密的。
将上面的四个文件和home文件复制到另外一台机器上面上,就可以将两天主机的用户变成一样的了。
使用命令scp-r/home/*(主机ip):
/home/。
在/etc/loin.defs文件里面配置了建立用户的部分默认信息。
加入将上面的几个文件删除的话,不用担心,可以进入单用户模式进行恢复,因为上面的几个文件都是有备份的。
命令users查看哪些用户登录,who查看登录用户的基本信息。
Pts/(数字)表示登录控台的个数,tty表示虚拟控台。
W命令显示的是用户登录的详细信息
last查看也用户登录日志,
lastlog查看每个用户最后登录的日志
第九节文件的存储于权限
Linux下面,具有流程类型的文件,分别是—(普通)、l(连接)、b(块)、p(管道)、s、c(字符)、d。
用l-l命令可以看到文件的相关信息以及权限,第一个字符是表示文件类型,后面的三个位一组,第一组表示拥有者权限,第二组表示组权限,第三组表示其他用户权限。
X表示可执行,r表示可读,w表示可写,—表示无权限。
各个权限的代表值分表是r—4、w—2、x—1,总权限就是三个数值相加。
修改权限的命令是chomod,将上面的数值的代表值转换为二进制,加入对应的是1的话,就代表修改相关权限。
在linux中,没有权限的叠加,但是root的权限却是最高的,在没有权限的情况下,依然可以进行操作。
在用ls-l进行查看的第一个数字是代表连接数
文件在硬盘的存放时分为三个部分,第一个部分是目录,在目录里面存放着文件的名字以及相关的inode,第二个部分是inode,用来指向相关的块,第三部分是block,之真正的存放文件的地方。
加入是一个空文件,他在第三部分是没有的。
文件的相关信息包括权限、连接数、修改时间都是存放在inode中。
也可以直接指向inode,指向的数量的总和就是连接数。
Chown是修改拥有者,参数—R修改文件夹下面全部文件的拥有者,可以同时修改拥有组,通过“.+(组)”进行修改.
(补充2012。
6.24)
Linux下的文件的属性有各种类型、访问权限、连接数、文件拥有者、文件拥有组、修改时间、文件名。
下面的图片里面的命令,将会将硬板废掉,数据全部丢失。
Ls-ld显示文件夹的权限。
做硬连接的命令是ln,但是不可以块分区,做软连接的命令是ln-s,看跨分区,同时可以对目录做。
第十节文件夹与权限
查看文件的实际大小的命令式du,显示文件夹的信息,包括权限的命令式ls-ld。
对于文件夹的最重要的权限是x,表明可以cd进去。
但是需要同时x权限的时候才可以查看到进入。
所以系统下面