1、操作系统内核(kernel):操作系统本质是一组程序,用于管理计算机所有的活动以及驱动系统中的所有硬件。
2、操作系统的内核直接参考硬件规格写成,因此同一个操作系统不能再不一样的硬件架构下运行。
3、应用程序的开发都是参考操作系统提供的开发接口,所以应用程序只能在该操作系统上运行。
(1)系统调用接口:进一步利用硬件资源,便于同内核通信,有利于开发人员。
(2)程序管理:合理的利用cpu资源,即cpu调度机制。
(3)内存管理:控制系统的内存,提供虚拟内存功能,当内存不足时可以提供内存交换功能。
(4)文件系统管理:数据的输入和输出等,文件格式支持等。
(5)设备驱动:硬件厂商参考系统的提供的开发接口开发驱动程序。
1、Linux是一个内核,Linux+softwares+tools才是可安装的系统,称之为Linux distribution(Linux发行版),Linux主要应用环境包括网络服务器、工作站计算机、嵌入式系统和桌面计算机等。
2、套件管理方式分为两种:
(1)一种Debian的dpkg模式;第二种:Red hat的RPM模式;可以先学习RPM模式的Linux发行版,例如:red hat、suse等。再学习比较更为严谨的版本:Debian等。练习使用的centOS版本。
?3、Linux两种操作模式:一种是图形界面形式,即X window;一种是命令行界面,即command line。
4、先学习Linux最基础的架构:文件结构、命令模式与脚本(shell and shell script)、软件管理方式和资源与账号等,便于之后的学习和理解。
1、首先学习Linux的安装与命令
2、Linux操作系统的基础技能:用户/用户组的概念、权限概念、程序的定义等。
3、必须学会Vi文本编辑器,所有的unix like系统上都有vi。
注意:linux下所有组件或者设备都是文件,因此一定要熟练掌握VI文本编辑操作。
4、Shell和shell脚本学习:正则表达式、管道命令、数据流重定向等。
5、必须学会软件管理员,自己会在Linux上安装软件。
6、网络基础的建立:IP概念、路由器概念等。
7、推荐学习网站,酷学园:study-area.org/network/network.htm
1、Linux自身的文件数据:/user/share/doc
2、利用Linux自身的日志文件查询错误信息:/var/log/目录下查看log file文件。
1、命令界面转换为图形界面:输入命令startx或者init 5即可;图形界面切换到命令行界面:输入init 3即可;如果没有反应或者不行,直接重启即可(万能解决方法)。
(1)linux默认提供6个终端来让用户登录,切换方式使用Ctrl+Alt+F1-F6;Ctrl+Alt+F7是图形界面桌面。
2、命令行界面解释:
【admin@localhost?~】$ :其中admin表示当前用户的账号;@之后是主机名;~表示当前所在的目录(默认是当前用户的家目录);$表示用户提示符,linux中一般用户的提示符为$,root的提示符为#。
3、Linux命令、选项、参数用空格分隔,注意不论几个空格shell都视为一个空格。
4、tab命令:具有命令补全和文件补齐功能,使用方法:在命令后点击两次tab键,是命令补全功能;在一串命令的第二个命令以后使用,为文件补齐功能。
1、文件属性信息:文件属性信息组成包括:权限(前十一位)? 连接数? ?所有者? 用户组? ?文件大小? 修改日期? ?文件名
?(1)第一部分表示:文件类型和权限,第一个字母表示文件是目录(d),文件(-),或者连接文件(l)等;权限:文件所有者的权限,文件所属用户组的权限,其他人的权限,分别为可读(r)、可写(w)、可执行(x),execute。注意没有权限,就用-表示。
注意:第十一位"."表示的是支持ACL权限(访问控制列表)。其中加号+表示该文件具备ACL权限。它被设计为UNIX文件权限管理的一个补充。ACL允许你给任何的用户或用户组设置任何文件/目录的访问权限。即可以针对单一用户或用户组、单一文件或目录来进行读/写/执行权限的控制。
(2)第二部分连接数:表示文件目录树中有多少文件连接到该节点上。
(3)第三部分表示所属用户:root表示用户;
(4)第四部分表示所属用户组:root表示用户组;
(5)第五部分表示:文件大小,单位字节;
(6)第六部分表示:文件最后的修改日期;
(7)第七部分表示:文件名称。
2、文件类型
(1)目录的标识符为d(directory)。
(2)一般文件的标识符为-,主要包括:纯文本文件、二进制文件(可执行文件)、数据格式文件(特定格式的文件)。
(3)连接文件的标识符为l,类似windows下的快捷方式。
(4)设备与设备文件主要存放在/dev这个目录下,主要分为两种:
(4.1)块(block)设备文件:就是一些存储数据,已提供系统随机访问的接口设备,如硬盘、软盘等,标识符为b。
(4.2)字符设备文件(character):是一些串行端口的接口设备,例如键盘鼠标,标识符为c。
套接字(sockets):是数据接口文件,主要用在网络上的数据连接,进行通信,通常在/var/run目录下可以看到该文件。
(5)管道(FIFO,pipe)是一种特殊的文件类型,主要用来解决多个程序同时访问一个文件所造成的错误问题,标识符为p。类似于进程,解决并发问题。
注意:linux的可执行文件和windows的可执行文件的区别:只要权限中有x,就表示该文件可以执行,但是能不能执行成功,需要看文件中的内容。
?3、修改文件属性与权限
(1)chgrp:改变文件所属用户组;格式:chgrp [-R] 【所属群组】 【文件或目录】? 其中-R表示连同目录下的所有文件、目录。
注意:多个文件或者目录之间使用空格隔开。
(2)chown:改变文件所有者;格式:chown [-R] 账号名称 文件或目录;
注意:组中的用户格式:组.用户名。
(3)chmod:改变文件权限。
第一种改权限的方法:其中r为4,w为2,x为1。改变权限即可通过改其权限值之和即可。格式:chmod [-R] abc 文件或目录,其中abc分别为三种权限各自数值之和。其中,a表示user的权限之和,b表示group的权限之和,c表示others的权限之和。注意:没有权限设置为0
第二种该权限的方法:user用u表示,表示文件或目录的所有者,group用g表示,others用o表示,all用a表示;+表示加入,-表示除去,=表示设置。例如:chmod u=rwx,go=rz test.txt;chmod a+w test.txt:表示给所有用户加上写入的权限。
注意:不指定用户,相当于三种用户都添加该权限。例如:chmod +x t1.sh
4、目录和文件意义
(1)文件或目录具有可执行权限,表示可以用户可以切换到当前目录结构,否则无法进入该目录,进行任何操作。
注意:要开放目录给任何人浏览,应该至少要给与可读和可执行权限,即r和x。
5、特定目录含义:为保证linux文件目录的通用性和规范性,因此,制定了目录配置标准:FHS(filesystem hierarchy standard),FHS主要将目录树分为三层:
(1)/:表示根目录,与开机系统有关;
(2)/usr(unix software resource软件目录):与软件安装执行有关;
(3)/var:与系统运行过程有关。主要存放缓存、登录文件及某些软件运行所产生的文件。
特定目录含义:
(1)/usr(unix software resource软件目录)
(2)/opt(第三方软件)
(3) /etc (配置文件)
(4)/boot (开机和内核文件)
(5)/var/mail (邮件)
(6)/var/spool/news (新闻组)
(7)/var/run(程序相关文件)
(8)/var/lock(程序相关)。
1、所有linux版本都有一套文本编辑器就是vi,其中,vim是高级版的vi。可以视vim为一种程序编辑器。
注意:Vi+文件名:即可进入vi的一般模式;无论文件存在与否。
2、vi分为3中模式:一般模式、编辑模式、命令行模式。
(1)一般模式:可以移动光标,删除字符或删除整行,复制或粘贴文件数据。
(2)编辑模式:一般模式通过按下“i,l,o,a,r”即可进入编辑模式;点击ESC,返回一般模式。注意:编辑模式可以插入或替换文件数据。
(3)命令行模式:输入“: /? ?”可以进入命令行模式,进行读取、保存文件等其他额外功能;点击ESC,返回一般模式。其中“?/? ?”可用于查找内容。
注意:用法如下:/word:表示向下查找word;?word:表示向上查找word。
3、vi常用命令
(1)vim或者vi编辑文档显示行号:进入命令模式,然后输入命令 set number 或 set nu。
(2)将光标移动到指定行,可以在命令模式下输入“:n”即可移动到指定行。
(3)删除所有文本内容,在命令模式 下输入“dG”即可。
(4)复制全部内容,在命令模式下输入“ggyG”即可。
(5)nyy中的n代表要复制的是光标后的几行内容,如果我把n改成2,那么我复制的就是光标后的2行的内容。
(6)ndd表示删除光标以下n行。
(7)gg:表示光标移动到文章开头;G:表示移动到文件结尾;
(8)vi编辑文本内容,在一般模式下按v可进入可视化命令,进行字符选择;大写V表示直接从光标处选到该行最后;Ctrl+v表示可视化块命令,进行字符块选择;
注意:在可视化模式下,可配合上下左右键进行选择;同时,Ctrl+v可视化块命令下可以查看缩进是否一致。
4、vi光标移动命令
注意:gg:表示光标移动到文章开头;G:表示移动到文件结尾;
移动到光标所在行行首:1) Home键;? 2) 数字0;? 3) 符号^;
移动到光标所在行行尾:1) End键;? 2) 符号$? ? ?
5、vi复制命令
6、vi编辑命令
?7、vi删除命令
通过目录操作命令,熟练掌握目录的切换、增删改查。
注意:目录的x权限表示用户能否进入该目录成为工作目录,因此,对目录的各种操作至少要有x权限。
1、切换目录命令:cd(change? directory)
使用方法:cd? ?[相对路径或绝对路径]? ;“.”表示该层目录;”cd . .”表示上一层目录。
2、显示当前目录:pwd;
(1)查看当前目录文件命令:ls,使用方法:-a表示:全部文件,包括隐藏文件(以点开头的文件).
3、创建目录命令:mkdir,用方法:mkdir [-mp] 目录名称;其中,参数m表示自定义目录权限,否则是默认权限;-p 确保目录名称存在,不存在的就建一个,即存在多级目录,多级目录不存在,则创建多级目录。
(1)touch命令用于修改文件或者目录的时间属性,包括存取时间和更改时间。若文件不存在,系统会建立一个新的文件。
注意:touch? 文件名:如果文件不存在,新建文件。
4、 删除目录命令:rmdir:删除一个空的目录。(注意只能删除空的目录)
使用方法:rmdir [-p] 目录名称;-p 是当子目录被删除后使它也成为空目录的话,则顺便一并删除。
(1)删除文件或目录命令:rm,使用方法:rm [-fir] 文件或目录;
?5、复制目录或文件命令:cp,使用方法:cp [-adfilprsu] 源文件(source) 目标文件(destination);
(1)源文件:制定源文件列表。默认情况下,cp命令不能复制目录,如果要复制目录,则必须使用-r选项,实现该目录下所有的子目录和文件复制。
(2)目标文件:指定目标文件。当“源文件”为多个文件时,要求“目标文件”为指定的目录。多个文件空格间隔。
6、移动目录或文件命令:mv,使用方法:mv [-fiu] source destination;
注意:可以利用mv命令以重命名的方式将文件或目录隐藏。
1、查阅文件内容命令:cat,使用格式:cat [-AbEnTv]? 文件;
注意:-n表示打印行号,连同空白行也会有行号。注意:dev/null:在类 Unix 系统中,/dev/null 称空设备,是一个特殊的设备文件。清空文件内容命令:cat /dev/null > /etc/test.txt。
2、添加行号显示文件内容命令:nl,使用格式:nl? ?文件名;
3、文件描述符:对于linux内核而言,所有打开的文件都通过文件描述符引用。文件描述符是一个非负整数。当打开一个现有文件或创建一个新文件时,内核向进程等返回一个文件描述符。按照惯例,unix系统shell把文件描述符0与进程的标准输入关联,文件描述符1与标准输出关联,文件描述符2与标准错误关联。
4、重定向命令:
(1)输出重定向命令:将一条命令执行结果(标准输出,或者错误输出,本来都要打印到屏幕上面的)重定向其它输出设备(文件,打开文件操作符,或打印机等等)。
注意:其中>表示:以覆盖的方法将数据输出到指定的文件或设备上;>>表示:以累加的方法将数据输出到指定的文件或设备上。
(2)输入重定向命令:命令默认从键盘获得的输入,改成从文件,或者其它打开文件以及设备的输入。
?5、文件或目录查询命令:locate [-ir]? keyword;keyword表示关键字,参数说明:i表示忽略大小写;r表示后面可以接正则表达式的显示方式。
注意:locate是从数据库查询文件,因此一些新建的文件会查询不到,需要更新数据库之后才可以。更新数据库命令:updatedb;
6、在指定目录下查找文件:find? [path]? ?[option]? ?[action];其中,?path 为要查找的路径,如果为空字串则使用目前路径。
(1)时间参数说明:参数说明:时间参数共有三个:-atime、-ctime、-mtime;
-mtime n :n为数字,意义为在n天之前的一天之内被更改过的文件;
-mtime +n:列出在n天之前(不包含n天本身)被更改过的文件名;
-mtime -n:列出在n天之内(含n天本身)被更改过的文件名;
(2)与用户或用户组名有关的参数(用于查找用户的文件)
-uid n:n为数字,这个数字为用户的账号id,即UID。
-gid n:n为数字,这个数字是用户组名的id,即gid;
-user name:name为用户账号的名称;
-group name:name为用户组名。
-nouser:寻找文件的所有者不存在/etc/passwd的文件。(适用于某用户被删除,查找他创建的文件)。
-nogroup:寻找文件的所有用户组不存在于/etc/group中的文件。
(3)与文件权限及名称有关的参数
-name filename:查找文件名为filename的文件;
-size [+-]size:查找文件大小比size大或小的文件,c:代表byte。K代表1024bytes;
-type type:查找文件类型为type的文件,类型:一般正规文件(f)、设备文件(b、c),目录(d)、连接文件(l)、socket(s)、FIFO(p)。
-perm mode:查找权限刚好等于mode的文件,例如:4755;
-perm -mode:查找文件权限必须全部包含mode的权限的文件。
-perm +mode:查找文件权限包含任一mode的权限的文件。
(4)其他操作命令
-exec command:command为其他命令,-exec后面可再接其他的命令来处理查找到的结果。例如:find / -perm +7000 -exec ls -l {}\;
1、df 命令是 “Disk Free” 的首字母组合,它报告文件系统磁盘空间的使用情况。它显示一个 Linux 系统中文件系统上可用磁盘空间的数量。df
命令很容易与du
命令混淆。它们的用途不同。df
命令报告我们拥有多少磁盘空间(空闲磁盘空间),而du
命令报告被文件和目录占用了多少磁盘空间。
(1)使用格式:df [-ahikHTm]? [目录或文件名]
参数说明:h为以GB、MB、KB等格式自行显示。例如:df -h
2、du:评估文件系统的磁盘使用量。查看目录或者文件所占空间的大小。
(1)使用格式:du [-ahskm] 文件或目录名称,其中s表示列出总量而已。-h表示以K,M,G为单位,提高信息可读性。
一块新的硬盘插到计算机上是没有办法直接使用的,要先对硬盘分区格式化,完成挂载之后才能使用。
1、使用MBR分区表的硬盘最多只能划分4个主分区磁盘,如果分区的硬盘容量超过2TB了,则需要使用GPT分区表类型,是一种新的硬盘分区标准;MBR的意思是主引导记录,它有自己的启动器,也就是启动代码,GPT是一个正逐渐取代MBR的新标准,它由UEFI辅住而形成的。
(1)UEFI,全称Unified Extensible Firmware Interface,即“统一的可扩展固件接口”,是一种详细描述全新类型接口的标准,是适用于电脑的标准固件接口,旨在代替BIOS(基本输入/输出系统)。
(2)fdisk 命令最大只能划分 2T 大小的磁盘,超过 2T 大小的磁盘需要使用 parted 命令。
2、MBR分区方式:主分区最多只能有4个,或者3个主分区和1个扩展分区;在扩展分区上我们可以创建多个逻辑分区,分区编号:主分区1-4 ,逻辑分区数量不限。
(1)扩展分区可以是0个,最多是1个;真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中。
(2)主分区:主要是用来启动操作系统的,它主要放的是操作系统的启动或引导程序,/boot分区最好放在主分区上
(3)扩展分区不能使用的,它只是做为逻辑分区的容器存在的;我们真正存放数据的是主分区和逻辑分区,大量数据都放在逻辑分区中;创建了扩展分区之后,还需要在扩展分区上创建逻辑分区,硬盘才能使用。
(4)如果你用的是GPT的分区方式,那么它没有限制主分区个数。
查看磁盘分区:fdisk;使用格式:fdisk [-l] 设备名称,q表示退出fdisk;w表示操作生效。
1、查看是否有硬盘没有分区:fdisk -l;
2、对未分区的硬盘分区:fdisk? 设备名称;例如:fdisk /dev/sdc;
(1)输入m,可以查看有哪些命令操作;
(2)输入p,可以查看硬盘当前分区情况;
(3)输入n,表示新建一个分区;再输入p,表示创建一个主分区;在输入主分区的编号:1-4;再设置主分区的大小:主分区扇区的开始位置默认从1开始,主分区的结束位置。
注意:其他主分区创建方法一样,可以只创建主分区即可。如果要创建扩展分区,一定要在扩展分区上创建逻辑分区才能使用。
(4)输入p,查看已经创建好的分区;
(5)输入w,对创建好的分区进行写入保存。
3、分区创建好之后,需要对分区进行格式化,即指定硬盘的文件系统类型。
注意:因为每种操作系统所设定的文件属性/权限并不相同, 为了存放这些文件所需的数据,因此就需要将分区槽进行格式化,以成为操作系统能够利用的『文件系统格式(filesystem)]。
(1)磁盘格式化命令:mkfs,使用格式:mkfs [-t 文件系统格式] 设备文件名? 等价于mkfs.文件系统格式名? ?设备文件名。
(2)常用的文件系统,其中包括ext、ext2、ext3、ext4、JFS、XFS、ReiserFS等
4、磁盘格式化之后需要挂载才能正常使用。
(1)创建挂载目录:mkdir? 目录名称;例如:mkdir? /gzd
(2)挂载分区:mount? ?设备文件名? ?挂载目录;例如:mount? ?/dev/sdc1? ?/gzd
(3)可以通过磁盘可用命令查看是否成功:df? 。
5、卸载分区命令:umount? 设备文件名;例如:umount? ?/dev/sdc1。
注意:分区卸载了,其实还可以挂载,而且数据还会在的。可以使用fdisk命令对分区进行删除。
6、删除分区:fdisk? 设备文件名;操作和创建分区类似。
1、首先要弄清两个概念:打包和压缩。打包是指将一大堆文件或目录变成一个总的文件;压缩则是将一个大的文件通过一些压缩算法变成一个小文件。
2、为什么要区分这两个概念呢?这源于 Linux 中很多压缩程序只能针对一个文件进行压缩,这样当你想要压缩一大堆文件时,你得先将这一大堆文件先打成一个包(tar命令),然后再用压缩程序进行压缩(gzip bzip2命令)。tar包文件的命令通常都是以.tar结尾的。
3、将多个文件或目录打包在一起,可通过调用gzip或zip 实现压缩、解压的命令,tar不仅可以对多个文件打包,还可对多个文件进行压缩。
(1)压缩命令使用格式:tar -jcvf? [压缩文件名称]? ?[要被压缩的文件或目录名称]。
?(2)解压缩命令:tar -jxvf filename.tar.bz2
注意:可以在任意目录下将压缩文件解压,切换到要解压的目录,执行解压缩命令即可。或者通过参数-C(大写):表示指定解压的目录路径。
?4、备份工具:dump命令,dump命令可备份文件系统或单一目录;
Dump的备份若针对文件系统时,可进行0-9的level差异备份,其中level0是完整备份。
注意:dump 命令使用“备份级别”来实现增量备份,它支持 0~9 共 10 个备份级别。其中,0 级别指的就是完全备份,1~9 级别都是增量备份级别。
1、进程管理的作用:(1)判断服务器健康状态;(2)查看系统中所有进程;(3)杀死没用的进程。
2、进程查看命令:ps
?
3、查看系统健康状态:top
注意:ps 命令可以一次性给出当前系统中进程状态,但使用此方式得到的信息缺乏时效性,为此,Linux 提供了 top 命令。top 命令可以动态地持续监听进程地运行状态,与此同时,该命令还提供了一个交互界面,用户可以根据需要,人性化地定制自己的输出,进而更清楚地了进程的运行状态。
(1)top前5行说明:主要关注:load average(平均负载,即系统前1分钟,5分钟,15分钟的平均负载),CPU的空闲率,内存的空闲率,swap的空闲率。?
?(2)top输出内容含义:
?
?4、杀死进程命令:kill? -信号 ?进程端口;杀死指定进程。
注意:常用的信号,如下:
(1)-1:SIGHUP,表示该信号让进程立即关闭,然后重新读取配置文件之后重启,即表示平滑重启;
(2)-9:SIGKILL,表示用来立即结束程序的运行,即强制关闭
5、killall? [选项][信号]? 进程名:表示按照进程名杀死进程即批量杀死进程;
(1)选项:-i:表示交互式,询问是否要杀死某个进程;
(2)-I:忽略进程名的大小写。