1. linux入门---整理学习笔记

1      Linux操做系统简介
Linux是一套无偿使用和自由传播的类Unix操做系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操做系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的 多用户网络操做系统
Linux具备以下优势:
Ø       稳定、免费或者花费少
Ø       安全性高
Ø       多任务,多用户
Ø       耗资源少
Ø       因为内核小,因此它能够支持多种电子产品,如:Android手机、PDA等。
随着IT产业的不断发展,用户对网站体验要求也愈来愈高,而目 前主流网站后端承载系统都是Linux系统,目前Android手机所有基于Linux内核研发。企业大数据、云存储、虚拟化等先进技术都是基于Linux系统
1.1 linux内核理解
咱们常常所使用的linux系统都是linux发行版,如CentOS、RedHat、Debian、Ubuntu等
linux内核与linux发行版的区别?
linux内核是linux操做系统的核心功能,是linux系统的整个基础,是开源软件。
linux发行版是指将linux内核和外围应用程序和文档打包,并提供系统安装界面和系统配置、管理工具。
1. 什么是操做系统?
操做系统是负责整个系统最基本功能和系统管理,包括内核、设备驱动程序、启动引导程序、命令行shell或其它种类的用户界面、基本的文件管理工具和系统工具。
用户界面是操做系统的外在表象,内核是操做系统的内在核心
2. 什么是内核?
内核由一系列程序组成,包括负责响应中断的中断服务程序、负责管理多个进程从而分享处理器时间的调度程序、负责管理地址空间的内存管理程序、网络、进程间通讯的系统服务程序等。
内核负责管理系统的硬件设备。
3. 内核空间 VS 用户空间
内核空间表示内核拥有的内存空间,用户空间表示用户程序执行时的内存空间。
内核拥有直接访问硬件设备的全部权限,用户程序不能直接访问硬件设备,所以用户程序经过系统调用和内核通讯来运行。
 
(Linux)内核是(Linux)操做系统的核心,通常包含五大部分: 进程管理、存储管理、 文件管理、设备管理和网络管理,是一组程序模块,具备访问硬件设备和全部主存空间的权限,是仅有的可以执行 特权指令的程序。主要功能是:资源抽象、资源分配、资源共享。(资源是指CPU、内存等。)在内核基础上挂载第三方软件便构成操做系统,Ubuntu、RedHat、Fedora、Debian等都是基于 Linux内核(版本号可能不一样)的不一样操做系统。
 
内核函数对用户是彻底透明的,用户想要调用内核函数只有两种途径:一是 应用程序→系统调用(程序接口)→操做系统;二是 操做命令→系统程序(做业接口)→操做系统。
 
内核是否是指的就是用shell控制的东西?
shell命令多是普通的应用程序,也多是库函数或系统调用(你能够理解为内核函数)。
若是你想查看某命令是普通shell命令,仍是库函数或系统调用,能够在终端输入“man 命令”查看。如man open,左上角应该是OPEN(2)。1 表示普通shell命令,2 表示系统调用,3 表示库函数。
 
注: 库函数事实上是内核函数的封装,介于应用程序与内核函数之间。应用程序是不能直接访问内核函数的,必须经过库函数。这是一种保护内核函数的一种机制。
事实上不少时候咱们都要用到内核函数,只是咱们并不知道而已,如打开文件要调用open()、关闭文件要调用close()等等
1.2 shell理解
什么是Shell?
shell是用户和Linux(或者更准确的说,是用户和Linux内核)之间的 接口程序。你在提示符下输入的每一个命令都由shell先解释而后传给Linux内核。
shell 是一个命令语言解释器(command-language interpreter),拥有本身内建的 shell 命令集。此外,shell也能被系统中其余有效的Linux 实用程序和应用程序(utilities and application programs)所调用。
不论什么时候你键入一个命令,它都被Linux shell所解释。一些命令,好比打印当前工做目录命令(pwd),是包含在Linux bash内部的(就象DOS的内部命令)。其余命令,好比拷贝命令(cp)和移动命令(rm),是存在于文件系统中某个目录下的单独的程序。而对用户来讲,你不知道(或者可能不关心)一个命令是创建在shell内部仍是一个单独的程序。
 
实际上Shell是一个命令解释器,它解释由用户输入的命令而且把它们送到内核。不只如此,Shell有本身的编程语言用于对命令的编辑,它容许用户编写由shell命令组成的程序。Shell编程语言具备普通编程语言的不少特色,好比它也有 循环结构和分支控制结构等,用这种编程语言编写的 Shell程序与其余应用程序具备一样的效果。
同Linux自己同样,Shell也有多种不一样的版本。目前主要有下列版本的Shell:
Bourne Shell:是 贝尔实验室开发的。
BASH:是GNU的Bourne Again Shell,是GNU操做系统上默认的shell。
Korn Shell:是对Bourne SHell的发展,在大部份内容上与Bourne Shell兼容。
C Shell:是 SUN公司Shell的BSD版本。
2    Linux系统分区
在了解Linux系统以前,先来了解windows系统结构,windows系统通常是安装在C盘系统盘,一样Linux也有相似的系统盘(/根分区), Linux一般分区为(根分区/、swap分区),Linux系统以文件的存储方式全部的文件都是存储在某个目录下的,相似于windows的文件夹。
对于文件系统的属性来讲,windows文件系统类型通常是ntfs、fat32等,而Linux文件系统类型则为ext二、ext三、ext4等(文件系统:是操做系统用于明确磁盘或分区上的文件的方法和数据结构,文件系统由三部分组成:与文件管理有关软件、被管理文件以及实施文件管理所需数据结构。)
安装 Linux系统是每个初学者的第一个门槛。在这个过程当中间,最大的困惑莫过于给硬盘进行分区。虽然如今各类发行版本的 Linux 已经提供了友好的图形交互界面,可是不少人仍是感受无从下手。这其中的缘由主要是不清楚 Linux 的分区规定。就比如若是咱们了解了windows分区的规则,系统盘C、数据盘D等,就很好分区了。
2.1 Linux磁盘分区详解
首先咱们要对硬盘分区的基本概念进行一些初步的了解, 硬盘的分区主要分为基本分区(primary partion)和扩充分区(extension partion)两种, 基本分区和扩充分区的数目之和不能大于四个。且基本分区能够立刻被使用但不能再分区。扩充分区必须再进行分区后才能使用,也就是说它必须还要进行二次分区。那么由扩充分区再分下去的是什么呢?它就是 逻辑分区(logical partion),何况逻辑分区没有数量上限制。
对习惯于使用dos或windows的用户来讲,有几个分区就有几个驱动器,而且每一个分区都会得到一个字母标识符,而后就能够选用这个字母来指定在这个分区上的文件和目录,它们的文件结构都是独立的,很是好理解。但对这些初上手 red hat linux的用户,可就有点恼人了。由于对red hat linux用户来讲不管有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且惟一的文件结构。red hat linux中每一个分区都是用来组成整个文件系统的一部分,由于它采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录,且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下得到。
对windows用户来讲,操做系统必须装在同一分区里,它是商业软件! 因此你没有选择的余地!对red hat linux来讲,你有了较大的选择余地,你能够把系统文件分几个区来装(必需要说明载入点),也能够就装在同一个分区中(载入点是“/”)。
 1. 设备管理  
 在 Linux 中,每个硬件设备都映射到一个系统的文件,对于硬盘、光驱等 IDE 或 SCSI 设备也不例外。Linux 把各类  IDE 设备分配了一个由 hd 前缀组成的文件;而对于各类 SCSI 设备,则分配了一个由 sd 前缀组成的文件。( IDE的英文全称为“Integrated Drive Electronics”,即“电子集成驱动器”,是曾经主流的 硬盘接口, 也是光储类设备的主要接口。小型计算机系统接口(英语:Small Computer System Interface; 简写:SCSI),一种用于计算机和智能设备之间(硬盘、软驱、光驱、打印机、扫描仪等)系统级接口的独立处理器标准。 SCSI是一种智能的通用接口标准。  IDE和SCSI其实就是硬盘的两种接口。其中,IDE类型的硬盘主要用于我的PC电脑,而SCSI类型的硬盘主要用于服务器。)
对于IDE硬盘,驱动器标识符为“ hdx~”,其中“hd”代表分区所在设备的类型,这里是指IDE硬盘了。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”表明分区,前四个分区用数字1到4表示,它们是主分区或扩展分区,从5开始就是逻辑分区。例,hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。对于SCSI硬盘则标识为“ sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其他则和IDE硬盘的表示方法同样,不在多说。
举例,第一个 IDE 设备,Linux 就定义为 hda;第二个 IDE 设备就定义为 hdb;下面以此类推。而 SCSI 设备就应该是sda、sdb、sdc 等。例如,第一个 IDE 硬盘的第一个分区,在 Linux 下面映射的就是 hda1,第二个分区就称做是 hda2。对于 SCSI 硬盘则是 sda一、sdb1 等。
2. 分区数量   
Linux 下面每个硬盘总共最多有  16 个分区。要进行分区就必须针对每个硬件设备进行操做,这就有多是一块IDE硬盘或是一块SCSI硬盘。对于每个硬盘(IDE 或 SCSI)设备,Linux 分配了一个 1 到 16 的序列号码,这就表明了这块硬盘上面的分区号码。Linux 规定了主分区(或者扩展分区)占用 1 至 16 号码中的前 4 个号码。以第一个 IDE 硬盘为例说明,主分区(或者扩展分区)占用了 hda一、hda二、hda三、hda4,而逻辑分区占用了 hda5 到 hda16 等 12 个号码。
3. 各分区的做用    
在 Linux 中规定,每个硬盘设备最多能有 4个主分区(其中包含扩展分区)构成,任何一个扩展分区都要占用一个主分区号码,也就是在一个硬盘中,主分区和扩展分区一共最可能是 4 个。
对于早期的 DOS 和 Windows(Windows 2000 之前的版本),系统只认可一个主分区,能够经过在扩展分区上增长逻辑盘符(逻辑分区)的方法,进一步地细化分区。
主分区的做用就是计算机用来进行启动操做系统的,所以每个操做系统的启动,或者称做是引导程序,都应该存放在主分区上。这就是主分区和扩展分区及逻辑分区的最大区别。  
咱们在指定安装引导 Linux 的 bootloader 的时候,都要指定在主分区上,就是最好的例证。
对于逻辑分区,Linux 规定它们必须创建在扩展分区上(在 DOS 和 Windows 系统上也是如此规定),而不是主分区上。
所以,咱们能够看到扩展分区可以提供更加灵活的分区模式,但不能用来做为 操做系统 的引导。 除去上面这些各类分区的差异,咱们就能够简单地把它们一视同仁了。
4.  经常使用分区
/boot分区,它包含了操做系统的内核和在启动系统过程当中所要用到的文件,建这个 分区是有必要的,由于目前大多数的pc机要受到bios的限制,何况若是有了一个单独的/boot启动分区,即便主要的根分区出现了问题,计算机依然可以 启动。这个分区的大小约在50mb—100mb之间。
/usr分区,是red hat linux系统存放软件的地方,若有可能应将最大空间分给它。
/home分区,是用户的home目录所在地,这个分区的大小取决于有多少用户。如 果是多用户共同使用一台电脑的话,这个分区是彻底有必要的,何况根用户也能够很好地控制普通用户使用计算机,如对用户或者用户组实行硬盘限量使用,限制普通用户访问哪些文件等。其实单用户也有创建这个分区的必要,由于没这个分区的话,那么你只能以根用户的身份登录系统,这样作是危险的,由于根用户对系统有绝对的使用权,可一旦你对系统进行了误操做,麻烦也就来了。
/var/log分区,是系统日志记录分区,若是设立了这一单独的分区,这样即便系统的日志文件出现了问题,它们也不会影响到操做系统的主分区。
/tmp分区,用来存放临时文件。这对于多用户系统或者网络服务器来讲是有必要的。 这样即便程序运行时生成大量的临时文件,或者用户对系统进行了错误的操做,文件系统的其它部分仍然是安全的。由于文件系统的这一部分仍然还承受着读写操 做,因此它一般会比其它的部分更快地发生问题。
/bin分区,存放标准系统实用程序。
/dev分区,存放设备文件。
/opt分区,存放可选的安装的软件。
/sbin分区,存放标准系统管理文件。
/mnt目录的做用:挂接光驱、USB设备的目录,加载后,会在mnt里多出相应设备的目录。mount是将存储设备变成文件来访问的,linux全部的存储设备都是映射成“文件”来访问的,包括U盘,光驱,硬盘,磁带。
/dev 和 /mnt的区别:
mount了才能读取内容,而直接访问/dev只能读设备信息.比如看碟,你访问dev至关于直接拿碟片用眼看最多你能看出来是个CD或DVD;但插到光驱里读就能看到电影了.
为何一个设备已经被os识别在/dev下,为啥不能之间访问,而须要mount?要回答这个,首先咱们要知道,linux下有哪些文件类型。普通文件,目录以外,还有什么?首先就是以l开始的符号连接文件。还有用ll命令时,输出的以c开始的和以b开始的文件,分别是字符设备文件和块设备文件。还有比较少见的以s开始的套接字文件。既然linux都能识别这些文件,那还mount个毛线,直接访问不就好了,可是事实就是须要mount,那mount到底干了什么?缘由在于,不少设备的数据组织和linux的文件系统并不同。无法直接读取,你要看到文件目录,你必须得按照必定的格式去解析设备里的文件。这就是mount干得事,它按照你指定的格式去读取设备里的数据。就是转化为linux本身的文件系统,这样才能解析并读取数据。
2.2 Linux目录结构
经过前面的学习,咱们已经了解linux系统的磁盘分区,那接下来咱们熟悉一下Linux系统里面的各个目录文件夹的大体功能:
主要的目录树的有/、/root、/home、/usr、/bin等目录。下面是一个典型的linux目录结构以下:
/ 根目录 
/bin 存放必要的命令 
/boot 存放内核以及启动所需的文件
/dev 存放设备文件 
/etc 存放系统配置文件 
/home 普通用户的宿主目录,用户数据存放在其主目录中 
/lib 存放必要的运行库 
/mnt 存放临时的映射文件系统,一般用来挂载使用。
/proc 存放存储进程和系统信息 
/root 超级用户的主目录 
/sbin 存放系统管理程序 
/tmp 存放临时文件
/usr 存放应用程序,命令程序文件、程序库、手册和其它文档。 
/var 系统默认日志存放目录
2.3 Linux用户权限管理
在Linux操做系统中,root的权限是最高的,至关于windows的administrator,拥有最高权限,能执行任何命令和操做。在系统中,经过UID来区分用户的权限级别,UID等于0,表示此用户具备最高权限,也就是管理员。其余的用户UID依次增长,经过/etc/passwd用户密码文件能够查看到每一个用户的独立的UID。
每个文件或者目录的权限,都包含 一个用户权限、一个组的权限、其余人权限,例以下:
标红第一个root表示该文件全部者是root用户,第二个root表明该文件的所属的组为root组,其余用户这里默认不标出。
 [root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May  7 20:21 monitor_log.sh
[root@node1 ~]#
若是咱们想改变某个文件的全部者或者所属的组,可使用命令chown
chown  –R  test:test  monitor_log.sh便可。
每一个Linux文件具备四种访问权限:可读(r)、可写(w)、可执行(x)和无权限(-)。
利用ls -l命令能够看到某个文件或目录的权限,它以显示数据的第一个字段为
 准。第一个字段由10个字符组成,以下:
    [root@node1 ~]# ls -l monitor_log.sh
-rw-r--r-- 1 root root 91 May  7 20:21 monitor_log.sh
[root@node1 ~]#
   第一位表示文件类型,-表示文件,d表示目录;后面每三位为一组。
   第一组:2-4位表示文件全部者的权限,即用户user权限,简称u
   第二组:5-7位表示文件全部者所属组成员的权限,group权限,简称g
   第三组:8-10位表示全部者所属组以外的用户的权限,other权限,简称o
从上面这个文件,咱们能够看出,monito_log.sh文件对应的权限为:
root用户具备读和写的权限,root组具备读的权限,其余人具备读的权限。
为了能更简单快捷的使用和熟悉权限,rwx权限能够用数字来表示,分别表示为 r(4)、w(2)、x(1)。Monitor_log.sh权限能够表示为:644                                    
改变权限的命令,chmod 改变文件或目录的权限
chmod 755 abc:赋予abc权限rwxr-xr-x
chmod u=rwx,g=rx,o=rx abc:同上u=用户权限,g=组权限,o=不一样组其余用户权限
chmod u-x,g+w abc:给abc去除用户执行的权限,增长组写的权限
chmod a+r abc:给全部用户添加读的权限
chmod +x a.txt
相关文章
相关标签/搜索