一、基本知识

 

Linux来历

什么是Linux?
计算机组成
    硬件 + 软件
    软件
        系统软件:有效地控制这些硬件资源的分配,并提供计算机运行所需要的功能之外,为了提供程序员更加容易开发软件环境,还需要提供一整组系统调用的接口来给软件程序员开发用。
        应用软件:为满足用户不同领域、不同问题的应用需求而提供的那部分软件
Linux提供了一个完整的操作系统中最底层的硬件控制与资源管理的完整架构,这个架构延续Unix良好的传统来的,所以相当稳定而功能强大。并且可以运行在x86系统上面
软件移植:不同的硬件的功能函数并不相同,IBM Power CPU Inter x86架构就是不一样,同一套操作系统是无法在不同的硬件平台上面运行。如windows与Mac。linux是一个Open Source的操作系统,所以linux程序可以被修改成适合在各种机器上面运行,Linux具有可移植性。

Unix的发展历史
    早期计算机只有在军事和高科技用途或者学术研究有可能接触,当时特别笨重并且操作麻烦,当时输入设备只有卡片阅读机,输出设备只有打印机。当时编写程序非常麻烦,程序员在读卡纸上打洞,然后在传到卡片阅读机来将信息传入主机中运算。主机少,用户多,浪费时间
    后来由于硬件和操作系统的改良,可以通过键盘输入。但是如果想多个人使用计算机还是需要等待。
    20世纪60年代,麻省理工学院开发了分时操作系统CTSS,可以让大型主机通过提供多个终端以接入进入的主机。从而利用主机的资源来进行运算工作。
    ?是真正的同时操作吗?
    当时这些终端机只具有输入输出功能,不具备任何运算和软件安装的能力,并且比较先进的主机也只能提供30台左右的终端机而已。
    为了加强大型主机的功能,以便让主机的资源可以提供更多的用户来利用,Multics计划诞生。
        1964年,贝尔实验室,麻省理工学院,美国通用电器公司共同发起,致力于构建一个理想的分时操作系统,让大型主机连接1000个终端,支持300用户同时上线。但是由于计划进度落后,资金短缺,在1969年宣告失败,贝尔实验室推出此计划。
    肯·汤普逊则继续为GE-645开发软件,并最终编写了一个太空旅行游戏。经过实际运行后,他发现游戏速度很慢而且耗费昂贵——每次运行会花费75美元,正巧被他发现了一部被闲置的PDP-7,在丹尼斯·里奇的帮助下,汤普逊用PDP-7的汇编语言重写了这个游戏,并使其在DEC PDP-7上运行起来。这次经历加上Multics项目的经验,促使汤普逊开始了一个DEC PDP-7上的新操作系统项目。汤普逊和里奇领导一组开发者,开发了一个新的多任务操作系统。缩写为"UNICS",后来,大家取其谐音,就称其为"UNIX"了。
    最初的Unix是用汇编语言编写的,由于汇编语言具有专一性,加上当时的计算机机器架构都不太相同,每次安装到不同的机器上都需要重新编写汇编语言。所以用当时的高级语言B语言重新编译,但是性能不太好,所以汤普逊和里奇对其进行了改造,并于1971年共同发明了C语言。
    1973年汤普逊和里奇用C语言重写了Unix。在当时,为了实现最高效率,系统程序都是由汇编语言编写,所以汤普逊和里奇此举是极具大胆创新和革命意义的。用C语言编写的Unix代码简洁紧凑、易移植、易读、易修改,为此后Unix的发展奠定了坚实基础。
    1974年,汤普逊和里奇合作在ACM通信上发表了一篇关于UNIX的文章,这是UNIX第一次出现在贝尔实验室以外。此后UNIX被政府机关,研究机构,企业和大学注意到,并逐渐流行开来。
    1975年,UNIX发布了4、5、6三个版本。1978年,已经有大约600台计算机在运行UNIX。
    1982年,AT&T基于版本7开发了UNIX System Ⅲ的第一个版本,这是一个商业版本仅供出售。为了解决混乱的UNIX版本情况,

BSD诞生
    贝尔实验室属于AT&T公司,当时AT&T公司对于UNIX采取的是开发的态度,并且当时UNIX是用C语言编写的,只要获取源码加以修改就可以将UNIX移植到另一台不同的主机上,所以在1973年以后,UNIX便与学术界合作开发,加州伯克利大学就是其中的一个学校。
        伯克利大学Bill joy在取得UNIX内核源码后,着手修改成合适自己的机器版本,并且添加很多工具软件与编译程序,最终命名为BSD。后来创办SUN公司。BSD对UNIX最重要的贡献之一是TCP/IP。这些发布版中的TCP/IP代码几乎是现在所有系统中TCP/IP实现的前辈,包括AT&T System V UNIX和Microsoft Windows。

Minix系统
        当时由于UNIX高度可移植性与强大功能,加上没有版权的纠纷,所以很多商业公司开始了UNIX操作系统的开发,出来很多UNIX。但是都是只能支持自己的硬件,AT&T综合了其他大学和公司开发的各种UNIX,开发了UNIX System V Release 1。这个新的UNIX商业发布版本不再包含源代码,所以加州大学柏克莱分校继续开发BSD UNIX,作为UNIX System III和V的替代选择。1979年,System V版本7发布,这是最后一个广泛发布的研究型UNIX版本。并且可以支持x86架构的个人电脑。但是由于商业考虑,将UNIX版权收回,特别提到了不可对学员提供源码的限制。
        
        Minix不完全免费,无法在网络上下载,只能通过磁带机购买,附带源码。在就是Minix主要用于教学,对Minix只是点到为止
        
GNU自由软件项目
    1971年Stallman进入当时黑客圈中相当有名的人工智能实验室,当时黑客圈对于软件的着眼点几乎都是分享,所以并没有专利之说,当时由于管理者原因,导致很多优秀的黑客离开该实验室进入到商业公司继续开发优秀的软件。stallman发现他一个人无法完成所有工作,于是想成立一个开放的团体来公共努力。
    1983年以后,实验室硬件更换,导致不能继续以原有的硬件与操作系统继续自由程序的编写,而之前所使用的操作系统是麻省理工学院的专利软件,无法共享,于是放弃使用转向Unix。为了在不同的平台中运行,他将开发的软件都编写成可以移植的源代码公布出来
    1984年,开始GNU项目,想创建一个自由、开放的Unix操作系统。但是一个人的力量是有限的,又不想放弃这个项目,于是反其道而行之,操作系统太麻烦了,那我就先写在UNIX上面运行的小程序。这样,Stallman开始参考UNIX上面的现有软件,根据这些软件的功能和作用开发出相同功能的软件,并且在使用上面比商业软件也差不了多少,于是GNU慢慢打开知名度
        Emacs    
        GCC
        GLIBC
        Bash Shell

GNU通用公共许可证
    1985年,为了避免GNU所开发的自由软件被其他人所利用成为专利软件,所以找律师草拟了GPL,相当于专利软件的CopyRight。使很多软件开发者可以借由这些基础的工具来进行程序开发,进一步壮大了自由软件团队。不过,对于GNU最初的梦想,创建一个自由的UNIX操作系统来说,这些优秀的程序仍无法满足,因为没有自由的UNIX内核存在......
        自由软件运动:
        发布程序的时候同时发布源码,方便不同硬件的计算机可以修改适合自己的环境
        源码发布以后,会有更多的人来去修改和加强这个程序

Xfree86项目
        1988年,图形用户接口GUI的需求日益加重,麻省理工学院与其他第三方首次发表X Window System,并成立XFree86组织,在1994年发布的Linux中集成

Linux诞生
        Linus Torvalds(托瓦兹, 1969年出生)的外祖父是赫尔辛基大学的统计学家, 他的外祖父为了让自己的小孙子能够学点东西,所以从小就将托瓦兹带到身边来管理一些微电脑。 
        1988年间,托瓦兹顺利的进入了赫尔辛基大学,因为学业的需要与自己的兴趣, 托瓦兹接触到了Unix这个操作系统。当时整个赫尔辛基只有一部最新的Unix系统,同时仅提供16个终端机。实在很难满足托瓦兹的需求,因为光是等待使用Unix的时间就很耗时~为此,他不禁想到: ‘我何不自己搞一部Unix来玩?’不过,就如同Stallman当初的GNU计划一样,要写核心程式,谈何容易~不过,幸运之神并未背离托瓦兹,因为不久之后,他就知道有一个类似Unix的系统, 并且与Unix完全相容,还可以在Intel 386机器上面跑的作业系统, 那就是谭宁邦教授为了教育需要而撰写的Minix系统! 他在购买了最新的Intel 386的个人电脑后,就立即安装了Minix这个作业系统。 因为Minix这个作业系统是有附上原始码的, 所以托瓦兹也经由这个原始码学习到了很多的核心程式设计的设计概念!
        探索完了386的硬体之后,终于拿到Minix并且安装在托瓦兹的386电脑上之后,托瓦兹跟BBS上面一堆工程师一样, 他发现Minix虽然真的很棒,但是谭宁邦教授就是不愿意进行功能的加强,导致一堆工程师在作业系统功能上面的欲求不满! 这个时候年轻的托瓦兹就想:‘既然如此,那我何不自己来改写一个我想要的作业系统?’ 于是他就开始了核心程式的撰写了。
        好在有GNU计划提供的bash工作环境软体以及gcc编译器等自由软体, 让托瓦兹得以顺利的撰写核心程式。他参考Minix的设计理念与书上的程式码,然后仔细研究出386个人电脑的效能最佳化, 然后使用GNU的自由软体将核心程式码与386紧紧的结合在一起,最终写出他所需要的核心程式
        为了让自己的Linux能够相容于Unix系统,于是托瓦兹开始将一些能够在Unix上面运作的软体拿来在Linux上面跑。 不过,他发现到有很多的软体无法在Linux这个核心上运作。这个时候他有两种作法, 一种是修改软体,让该软体可以在Linux上跑, 另一种则是修改Linux,让Linux符合软体能够运作的规范! 由于Linux希望能够相容于Unix,于是托瓦兹选择了第二个作法‘修改Linux’! 为了让所有的软体都可以在Linux上执行,于是托瓦兹开始参考标准的POSIX规范。

 

 

linux发展史里程碑事件

 

1991年,Linus Torvalds发出了一条著名的消息“Hello Everybody Out There”,然后他发布了第一个linux代码
1992年,Linus将Linux授权给自由软件基金会通用公共许可,这是一个重要的决定,帮助Linux在未来数年取得了成功。
1993年,Slackware成为第一个被广泛采用的发行版
1996年,Linus参观水族馆,被一只企鹅咬了一口,于是选择它成为linux的吉祥物
1998年,科技巨头开始宣布为linux提供平台支持
1999年,RedHat(红帽Linux)走向公众
2003年,IBM在超级碗比赛期间投放著名的Linux广告
2005年,Linus登上《商业周刊》封面,作为向Linux取得的成功致敬
2007年,Linux基金会成立,致力于促进Linux的保护和标准化,Linus是其中一员
2010年,基于Linux的智能手机操作系统Adroid OS使其他所有手机操作系统相形见绌,并逐步取得统治地位
2011年,Linux走过20年,并成为超级计算机、股票交易、电话、自动取款机、医疗记录、智能电网的驱动力,这个名单还在增长。

 

 

 

Linux目录详解

 

认识目录结构:man hier


/:根目录,一般根目录下只存放目录,不要存放文件,/etc、/bin、/dev、/lib、/sbin应该和根目录放置在一个分区中

/bin:/usr/bin:可执行二进制文件的目录,如常用的命令ls、tar、mv、cat等。

/boot:放置linux系统启动时用到的一些文件。/boot/vmlinuz为linux的内核文件,以及/boot/gurb。建议单独分区,分区大小200M即可

/dev:存放linux系统下的设备文件,访问该目录下某个文件,相当于访问某个设备,常用的是挂载光驱mount /dev/cdrom /mnt。

/etc:系统配置文件存放的目录,不建议在此目录下存放可执行文件,重要的配置文件有/etc/inittab、/etc/fstab、/etc/init.d、/etc/X11、/etc/sysconfig、/etc/xinetd.d修改配置文件之前记得备份。

注:/etc/X11存放与x windows有关的设置。

/home:系统默认的用户家目录,新增用户账号时,用户的家目录都存放在此目录下,~表示当前用户的家目录,~test表示用户test的家目录。建议单独分区,并设置较大的磁盘空间,方便用户存放数据

/lib:/usr/lib:/usr/local/lib:系统使用的函数库的目录,程序在执行过程中,需要调用一些额外的参数时需要函数库的协助,比较重要的目录为/lib/modules。

/lost+fount:系统异常产生错误时,会将一些遗失的片段放置于此目录下,通常这个目录会自动出现在装置目录下。如加载硬盘于/disk 中,此目录下就会自动产生目录/disk/lost+found

/mnt:/media:光盘默认挂载点,通常光盘挂载于/mnt/cdrom下,也不一定,可以选择任意位置进行挂载。

/opt:给主机额外安装软件所摆放的目录。如:FC4使用的Fedora 社群开发软件,如果想要自行安装新的KDE 桌面软件,可以将该软件安装在该目录下。以前的 Linux 系统中,习惯放置在 /usr/local 目录下

/proc:此目录的数据都在内存中,如系统核心,外部设备,网络状态,由于数据都存放于内存中,所以不占用磁盘空间,比较重要的目录有/proc/cpuinfo、/proc/interrupts、/proc/dma、/proc/ioports、/proc/net/*等

/root:系统管理员root的家目录,系统第一个启动的分区为/,所以最好将/root和/放置在一个分区下。

/sbin:/usr/sbin:/usr/local/sbin:放置系统管理员使用的可执行命令,如fdisk、shutdown、mount等。与/bin不同的是,这几个目录是给系统管理员root使用的命令,一般用户只能"查看"而不能设置和使用。

/tmp:一般用户或正在执行的程序临时存放文件的目录,任何人都可以访问,重要数据不可放置在此目录下

/srv:服务启动之后需要访问的数据目录,如www服务需要访问的网页数据存放在/srv/www内

/usr:应用程序存放目录,/usr/bin存放应用程序,/usr/share存放共享数据,/usr/lib存放不能直接运行的,却是许多程序运行所必需的一些函数库文件。/usr/local:存放软件升级包。/usr/share/doc:系统说明文件存放目录。/usr/share/man: 程序说明文件存放目录,使用 man ls时会查询/usr/share/man/man1/ls.1.gz的内容建议单独分区,设置较大的磁盘空间

/var:放置系统执行过程中经常变化的文件,如随时更改的日志文件/var/log,/var/log/message:所有的登录文件存放目录,/var/spool/mail:邮件存放的目录,/var/run:程序或服务启动后,其PID存放在该目录下。建议单独分区,设置较大的磁盘空间

 

linux--工作目录作用

 

___/bin (binary二进制)普通用户 常用Linux命令存放处
___/sbin 存放管理员使用的系统管理程序命令等
___/boot 存放着启动Linux时使用的一些核心文件,包括一些链接文件以及镜像文件
___/cdrom 这个目录在你刚刚安装系统的时候是空的。你可以将光驱文件系统挂在这个目录下。
            例如:mount /dev/cdrom /cdrom 


___/home 存放用户主目录。如果我们建立一个用户,用户名是"xx",
           那么在/home目录下就有一个对应的/home/xx路径
___/lib (library库)存放系统动态连接共享库
___/lost+found 一般情况下是空的,当系统非法关机后,这里就存放了一些文件
___/mnt 挂载其它文件系统
___/root 系统管理员(超级用户)主目录
___/shlib 使用运行SCO UNIX程序的iBCS2用的
___/tmp (temporary临时)存放不同程序执行时产生的临时文件,系统会周期性地清除里面的内容
___/vmlinuz 存放的是系统的内核
___/dev (device设备) 该目录下存放的是Linux的外部设备,
          在Linux中访问设备的方式和访问文件的方式是相同的 
        _____/dev/console 系统控制台
        _____/dev/fd0 第一个软盘驱动器
        _____/dev/hda1 第一个IDE硬盘驱动器的第一个逻辑分区
        _____/dev/hdb3 第二个IDE硬盘驱动器的第三个逻辑分区
        _____/dev/ttys0 第一个串行端口
        _____/dev/lp0 第一个并行端口
        _____/dev/cua 用来连接调制解调器
        _____/dev/sda 第一个SCSI硬盘驱动器
        _____/dev/null 是一个接受设备输入但不产生任何输出的虚拟的设备
        _____/dev/tty1 第一个虚拟控制台
        _____/dev/pty* “虚拟终端”,用于为远程登录提供终端
___/usr 用户应用程序文件夹
        _____/usr/X11R6 存放X-Windows的目录 
        _____/usr/bin 用户用到的大多数应用程序 
        _____/usr/sbin 给超级用户使用的比较高级的管理程序和系统守护程序 
        _____/usr/doc 文档 
        _____/usr/include Linux下开发或编译应用程序需要用的头文件 
        _____/usr/openwin 存放SUN的OpenWin 
        _____/usr/lib 常用的动态、静态库 
        _____/usr/local 普通用户、超级用户安装新软件使用 
        _____/usr/man 联机帮助手册 
        _____/usr/src 系统源代码,(/usr/src/linux系统源代码)
___/etc (etcetera) 系统管理的配置文件和子目录 
        _____/etc/DIR_COLORS 设定颜色 
        _____/etc/HOSTNAME 设定用户的节点名 
        _____/etc/NETWORKING 只有YES标明网络存在
        _____/etc/host.conf 文件说明用户的系统如何查询节点名 
        _____/etc/hosts 设定用户自已的IP与名字的对应表 
        _____/etc/hosts.allow 设置允许使用inetd的机器使用 
        _____/etc/hosts.deny 设置不允许使用inetd的机器使用 
        _____/etc/hosts.equiv 设置远端机不用密码 
        _____/etc/inetd.conf 设定系统网络守护进程inetd的配置 
        _____/etc/inetd.pid inetd这个进程的进程id 
        _____/etc/hosts.lpd 设定远端有哪些节点可以使用本机的打印机 
        _____/etc/gateways 设定路由器 
        _____/etc/protocols 设定系统支持的协议 
        _____/etc/named.boot 设定本机为名字服务器的配置文件 
        _____/etc/named.pid 本机上运行的名字服务器的进程id 
        _____/etc/networks 设定网络的配置文件 
        _____/etc/resolv.conf 设定系统的名字服务器 
        _____/etc/services 设定系统的端品与协议类型和提供的服务 
        _____/etc/exports 设定NFS系统用的 
        _____/etc/NNTP_INEWS_DOMAIN 设置新闻服务器的配置文件 
        _____/etc/nntpserver 设置用户使用的新闻服务器的地址 
        _____/etc/XF86Config X Window的配置文件 
        _____/etc/hostid 系统独有的一个硬件id 
        _____/etc/at.deny 设置哪些用户不能使用at命令 
        _____/etc/bootptab 给MAKEDEV程序设定各种不同的设备驱动文件的格式 
        _____/etc/makedev.cfg 同DEVINFO一样给MAKEDEV使用的设置文件 
        _____/etc/diphosts 设置拔号服务器的用户名和口令 
        _____/etc/slip.hosts,/etc/slip.login 设定SLIP的配置文件 
        _____/etc/fastboot 使用shutdown -f产生的,重启系统要查这个文件 
        _____/etc/fstab 记录开机要mount的文件系统 
        _____/etc/mtab 系统在启动时创建的信息文件 
        _____/etc/ftpaccess FTP服务器的一些配置 
        _____/etc/ftpconversions 设定在FTP时使用的过滤器的位置 
        _____/etc/ftpusers 设定不能使用FTP服务的用户 
        _____/etc/inittab 设定系统启动时init进程将把系统设置成什么样的runlevel 
        _____/etc/ld.so.cache 查找系统动态链接库的缓存 
        _____/etc/ld.so.conf 系统动态链接库的路径 
        _____/etc/lilo.conf lilo的配置文件 
        _____/etc/magic 给file命令使用的 
        _____/etc/aliases 给sendmail使用的设置别名的文件 
        _____/etc/mail.rc,
                  /etc/mailcap,
                  /etc/sendmail.cf,
                  /etc/sendmail.st 设置sendmail的 
        _____/etc/issue 记录用户登录前显示的信息 
        _____/etc/motd 超级用户发布通知的地方 
        _____/etc/organization 存放用户的名字和组织 
        _____/etc/group 设定用户的组名与相关信息 
        _____/etc/passwd 用户密码文件(重要呀) 
        _____/etc/shadow 见/etc/passwd 
        _____/etc/pnpdevices 列出支持的Plug&Play设备 
        _____/etc/snooptad 监控用户的屏幕,监听的终端列表 
        _____/etc/sudoers 可以sudo命令的配置文件 
        _____/etc/syslog.conf 系统记录程序syslogd的配置文件 
        _____/etc/utmp 目前在用系统的用户信息 
        _____/etc/wtmp 同utmp差不多,只是它累加 
        _____/etc/nologin 系统在shutdown时不希望用户登录就产生这个文件 
        _____/etc/securetty 设定哪些终端可以让root登录 
        _____/etc/termcap 设置系统终端信息的 
        _____/etc/ttys 设定系统的终端类型 
        _____/etc/gettydefs getty_ps的定义文件 
        _____/etc/yp.conf NIS的配置文件 
        _____/etc/mtools.conf 设定mtools程序的参数 
        _____/etc/fdprm 设定格式化软盘的参数 
        _____/etc/login.access 控制用户登录权限的文件 
        _____/etc/login.defs 所有用户登录时的缺省配置文件
___/proc 虚拟系统,内存映象
        _____/proc/1 关于进程1的信息目录。每个进程在/proc 下有一个名为其进程号的目录。 
         _____/proc/cpuinfo 处理器信息,如类型、制造商、型号和性能。 
         _____/proc/devices 当前运行的核心配置的设备驱动的列表。 
         _____/proc/dma 显示当前使用的DMA通道。 
         _____/proc/filesystems 核心配置的文件系统。 
         _____/proc/interrupts 显示使用的中断
         _____/proc/ioports 当前使用的I/O端口。 
         _____/proc/kcore 系统物理内存映象
         _____/proc/kmsg 核心输出的消息。也被送到syslog 。 
         _____/proc/ksyms 核心符号表。 
         _____/proc/loadavg 系统"平均负载";3个指示器指出系统当前的工作量。 
         _____/proc/meminfo 存储器使用信息,包括物理内存和swap。 
         _____/proc/modules 当前加载了哪些核心模块。 
         _____/proc/net 网络协议状态信息。 
         _____/proc/self 到查看/proc 的程序的进程目录的符号连接。当2个进程查看/proc 时, 是不同的连接。这主要便于程序得到它自己的进程目录。     
         _____/proc/stat 系统的不同状态
         _____/proc/uptime 系统启动的时间长度。 
         _____/proc/version 核心版本。

___/var 存放着那些不断在扩充着的东西,为了保/usr的相对稳定,那些经常被修改的目录可以
          放在这个目录下。包括系统一般运行时要改变的数据。
   每个系统是特定的,即不通过网络与其他计算机共享。
        _____/var/adm 
        _____/var/catman 当要求格式化时的man页的cache。
           man页的源文件一般存在/usr/man/man* 中;有些man页可能有预格式化的版本,
     存在/usr/man/cat* 中。而其他的man页在第一次看时需要格式化,
     格式化完的版本存在/var/man 中,这样其他人再看相同的页时就无须等待
     格式化了。 (/var/catman 经常被清除,就象清除临时目录一样。) 
_____/var/lib 系统正常运行时要改变的文件。 
_____/var/local    /usr/local 中安装的程序的可变数据(即系统管理员安装的程序)。
               注意,如果必要,即使本地安装的程序也会使用其他/var 目录,
        例如/var/lock 。 /var/lock 锁定文件。
        许多程序遵循在/var/lock 中产生一个锁定文件的约定,
        以支持他们正在使用某个特定的设备或文件。
        其他程序注意到这个锁定文件,将不试图使用这个设备或文件。 
_____/var/log 各种程序的Log文件,特别是login (/var/log/wtmp log所有到系统
      的登录和注销) 和syslog (/var/log/messages 里存储所有核心和系统程序信息。 
                /var/log 里的文件经常不确定地增长,应该定期清除。 
_____/var/run 保存到下次引导前有效的关于系统的信息文件。例如, /var/run/utmp 
                包含当前登录的用户的信息。
_____/var/spool mail, news, 打印队列和其他队列工作的目录。
              每个不同的spool在/var/spool 下有自己的子目录,
              例如,用户的邮箱在/var/spool/mail 中。 
_____/var/tmp 比/tmp 允许的大或需要存在较长时间的临时文件。 
               (虽然系统管理员可能不允许/var/tmp 有很旧的文件。)
               
               
               
               
               
一些重要的目录:
家目录: /root,/home/username
用户执行的命令: /bin, /usr/bin, /usr/local/bin
系统执行的命令: /sbin, /usr/sbin, /usr/local/sbin
其他挂载点: /media, /mnt
配置文件: /etc
临时文件: /tmp
内核和启动文件: /boot
服务器数据: /var, /srv
系统信息: /proc, /sys
共享库: /lib, /usr/lib, /usr/local/lib

 

特殊文件:

 

Linux目录结构:

 

 

 

 

linux文件系统知识介绍

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

必须要掌握的linux目录路径知识

  • 修改网卡配置文件
  • 配置文件路径:
    /etc/sysconfig/network-scripts/ifcfg-eth0
    (1)查看eth0(第二块eth1)
    (2)通过setup===>"network configuration"修改网卡配置就是再改这个文件
    屏幕快照 2017-01-02 下午5.56.18.png-39.8kB
    屏幕快照 2017-01-02 下午5.56.27.png-65.5kB
    屏幕快照 2017-01-02 下午5.57.25.png-858kB
    (3)固定IP地址
    (4)重启网卡/etc/init.d/network restart(影响所有网卡)
    (5)ifdown eth0 && ifup eth0只针对eth0网卡

注意

  • 设置文件ifcfg-interface-name包含了初始化接口所需要的大部分周详的信息。其中interface-name将根据网卡的类型和排序而不同,一般名字为eth0,eth1,ppp0等,其中eth表示以太(eth0)类型网卡,0表示第一块网卡,1表示第二块网卡,而ppp0则表示第一个point-to-poirt protocol网络接口。在ifcfg文件中定义
    的各项目取决于接口类型。
    下面的值较为常见:
  • DEVICE=name,其中,name是物理设备名
  • IPADDR=addr,其中addr是IP地址
  • NETMASK=mask,其中,mask是网络掩码值
  • GATEWAY=addr,其中addr是网关地址
  • ONBOOT=answer,其中answer是yes(引导时激活设备)或no(引导时不激活设备)
  • USERCTL=answer,其中,answer是yes(非root用户能控制该设备)或no
  • BOOTPROTO=proto,其中,proto取下列值之一:none,引导时不使用协议;static静态分配地址;bootp,使用BOOTP协议,或dhcp,使用DHCP协议

屏幕快照 2017-01-02 下午6.17.02.png-1097.7kB
上图配置实际上修改的是/etc/sysconfig/network-scripts/ifcfg-eth0文件

屏幕快照 2017-01-02 下午6.55.28.png-590.2kB
上图设置实际上修改的是/etc/resolv.conf这个文件

小结

1,linux客户端DNS可以在网卡配置文件里设置(ifcfg-eth0)

2,linux客户端DNS也可以在/etc/resolv.conf里设置

3,网卡里的设置DNS优先于/etc/resolv.conf,如果重启网络网卡的dns会覆盖/etc/resolv.conf的设置
4,/etc/hosts:设定用户IP与名字(域名)的对应解析表,相当于本地LAN局域网内的DNS解析文件
5,/etc/sysconfig/network:可修改主机名及网卡启动,网关等配置。永久更改主机名,需同时修改以下两项:
(1)vi /etc/sysconfig/network
(2)hostname 主机名

  • /etc/fstab:开机自动挂载文件系统的一个列表(具体配置以后详说)

    思考: fstab一旦配置错误,会导致服务器无法启动。如何修复?

  • /etc/rc.local:用于存放开机自启动程序命令的文件(chkconfig 常用来管理yum/rpm安装的程序的服务的开机自启动/etc/init.d)

在开机时,linux会把/etc/rc.local里的内容执行一遍

  • /etc/inittab:设定系统启动时init进程将把系统设置成什么样的,runlevel运行级别及加载相关的级别对应启动文件设置
  • /etc/exports:NFS网络文件系统用的配置文件
  • /etc/init.d:这个目录是用来存放通过yum或rpm工具安装的软件的默认启动程序(启动脚本)的目录
  • /etc/xinit.d:如果服务器是通过xinetd模式运行的,它的脚本要放在这个目录里。有些系统没有这个目录,比如Slackware,(无人值守pxe+kickstart安装系统时会用到/etc/xinit.d)
  • /etc/profile:系统全局环境变量,永久生效的配置文件
    (用户的环境变量:~/.bash_profile,~/.bashrc)

4.2 /etc/目录下的重要目录和文件

  • /etc/issue(/etc/issue.net):记录用户登录前显示的系统版本等信息
  • /etc/motd:登录提醒(里面写的任何东西都会在所有用户登录前显示出来)
  • /etc/redhat-release:包括一行声明RedHat版本号和名称的信息。
  • /etc/group:设定用户的组名与相关信息
  • /etc/passwd:用户账号信息文件
  • /etc/shadow:用户密码信息文件
  • /etc/gshadow:组密码文件
  • /etc/sudoers:可以执行使用sudo命令的配置文件(权限提升)
  • /etc/securetty:设定哪些中断可以让root登录
  • /etc/login.defs:所有用户登陆时的缺省配置
  • /etc/modprobe.conf:内核模块额外参数设定
  • /etc/rsyslog.conf:日志设置文件(仅限centos6.x)

4.3 其他目录

  • /lib:系统会使用到的函数库
  • /lib/modules:kernel的相关模块
  • /var/lib/rpm:rpm套件安装处
  • /usr/bin:这个目录是可执行程序的目录;当我们从系统自带的软件包安装一个程序时,他的可执行文件大多会放在这个目录。
  • lib64:库文件存放目录
  • /usr/sbin:这个目录也是可执行程序的目录,但大多存放涉及系统管理的命令;相似目录是/sbin或/usr/local/sbin或/usr/X11R6/sbin等;
  • /usr/local:这个目录一般用来存放用户自编译安装软件的存放目录;一般是通过源码包安装的软件,如果没有特别指定安装目录的话,一般是安装在这个目录中。
  • /usr/local/bin:用户安装的小的应用程序,和一些在/usr/local目录下大应用程序的符号连接
  • /usr/local/sbin:系统全局环境目录,可放置一些不需要加路径执行的脚本
  • /usr/share:系统共用的东西存放地,比如/usr/share/doc和/usr/share/man帮助文件
  • /usr/src:内核源码存放目录,比如下面有内核源码目录,比如linux,linux-2.xxx.xx目录等。

1,rpm -ivh(存在rpm包,又无法使用yum的时候)
2,yum install
(习惯:线上对外的服务器很少安装apache,nginx,mysql,功能性软件会用yum)
3,源码(./configure,make,make install),定制。大中小企业重要服务。
门户:源码---定制RPM包---制作yum仓库----yum安装

  • /usr/bin:使用者可执行的binary file目录
  • /usr/local/bin:使用者可执行的binary file目录
  • /usr/lib:系统会使用到的函数库
  • /usr/local/lib:系统会使用到的函数库

4.4 /var目录下的路径知识

  • /var:日志文件
  • /var/log:各种系统日志存放地
  • /var/log/messages:系统信息默认日志文件,非常重要。按周自动轮循
  • /var/log/secure:记录登入系统存取信息的文件,按周自动轮循,例如:pop3,ssh,telnet,ftp都会记录在此。系统安全的日志文件
  • /var/spool:定时任务默认路径,按用户名命名的文件(/var/spool/cron/root)
  • var/spool/clientmqueue:sendmail临时邮件文件目录,有很多原因会导致这个目录碎文件很多,比如crontab定时任务命令不加>/dev/null等。工作中偶尔会因为该目录文件太多,导致/var所在的分区inode数量被消耗尽,无法写入文件的情况(centos6.x不会装sendmail,所以不会有这个问题)

4.5 /proc下的重要路径知识

top:看cpu等

  • /proc:虚拟目录,是内存的映射,内核和进程的虚拟文件系统目录
  • /proc/version:内核版本
  • /proc/sys/kernel:系统内核功能
  • /proc/sys/net/ipv4:修改proc的配置时临时生效。
    (/etc/sysctl.conf内核参数里配置才是永久生效。两个路径的修改效果是一样的。net.ipv4.tcp_tw_reuse=1实际上就是修改/proc/sys/net/ipv4/tcp_tw_reuse的内容)
  • /proc/cpuinfo:关于处理器的信息,如类型,厂家,型号和性能等
  • /proc/meminfo:系统内存信息,free -m
  • /proc/devices:当前运行内核所配置的所有设备清单
  • /proc/dma:当前正在使用的DMA通道
  • /proc/filesystems:当前运行内核所配置的文件系统
  • /proc/initerrupts:正在使用的中断,和曾经有多少个中断。
  • /proc/ioports:当前正在使用的I/O端口。
  • /proc/loadavg:系统负载平均值信息(系统的繁忙情况,比较准确,但是不够细致系统性能指标),uptime的结果。(负载值不要超过CPU的核数。看负载top,uptime,w
    QQ20170102-220211@2x.png-62.5kB
  • /proc/mounts:设备的挂载信息,df -h类似

4.6 必须掌握的路径及文件

  • /etc/sysconfig/network-scripts/ifcfg-eth0(第一块网卡配置文件)
  • /etc/resolv.conf(DNS的配置文件,网卡配置文件优先resolv.conf)
  • /etc/hosts(ip与域名(主机名)解析表)
  • /etc/sysconfig/network(主机)
  • /etc/fstab(开机自动挂载列表)
  • /etc/rc.local(开机自启动文件,自启动命令,脚本)
  • /etc/inittab (Linux开机运行级别配置文件)
  • /etc/init.d(服务启动命令脚本目录)
  • /etc/profile(全局环境变量)
  • /etc/bashrc(别名)
  • /usr/local(编译安装软件默认安装目录)
  • /var/log/message(系统日志)
  • /var/log/secure(系统安全日志)
  • /var/spool/cron/root(定时任务,root目录)
  • /proc/cpuinfo(系统cpu信息)
  • /proc/meminfo(系统内存信息)
  • /proc/loadavg(系统cpu负载程度)
  1. /proc/mounts(系统挂载信息)

4.7讨论:cpu什么情况下算是负载很繁忙?

当cpu平均负载率大于CPU的核数的时候,我们就可以说,服务器cpu的负载已经很繁忙了。

 

 

参考:https://www.cnblogs.com/chensiqiqi/p/6243549.html

 

posted @ 2018-04-23 21:09  钟桂耀  阅读(294)  评论(0编辑  收藏  举报