常用技巧:
- 可以通过上下箭头的键,调出原来使用过的指令
Linux绪论(一)
1.1 Linux主要作用

运维工程师:保证服务器正常运行、管理服务器
嵌入式工程师:驱动开发(C++)
在Linux下做各种程序开发:主要使用Python C++ JAVA等
1.2 Linux 的应用领域
1.2.1 个人桌面
此领域是传统 linux 应用最薄弱的环节,传统 linux 由于界面简单、操作复杂、应用软件少的缺点(因为Linux本来就是为了做服务器出现的), 一直被 windows 所压制,但近些年来随着 ubuntu、fedora [fɪˈdɔ:rə] 等优秀桌面环境的兴起,同时各大硬件厂商对其支持的加大,linux 在个人桌面领域的占有率在逐渐的提高
1.2.2 服务器
linux 在服务器领域的应用是最强的。
linux 免费、稳定、高效等特点在这里得到了很好的体现,近些年来 linux 服务器市场得到了飞速的提升,尤其在一些高端领域尤为广泛。
1.2.3 嵌入式
近些年来 linux 在嵌入式领域的应用得到了飞速的提高
linux运行稳定、对网络的良好支持性、低成本,且可以根据需要进行软件裁剪,内核最小可以达到几百 KB 等特点,使其近些年来在嵌入式领域的应用得到非常大的提高
主要应用:机顶盒、数字电视、网络电话、程控交换机、手机(安卓的内核就是linux)、PDA、智能家居、智能硬件等都是其应用领域。以后再物联网中应用会更加广泛
1.3 学习路线
linux 是一个开源、免费的操作系统,其稳定性、安全性、处理多并发已经得到业界的认可,目前很多中型,大型甚至是集群项目都在使用 linux,很多软件公司考虑到开发成本都首选 linux,在中国软件公司得到广泛的使用。
学习阶段:
第 1 阶段:linux 环境下的基本操作命令,包括 文件操作命令(rm mkdir chmod, chown) 编辑工具使用(vi vim)linux 用户管理(useradd userdel usermod)等
第 2 阶段:linux 的各种配置(环境变量配置,网络配置,服务配置)
第 3 阶段:linux 下如何搭建对应语言的开发环境(大数据,JavaEE, Python 等) 第 4 阶段:能编写 shell 脚本,对 Linux 服务器进行维护。
第 4 阶段:能编写 shell 脚本(至少能看得懂),对 Linux 服务器进行维护。
第 5 阶段:能进行安全设置,防止攻击,保障服务器正常运行,能对系统调优。
第 6 阶段:深入理解 Linux 系统(对内核有研究),熟练掌握大型网站应用架构组成、并熟悉各个环节的部署和维护方法。
Linux入门(二)
2.1 Linux 介绍
(1)Linux 是一款操作系统,免费,开源(厂商可以拿到源码进行二次开发得到不同的Linux发行版), 安全,高效,稳定, 处理高并发非常强悍,现在很多的企业级的项目都部署到 Linux/unix 服务器运行(一般微软的产品就部署到Window环境下)
(2)Linux 的主要的发行版
Linux和发行版的关系——我们说的Linux一般指的是内核,但是内核没有任何软件和应用程序,在内核基础上进行二次改版得到发行版(内核没法直接用)
(3)目前主要的操作系统
windows, android ,车载系统,linux 等
2.2 Unix的由来
Linux是由Unix演变而来的
70年代贝尔实验室准备做分时操作系统,托马斯使用B语言在该系统基础上开发了Unix操作系统;
71年两人合作写了C语言;
73年用C语言重写了Unix;
普通用户无法使用这些公司的操作系统,Stallman提出了GUN计划;
GUN计划
崇尚软件自由,除了硬件以外的层都是用户自己开发,其中的操作系统层就是用的Linux,所以其实全称应该是GUN/Linux
Linux和Unix的关系
Unix之父和C语言之父共同在73年产生Unix内核;
产生后这些厂商开发了自己的发行版,但是很贵用不起,且需要高端服务器才能使用;
为了使在PC上也能免费试用,林纳斯在Minix操作系统的基础上开发了Linux内核;
2.3 linux和 Windows比较
2.4 VM和CentOS
目前我们有一个Windows操作系统,但是Windows没办法学习Linux指令;
有一种软件叫虚拟机,可以帮我们虚拟一个操作系统出来,通过这个软件来创建一个虚拟机空间,再在这个空间里安装真正的CentOS操作系统(这个系统说实话就是一系列文件,这些系统可以直接移动);
李四安装了虚拟机CentOS,桥连可以使张三和李四的本机和虚拟机通信,但是同一个教室中的桥连接IP地址只有253个容易冲突;
王五使用NAT模式,本机会出现两个IP地址,虚拟系统的IP地址和第二个地址构成同一个网络,注意外网无法访问到Linux;
Linux进阶(三)
3.1 目录结构
Linux中一切皆为文件,不论是外接设备还是内部硬件等在Linux中均被转换为文件管理,不同于Windows有多个根目录,Linux只有一个根目录(当然也可以看作有多个根目录,忽略最上面的\根目录,这样在进行文件操作时会比较好操作),下面默认有许多文件夹,每个文件夹都有各自的用处,当然用户也可以自己创建新文件夹
这里简单介绍一下常见目录的作用



总结
1) linux的目录中有且只要一个根目录/
2) linux的各个目录存放的内容是规划好,不用乱放文件
3) linux是以文件的形式管理我们的设备,因此 linux 系统,一切皆为文件
4) linux的各个文件目录下存放什么内容,大家必须有一个认识
5) 学习后,脑海中应该有一颗 linux目录树(便于后续命令行操作)
3.2 文本编辑
3.2.1 vim的三种模式
(1)正常模式
在正常模式下,我们可以使用快捷键。
以 vim 打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中, 你可以使用『上下左右』按键来移动光标,你可以使用『删除字符』或『删除整行』来处理档案内容, 也可以使用『复制、贴上』来处理你的文件数据。
(2)插入/编辑模式
在模式下,程序员可以输入内容。
按下 i, I, o, O, a, A, r, R 等任何一个字母之后才会进入编辑模式, 一般来说按 i 即可
(3)命令行模式
在这个模式当中, 可以提供你相关指令,完成读取、存盘、替换、离开 vim 、显示行号等的动作则是在此模式中达成的!
三种模式之间相互转换图q!表示修改不保存 q表示未修改不保存 wq表示修改并保存
3.2.2 vim快捷键
大多快捷键默认在正常模式下使用
yy拷贝当前行5yy拷贝包含当前行以下的5行dd删除当前行5dd删除包含当前行向下的5行p粘贴/关键词命令行模式下使用,n即查找下一个:set nu命令行模式下设置行号:set nonu命令行模式下取消行号G文档首行g文档末尾u撤销
3.3 常规操作
3.3.1 关机&重启
shutdown -h now : 表示立即关机shutdown -h 1 : 表示 1 分钟后关机shutdown -r now: 立即重启halt:直接关机reboot:就是重启系统syn :把内存的数据同步到磁盘
注意:当我们关机或者重启时,都应该先执行一下sync 指令,把内存的数据写入磁盘,防止数据丢失
3.3.2 登录&注销
1) 登录时尽量少用 root帐号登录,因为它是系统管理员,最大的权限,避免操作失误。可以利用普通用户登录,登录后再用su -命令来切换成系统管理员身份.
2) logout注销用户(断开与服务器的远程连接,注意只能断开远程登陆这个命令才有用)
3.3.3 用户管理
linux操作系统下可以有很多用户,比如root、xm、xh,linux使用组来管理用户,一个用户至少属于一个组(可以属于多个组),可以切换用户的组
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须首先向系统管理员申请一个账号,然后以这个账号的身份进入系统
注意:默认情况下只有root用户,需要在root权限下管理用户成员
(1)创建用户
useradd 用户名useradd [选项] 用户名
注意:
1) 创建用户成功后,会自动的创建和用户同名的家目录
2) 也可以通过useradd -d 指定目录 新的用户名,给新创建的用户指定家目录
(2)指定&修改密码
(3)删除用户
userdel 用户名:删除用户,保留家目录(推荐)userdel -r 用户名:删除用户,并删除家目录(不推荐)
(4)查询用户
(5)切换用户
在操作 Linux 中,如果当前用户的权限不够,可以通过 su -指令,切换到高权限用户su - 用户名
注意:
1)从权限高的用户切换到权限低的用户,不需要输入密码,反之需要。
2)当需要返回到原来用户时,使用 exit指令
3.3.4 用户组
用户组类似于工作组,系统可以对有共性的多个用户进行统一的管理(研发组、测试组…)
(1)增加组
(2)删除组
(3)创建用户时指定组
默认情况下不指定组会导致在创建用户时直接创建并分配用户到与用户同名的组中useradd -g 用户组 用户名
(4)修改用户的组
usermod -g 用户组 用户名
3.3.5 用户和组的配置文件
(1)/etc/passwd 文件
用户(user)的配置文件,记录用户的各种信息
每行的含义:用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录 Shell
(2)/etc/shadow文件
口令的配置文件(主要存储密码和登录信息)
每行的含义:登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志
(3)/etc/group 文件
组(group)的配置文件,记录 Linux 包含的组的信息
每行含义:组名:口令:组标识号:组内用户列表4
3.4 实用指令
我们通过XShell远程操作时一般都使用的是命令行进行操作,在linux系统中也可以切换使用图形化界面或纯命令行模式等
3.4.1 运行级别
0:关机
1:单用户【找回丢失密码】模式
2:多用户状态没有网络服务模式
3:多用户状态有网络服务模式
4:系统未使用保留给用户模式
5:图形界面模式
6:系统重启
注意:
- 常用运行级别是 3 和 5 ,要修改默认的运行级别可改文件/etc/inittab 的 id:5:initdefault:这一行中的数字(把5改成3可以使默认进入命令行模式,假如有人将默认模式修改为0(重复关机)只需要根据步骤进入单用户模式修改文件即可)
- 假如我们要使用图形化界面则需要把运行级别设置到5,一般普通用户使用5号级别,程序员使用3号级别命令行
- Linux的运行级别类似于Windows下的安全模式和普通图形化桌面两种模式9
(1)切换运行级别
init [012356]
注意千万不要切换到4号级别
(2)找回root密码
思路:进入到单用户模式[1],然后修改 root 密码。因为进入单用户模式,root 不需要密码就可以登录(单用户模式是直接以root身份无需密码登陆)
演示视频:https://www.bilibili.com/video/BV1dW411M7xL?p=22
注意:通过这种方式修改root密码是有严格限制的,不能通过远程操作,只能使用linux所在电脑进行操作,因此安全性是有保障的
3.4.2 帮助指令
当我们对某个指令不熟悉时,我们可以使用 Linux 提供的帮助指令来了解这个指令的使用方法。
(1)man指令
(2)help指令
基本语法:help(功能描述:获得 shell 内置命令的帮助信息)
3.4.3 文件目录指令
(1)pwd 指令
基本语法:pwd (功能描述:显示当前工作目录的绝对路径)
(2)ls 指令
基本语法:ls [选项] 目录或是文件(功能描述:查看目录的所有内容信息)
注意:中括号表示可选参数,实际输入时千万不能带中括号
-a:显示当前目录所有的文件和目录,包括隐藏的。-l:以列表的方式显示信息(没有l就是横向显示)
(3)cd 指令
基本语法:cd 绝对路径/相对路径 (功能描述:切换到指定目录)
cd ~或者cd:回到自己的家目录cd ..回到当前目录的上一级目录
(4)mkdir 指令
基本语法:mkdir [选项] 要创建的目录(功能描述:用于创建目录)
-p:创建多级目录(即在不存在的目录下创建一个目录)


(5)rmdir 指令
基本语法:rmdir [选项] 要删除的空目录(功能介绍:删除空目录)
rm -rf:rmdir删除的是空目录,如果目录下有内容时无法删除的,如果需要删除非空目录,需要使用rm -rf要删除的目录

(6)touch 指令
基本语法:touch 文件名称(功能描述:创建空文件,注意是文件不是文件夹!)
(7)cp 指令
基本语法:cp [选项] source dest(source是源文件/源文件夹,dest是目的文件夹)
-r:递归复制整个文件夹
![将 /home/aaa.txt 拷贝到 /home/bbb 目录下[拷贝单个文件] image.png](/uploads/projects/tintoki@znb576/e18217ed91e78aecafe18b4e1978cb7b.png)

2:当文件夹中存在两个完全相同的文件时普通拷贝会提示是否覆盖,使用\cp强制覆盖且不提醒
(8)rm 指令
基本语法:rm [选项] 要删除的文件或目录(功能描述:移除/删除文件或目录(删除目录本质上是使用删除文件的递归))
-r:递归删除整个文件夹-f: 强制删除不提示
(9)mv 指令
基本语法:mv oldNameFile newNameFile(功能描述:重命名) mv movefile targetFolder (功能描述:移动文件)

(10)cat 指令
基本语法:cat [选项] 要查看的文件(功能描述:查看文件内容,以只读的方式打开)
-n:显示行号

注意:cat只能浏览文件,而不能修改文件,为了浏览方便,一般会带上管道命令| more cat 文件名 |more
(11)more指令
基本语法:more 要查看的文件
more 指令是一个基于VI 编辑器的文本过滤器,它以全屏幕的方式按页显示文本文件的内容。more 指令中内置了若干快捷键,常见快捷键如下
(12)less 指令
基本语法:less 要查看的文件
less 指令用来分屏查看文件内容,它的功能与more 指令类似,但是比 more 指令更加强大,支持各种显示终端。less 指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于显示大型文件具有较高的效率(即使用less打开文件会比more快)。常见快捷键如下
(13)> 指令 和 >> 指令
这两个指令都是写入指令
输出重定向:将原来的文件的内容覆盖
追加:不会覆盖原来文件的内容,而是追加到文件的尾部
基本用法:ls-l >文件(功能描述:将列表的内容写入文件a.txt中(覆盖写))
注意:如果a.txt文件不存在,就创建该文件再写入
ls-al >> 文件(功能描述:列表的内容追加到文件aa.txt的末尾)
cat 文件1 > 文件2(功能描述:将文件1的内容覆盖到文件2)
echo "内容" >> 文件
(14)echo指令
基本语法:echo "输出内容"(功能描述:输出内容到控制台)
(15)head 指令
head 用于显示文件的开头部分内容,默认情况下 head 指令显示文件的前10行内容
基本语法:head 文件(功能描述:查看文件头10 行内容)head -n num 文件(功能描述:查看文件头num行内容,num可以是任意行数)
(16)tail 指令
tail 用于输出文件中尾部的内容,默认情况下 tail 指令显示文件的后10行内容
基本语法:
1) tail 文件(功能描述:查看文件后10行内容)
2) tail -n num 文件(功能描述:查看文件后num行内容,num可以是任意行数)
3) tail -f 文件(功能描述:实时追踪该文档的所有更新,工作经常使用)
c
(17)ln 指令
软链接也叫符号链接,类似于 windows 里的快捷方式,主要存放了链接其他文件的路径
当我们使用 pwd 指令查看目录时,仍然看到的是软链接所在目录
基本语法:ln -s 原文件或目录 软链接名(功能描述:给文件或文件夹创建一个软链接)
(18)history指令
基本语法:history(功能描述:查看已经执行过历史命令)


3.4.4 时间日期指令
(1)date指令
•基本语法
1) date (功能描述:显示当前时间)
2) date +%Y (功能描述:显示当前年份)
3) date +%m(功能描述:显示当前月份)
4) date +%d(功能描述:显示当前是哪一天)
5) date "+%Y-%m-%d %H:%M:%S"(功能描述:显示年月日时分秒)

(2)date指令2
基本语法:date -s 字符串时间(功能描述:设置系统时间)
(3)cal 指令
基本语法:cal [选项](功能描述:不加选项,默认显示本月日历)
3.4.5 搜索查找指令
(1)find指令
find 指令将从指定目录向下递归地遍历其各个子目录,将满足条件的文件或者目录显示在终端
基本语法:find [搜索范围] [选项]




(2)locate指令
locaate 指令可以快速定位文件路径。locate 指令利用事先建立的系统中所有文件名称及路径的locate 数据库实现快速定位给定的文件。Locate 指令无需遍历整个文件系统,查询速度较快。为了保证查询结果的准确度,管理员必须定期更新 locate 数据库
由于 locate 指令基于数据库进行查询,所以第一次运行前,必须使用 updatedb 指令创建 locate 数据库
基本语法:locate 搜索文件名
(3)grep指令&管道符号
grep过滤查找
管道符|表示将前一个命令的处理结果输出传递给后面的命令处理
3.4.6 压缩和解压类
(1)gzip/gunzip 指令
gzip用于压缩文件, gunzip 用于解压文件
当我们使用 gzip 对文件进行压缩后,不会保留原来的文件
基本语法:gzip 文件名(功能描述:压缩文件,只能将文件压缩为*.gz文件)gunzip 文件名.gz(功能描述:解压缩文件命令)
(2)zip/unzip指令
zip用于压缩文件, unzip用于解压的,这个在项目打包发布中很有用的
基本语法:zip [选项] XXX.zip 将要压缩的内容(功能描述:压缩文件和目录/文件夹)unzip [选项] XXX.zip(功能描述:解压缩文件)
常用选项:
zip:-r:递归压缩,即压缩目录
unzip:-d<目录>:指定解压后文件的存放目录

(3)tar指令
tar指令 是打包指令,打包后得到的文件是 .tar.gz 的文件;该指令只有一个而不是一对,通过指定不同参数进行压缩(z)和解压(x)
压缩也是一种打包,压缩的原理是将文件中相同的信息用一个字符代替,致使文件体积变小达到压缩的目的,压缩对于文本类或数据类文件有较明显的作用。
打包就是将一些文件放在一起变成一个包,便于保存和传输,图片和视频数据因为不像文本一样,因此多个图片在压缩的时候没有明显效果,因此只能做打包进行保存
基本语法:tar [选项] XXX.tar.gz 打包的内容(功能描述:打包文件夹,打包后进行压缩的文件格式*.tar.gz)




注意:指定解压到的目录事先要存在才行且需要添加参数-C
Linux实操(四)
4.1 组管理和权限管理
4.1.1 Linux组的简介
linux每个用户的用户信息都存在用户配置文件中/etc/passwd,口令会放在etc/shadow文件中,组配置文件(记录组信息)会放在etx/group中
在 linux 中的每个用户至少属于一个组,不能独立于组外。在 linux 中每个文件都有所有者、所在组、其它组的概念
linux中的一个文件,其所有者即这个文件是谁的(小明),所在组即这个文件归属于哪个组(默认是小明那个组的),其他组即除去所在组的其他组(这个文件所在的除了小明那个组的其他组)
(1)所有者
一般为文件的创建者,谁创建了该文件,就自然的成为该文件的所有者
(1.1)查看文件的所有者
指令:ls -ahl
应用实例:创建一个组 police,再创建一个用户 tom,将 tom放在 police组 ,然后使用 tom来创建一个文件 ok.txt,接着查看该文件的详细信息

(1.2)修改文件的所有者
指令:chown 用户名 文件名
应用实例:使用 root 创建一个文件 apple.txt,然后将其所有者修改成 tom
(2)所在组
当某个用户创建了一个文件后,默认这个文件的所在组就是该用户所在的组
(2.1)查看所在组
基本指令:ls –ahl
(2.2)修改所在组
基本指令:chgrp 组名 文件名
应用实例:使用 root 用户创建文件 orange.txt ,看看当前这个文件属于哪个组,然后将这个文件所在组,修改到 police 组
(3)其他组
下面先介绍一下关于用户组的基本概念
基本组:创建用户的时候系统会同时创建一个和这个用户名同名的组(当然在创建时使用-g直接分配的组则该用户的基本组是该分配的组),这个组就是基本组,不可以把用户从基本组中删除(即用户必须属于一个主组,这里并不是指的不能修改用户的主组)。在/etc/passwd文件中,记录行第四个字段为gid,即用户的主组id
附加组:除了基本组之外,用户所在的其他组,都是附加组。用户是可以从附加组中被删除的。
一个用户可以属于多个附加组。但是一个用户只能有一个基本组/主组
通过usermod -g 将普通用户的主组设置为系统中存在的任意某个组(永久性);
通过newgrp暂时性变更当前用户的主组(只对于当前login session有效,非永久性);
通过usermod -G 设置普通用户的附属组;
文件的其他组定义为:除了文件的所有者用户以及其所在组拥有的用户外,系统的其他用户统称为文件的其他组的用户(其他组不能等同于附加组)
4.1.2 Linux权限的简介
这里介绍的权限主要是指文件和目录的权限
上面图是之前查看文件的所在组和所有者时的控制台输出,我们来分析具体含义
(1)rwx权限
rwx 作用到文件
1) [ r ]代表可读(read): 可以读取,查看
2) [ w ]代表可写(write): 可以修改,但是不代表可以删除该文件,删除一个文件的前提条件是对该文件所在的目录有写权限,才能删除该文件.
3) [ x ]代表可执行(execute):可以被执行
rwx 作用到目录
1) [ r ]代表可读(read): 可以读取,ls 查看目录内容
2) [ w ]代表可写(write): 可以修改,目录内创建+删除+重命名目录
3) [ x ]代表可执行(execute):可以进入该目录
(2)实例详解
假设通过ls -l显示的内容为:-rwxrw-r-- 1 root root 1213 Feb 2 09:39 abc
前10个字符确定不同用户能对文件干什么
第一个字符代表文件类型: 文件 (-),目录(d),链接(l),其余字符每 3个一组(rwx) 读(r) 写(w) 执行(x)
第一组 rwx :文件所有者的权限是读、写和执行
第二组rw-:文件所在组的用户的权限是读、写但不能执行
第三组r—:其他组的用户的权限是读不能写和执行
后面的字符意义如下
1 文件:硬连接数或 目录:子目录数
root 所有者
root 所在组
1213 文件大小(字节),如果是文件夹/目录,显示 4096 字节(目录都是4096,并不代表目录下所有文件的大小,目录是一种特殊文件其大小恒为4096)
Feb209:39 最后修改日期
abc 文件名
(3)修改权限
(3.1)第一种方式
使用+ 、-、= 变更权限,其中字母含义分别为 u:所有者 g:所在组 o:其他组 a:所有人(u、g、o 的总和)
基本用法:
1) chmod u=rwx,g=rx,o=x 文件目录名给文件或者目录的所有者rwx权限,所在组rx权限,其他组x权限
2) chmod o+w 文件目录名给该文件的其他组增加一个w权限
3) chmod a-x 文件目录名给该文件的所有用户减少一个x权限
(3.2)第二种方式
通过数字变更权限:,数字分别代表 r=4 w=2 x=1 rwx=4+2+1=7
基本用法:
基本用法和第一种方式类似chmod u=rwx,g=rx,o=x 文件目录名 相当于chmod 751 文件目录名
4.2 crond任务调度
4.2.1 概述
任务调度:指系统在某个时间执行的特定的命令或程序,因此涉及shell编程
任务调度分类:
1.系统工作:有些重要的工作必须周而复始地执行。如病毒扫描等
2.个别用户工作:个别用户可能希望执行某些程序,比如对 mysql 数据库的备份。
4.2.2 基本语法
crontab [选项]
参数细节
特殊符号
实例
4.2.3 crond相关指令
1) conrtab–r:终止任务调度,即删除所有任务调度
2) crontab–l:列出当前有哪些任务调度
3) service crond restart:[重启任务调度]
4.3 Linux磁盘分区&挂载
4.3.1 分区
(1)分区的方式
mbr 分区(传统方式):
- 最多支持四个主分区
- 系统只能安装在主分区
- 扩展分区要占一个主分区
- MBR 一个分区最大只支持 2TB,但拥有最好的兼容性
gtp 分区(目前方式):
- 支持无限多个主分区(但操作系统可能限制,比如 windows 下最多 128 个分区 常规来说3个盘就够了)
- 最大支持 18EB 的大容量(1EB=1024 PB,1PB=1024 TB )
- windows7 64 位以后支持 gtp
(2)实际分区
(2.1)windows下的磁盘分区
(2.2)Linux 分区
1)Linux来说无论有几个分区,分给哪一目录使用,它归根结底就只有一个根目录,一个独立且唯一的文件结构 , Linux中每个分区都是用来组成整个文件系统的一部分。
2)Linux采用了一种叫“载入”的处理方法,它的整个文件系统中包含了一整套的文件和目录, 且将一个分区和一个目录联系起来。这时要载入的一个分区将使它的存储空间在一个目录下获得。
(3)硬盘简介
1)Linux硬盘分 IDE硬盘和 SCSI硬盘,目前基本上是 SCSI硬盘
2)对于 IDE 硬盘,驱动器标识符为“hdx~”,其中“hd”表明分区所在设备的类型,这里是指 IDE 硬盘。“x”为盘号(a为基本盘,b为基本从属盘,c为辅助主盘,d为辅助从属盘),“~”代表分区, 前四个分区用数字 1 到 4表示,它们是主分区或扩展分区,从 5 开始就是逻辑分区。
例如hda3表示为第一个IDE硬盘上的第三个主分区或扩展分区,hdb2表示为第二个IDE硬盘上的第二个主分区或扩展分区。
3)对于 SCSI硬盘则标识为“sdx~”,SCSI硬盘是用“sd”来表示分区所在设备的类型的,其余则和 IDE硬盘的表示方法一样
4.3.2 挂载
假设现在我们有一个需求——给我们的 Linux 系统增加一个新的硬盘(给虚拟机增加硬盘),并且挂载到/home/newdisk
步骤:
1)虚拟机添加硬盘
在【虚拟机】菜单中,选择【设置】,然后设备列表里添加硬盘,然后一路【下一步】,中间只有选择磁盘大小的地方需要修改,至到完成。然后重启系统(才能识别)
2)分区
分区指令 fdisk /dev/sdb
开始对/sdb 分区会使用到如下指令
•m 显示命令列表
•p 显示磁盘分区同 fdisk –l
•n 新增分区
•d 删除分区
•w 写入并退出
说明: 开始分区后输入 n,新增分区,然后选择 p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入 w 写入分区并退出,若不保存退出输入 q
3)格式化
分区只是买房子,格式化(装修)之后才能使用(存文件)
分区指令 mkfs-t ext4 /dev/sdb1
4)挂载
挂载之前需要先创建一个与之挂载的目录
挂载指令 mount 设备名称 挂载目录例如mount /dev/sdb1 /newdisk
取消挂载指令 umount 设备名称或者挂载目录
5)自动挂载
设置永久挂载,当你重启系统,仍然可以挂载到 /home/newdisk,否则重启后该挂载的区域又没有了
永久挂载: 通过修改/etc/fstab实现挂载添
4.3.3 磁盘情况查询
(1)查询系统整体磁盘使用情况
(2)查询指定目录的磁盘占用情况
基本语法 du [选项] /目录(功能描述:查询指定目录的磁盘占用情况,默认为当前目录)
选项说明:
-s指定目录占用大小汇总
-h带计量单位
-a含文件
—max-depth=1 子目录深度
-c列出明细的同时,增加汇总值
(3)常用指令
这里是一些命令的组合




4.4 网络配置
目前我们的网络配置采用的是 NAT模式(网络地址转换模式),Windows系统实际上有两块网卡,Windows和Linux之间通过这块虚拟网卡形成了一个内部网络,用来实际上网的网卡可以有线可以无线具体看电脑通过哪种方式连接网络
(1)自动连接
点击小电脑图标的需要每次重启服务器之后都要手动点击才能重新连接网络,还存在一个缺点是这将导致Linux的IP地址是随机分配的,这在实际的开发过程中会出问题
使用自动连接缺点: 设置成功后,linux 启动后会自动获取 IP,缺点是每次自动获取的 ip 地址可能不一样。这个不适用于做服务器,因为我们的服务器的 ip 需要是固定的
我们推荐下面这种方法——指定固定的IP,通过直接修改配置文件来指定IP,并可以连接到外网(程序员推荐),语句为vi/etc/sysconfig/network-scripts/ifcfg-eth0
注意:修改后,一定要重启服务或直接重启电脑

4.5 进程管理
4.5.1 进程简介
在 LINUX中,每个执行的程序(代码)都称为一个进程。每一个进程都分配一个 ID 号。
每一个进程,都会对应一个父进程,而这个父进程可以复制多个子进程。例如 www服务器。
每个进程都可能以两种方式存在的。前台与后台,所谓前台进程就是用户目前的屏幕上可以进行操作的。后台进程则是实际在操作,但由于屏幕上无法看到的进程,通常使用后台方式执行。
一般系统的服务都是以后台进程的方式存在,而且都会常驻在系统中。直到关机才才结束。
4.5.2 查看进程
查看进行使用的指令是 ps,一般来说使用带参数的指令是 ps-aux

USER:用户名称PID:进程号%CPU:进程占用 CPU的百分比%MEM:进程占用物理内存的百分比VSZ:进程占用的虚拟内存大小(单位:KB)RSS:进程占用的物理内存大小(单位:KB)TTY:终端名称,缩写START:进程状态,其中 S-睡眠,s-表示该进程是会话的先导进程,N-表示进程拥有比普通优先级更低的优先级,R-正在运行,D-短期等待,Z-僵死进程,T-被跟踪或者被停止等等STARTED:进程的启动时间TIME:CPU时间,即进程使用 CPU的总时间COMMAND:启动进程所用的命令和参数,如果过长会被截断显示
4.5.3 查看进程树
基本语法:pstree [选项](功能描述:可以更加直观的来看进程信息)
常用选项:-p :显示进程的 PID-u :显示进程的所属用户
4.5.4 终止进程
当我们不需要某些进程或有些恶意进程,我们可以选择结束进程
基本语法:kill [选项] 进程号(功能描述:通过进程号杀死进程)killall 进程名称(功能描述:通过进程名称杀死进程,也支持通配符,这在系统因负载过大而变得很慢时很有用——一次杀掉多个进程)
常用选项:-9 :表示强迫进程立即停止(有些核心进程会忽略kill指令)
4.5.5 服务管理
(1)服务简介
服务(service) 本质就是进程,但是是运行在后台的进程,通常都会监听某个端口,等待其它程序的请求,比如(mysql , sshd,防火墙等),因此我们又称为守护进程,是 Linux 中非常重要的知识点。
(2)服务管理指令
service 服务名 [start|stop|restart|reload|status](中括号中的服务可以任选一个)
注意:在 CentOS7.0 后 不再使用 service ,而是 systemctl

在Windows的Dos命令行下使用telnet IP 端口可以检查Linux服务器的某个服务是否在监听
(3)查看服务名
方式一:使用 setup 指令(*表示自启动)
方式二:/etc/init.d(直接查看该文件夹)
(4)服务的运行级别
前面已经介绍过一次Linux的7种运行级别
查看或者修改默认级别:vi /etc/inittab(直接修改配置文件)
• 运行级别 0:系统停机状态,系统默认运行级别不能设为 0,否则不能正常启动
• 运行级别 1:单用户工作状态,root 权限,用于系统维护,禁止远程登陆
• 运行级别 2:多用户状态(没有 NFS),不支持网络
• 运行级别 3:完全的多用户状态(有 NFS),登陆后进入控制台命令行模式
• 运行级别 4:系统未使用,保留
• 运行级别 5:X11控制台,登陆后进入图形 GUI模式
• 运行级别 6:系统正常关闭并重启,默认运行级别不能设为 6,否则不能正常启动
(5)开机流程

(6)管理自启动
每个不同的服务都会有在7种运行级别下的是否自启动
使用chkconfig指令查看并设置服务在不同级别下的自启动


注意:chkconfig重新设置服务后自启动或关闭,需要重启机器 reboot 才能生效
4.5.6 进程监控
(1)动态监控进程
top 与 ps 命令很相似。它们都用来显示正在执行的进程。top 与ps 最大的不同之处,在于 top 在执行一段时间可以更新正在运行的的进程(类似于Windows的任务管理器)
基本语法:top [选项]


监视特定用户:输入“u”回车,再输入用户名,即可
终止指定的进程:输入“k”回车,再输入要结束的进程 ID 号
指定系统状态更新的时间(每隔 10 秒自动更新, 默认是 3 秒):top -d 10
(2)监控网络状态
基本语法:netstat [选项]一般写为netstat -anp
选项说明:-an按一定顺序排列输出-p显示哪个进程在调用

4.6 RPM和YUM
4.6.1 RPM简介
RPM是一种用于互联网下载包的打包及安装工具(包管理工具),它包含在某些 Linux 分发版中(如CentOS)。它生成具有.RPM 扩展名的文件。RPM 是 RedHat Package Manager(RedHat 软件包管理工具)的缩写,类似 windows 的 setup.exe,这一文件格式名称虽然打上了 RedHat 的标志,但理念是通用的。
Linux 的大多分发版本都有采用(suse,redhat, centos 等等),可以算是公认的行业标准了。
4.6.2 RPM基本格式
一个 rpm 包名:firefox-45.0.1-1.el6.centos.x86_64.rpm
名称:firefox
版本号:45.0.1-1
适用操作系统: el6.centos.x86_64 表示 centos6.x 的 64 位系统。如果是 i686、i386 表示 32 位系统,noarch 表示通用
4.6.3 RPM指令
(1)简单查询指令
基本语法:rpm –qa|grep xx(功能描述:查询已安装的rpm 列表)
常见用法:rpm -qa :查询所安装的所有 rpm 软件包rpm -qa | more 分页显示所安装的所有 rpm 软件包rpm -qa | grep X:查询某软件包是否安装,例如rpm -qa | grep firefoxrpm -q 软件包名 :查询某软件包是否安装(和上面的语法没有本质区别)rpm -q firefoxrpm -qi 软件包名:查询软件包信息rpm -ql 软件包名 :查询软件包中的文件(查询RPM包的文件安装到哪里去了)rpm -ql firefoxrpm -qf 文件全路径名: 查询文件所属的软件包(查询某个文件属于哪个RPM包)
(2)卸载指令
基本语法:rpm -e RPM 包的名称
注意:
- 如果其它软件包依赖于您要卸载的软件包,卸载时则会产生错误信息
rpm -e foo - 如果我们就是要删除 foo这个 rpm包,可以增加参数 —nodeps ,就可以强制删除,但是一般不推荐这样做,因为依赖于该软件包的程序可能无法运行
rpm -e --nodeps foo
(3)安装指令
基本和语法:rpm -ivh RPM包全路径名称
参数说明:i=install安装v=verbose提示h=hash进度条
比如我们需要安装firefox,则先在光驱文件(/media)找到 firefox 的安装 rpm 包,这需要挂载上我们安装 centos 的 iso 文件(这个文件里面会包含所有的rpm软件包),然后到/media(因为外部的光驱文件会自动存储在/media文件夹下)下去找firefox的rpm包
4.6.4 Yum简介
Yum 是一个 Shell 前端软件包管理器(Yum和RPM都是包管理器,但是Yum更加只能和高级)。基于 RPM 包管理,能够从指定的服务器自动下载 RPM 包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包。使用 yum 的前提是可以联网。Yum是联网安装,RPM是本地安装.
使用Yum包管理器时实际上是使用了Yum的服务器提供的服务
4.6.5 Yum指令
yum list | grep xx 软件列表(查询 yum 服务器是否有需要安装的软件,在安装某软件之前最好查看一下Yum服务器是否拥有该软件)yum install xxx(下载安装指定的 yum 包)yum install firefox
Linux的Python定制(五)
Ubuntu(友帮拓、优般图、乌班图)是一个以桌面应用为主的开源 GNU/Linux 操作系统,Ubuntu 是基于 GNU/Linux,支持 x86、amd64(即 x64)和 ppc 架构,由全球化的专业开发团队(Canonical Ltd) 打造的。
专业的 Python 开发者一般会选择 Ubuntu 这款 Linux 系统作为生产平台
Ubuntu 和 Centos 都是基于 GNU/Linux 内核的,因此基本使用和 Centos 是几乎一样的,它们的各种指令可以通用,同学们在学习和使用 Ubuntu 的过程中,会发现各种操作指令在前面学习 CentOS 都使用过。只是界面和预安装的软件有所差别
5.1 apt工具
apt 是 Advanced Packaging Tool 的简称,是一款安装包管理工具。在 Ubuntu 下,我们可以使用 apt
命令可用于软件包的安装、删除、清理等,类似于 Windows 中的软件管理工具。它的默认下载源是在美国。
5.1.1 apt相关命令
sudo apt-get update 更新源sudo apt-get install package 安装包sudo apt-get remove package 删除包sudo apt-cache search package搜索软件包sudo apt-cache show package 获取包的相关信息,如说明、大小、版本等sudo apt-get installpackage --reinstall 重新安装包sudo apt-get -f install 修复安装sudo apt-get remove package --purge 删除包,包括配置文件等sudo apt-get build-dep package 安装相关的编译环境sudo apt-get upgrade 更新已安装的包sudo apt-get dist-upgrade 升级系统sudo apt-cache depends package了解使用该包依赖那些包sudo apt-cache rdepends package查看该包被哪些包依赖sudo apt-get source package 下载该包的源代码
5.2 ssh协议
SSH 为 Secure Shell 的缩写,由 IETF 的网络工作小组(Network Working Group)所制定;SSH 为建立在应用层和传输层基础上的安全协议。
SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。常用于远程登录,以及用户之间进行资料拷贝。几乎所有 UNIX 平台—包括 HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行 SSH。
使用 SSH 服务,需要安装相应的服务器和客户端。客户端和服务器的关系:如果,A 机器想被 B
机器远程控制,那么,A 机器需要安装 SSH 服务器,B 机器需要安装 SSH 客户端。
与CentOS 不一样,Ubuntu 默认没有安装 SSHD 服务,因此,我们不能进行远程登录。
因此若需要远程登陆Ubuntu服务器我们需要使用指令sudo apt-get install openssh-server在当前的Linux上安装SSH服务端和客户端,再执行service sshd restart启动sshd服务,持续监听端口22



