一、Linux简介
1.1Linux介绍
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。
综上所述:Linux是一款操作系统,免费,开源, 安全,高效,稳定, 处理高并发非常强悍的操作系统,现在很多的企业级的项目都部署到Linux服务器运行。
1.2 Linux的分类
1.2.1 根据市场需求分类
根据市场需求Linux大致分为两个版本,一个是主要服务于大众用户的图形化版本
另一款是面向服务器端的服务器版本
1.2.2 根据发行版本分类
根据发行版本的分类大致有:ubuntu、redhat、centos、lubuntu、freeBSD、Deepin…
1.2.3 Red hat和Centos
红帽的全称是Red Hat Enterprise Linux,简称Red Hat或RHEL,红帽Linux(RHEL)是Red Hat专为企业设计的基于Linux的操作系统。RHEL可以在桌面,服务器,虚拟机管理程序或云中运行。Red Hat是世界上使用最广泛的Linux发行版之一。
RedHat 是用 LINUX 核心构架的一个操作系统。RedHat Linux 是目前世界上使用最多的 Linux 操作系统。因为它具备最好的图形界面,无论是安装、配置还是使用都十分方便,而且运行稳定,因此不论是新手还是老玩家都对它有很高的评价。
CentOS(Community Enterprise Operating System,中文意思是:社区企业操作系统)是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。由于出自同样的源代码,因此有些要求高度稳定性的服务器以CentOS替代商业版的Red Hat Enterprise Linux使用。两者的不同,在于CentOS并不包含封闭源代码软件。
区别如下:
● 无偿和有偿的区别:redhat是收费版,centos是免费版;
● redhat一个提供商业的解决方案 ,centos一个不提供。
● CentOS是Linux发行版之一,它是来自于Red Hat Enterprise Linux依照开放源代码规定释出的源代码所编译而成。它与RedHat使用同样的源代码;它完全就是对Red Hat AS进行改进后发布的!各种操作、使用和RED HAT没有区别
二、Linux的安装
2.1 虚拟机简介
虚拟机是一个软件,它可以使你在一台真实PC机器上同时运行二个或更多的不同的操作系统。它可以模拟 一个标准PC环境。这个环境和真实的计算机一样,都有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器。
简单的来说,虚拟机就是用来模拟一台真实的电脑,我们实际在学习过程中,有的时候需要多态电脑模拟真实的环境,那么不可能在硬件层面上真正的提供多态电脑,这个时候我们可以使用虚拟机来帮我们虚拟出一台电脑来;
目前市场上流行的虚拟机有两种:
1)VMware(威睿)公司的虚拟机软件,功能强大,收费产品,有30天试用期,分为64位和32位两种版本,专注企业级用户,性能稳定功能强大,操作简单,公司创建于1998年
2)VitrualBox(Oracle)公司的虚拟机软件,免费开源软件,体积小巧,专注个人用户,对Linux系统支持好,硬件要求远不及VWware,系统资源占用率低
3)Microsoft Virtual PC:Windows Virtual PC是最新的Microsoft虚拟化技术。使用此技术可在一台计算机上同时运行多个操作系统
2.2 VMware安装Centos7
Centos7镜像地址:
阿里镜像:http://mirrors.aliyun.com/centos/7/isos/x86_64/
网易镜像:http://mirrors.163.com/centos/7/isos/x86_64/
2.2.1 新建虚拟机
1)新建虚拟机–>选择iso镜像文件
2)选择存放路径
3)设置虚拟机磁盘大小
4)点击完成
2.2.2 安装Centos
开始安装
选择语言
选择磁盘
设置网络连接
设置ROOT账户密码
等待安装完毕
登录Linux
2.3 快照
2.3.1 拍摄快照
我们以后要在虚拟机上做非常多的操作,其中很有可能会损坏某些文件,我们可以在给虚拟机拍摄快照,记录虚拟机这个时候的一个状态,以后误操作虚拟机后可以通过恢复快照的形式来恢复到以前的状态;
2.3.2 恢复快照
2.4 安装图形化工具
我们在学习过程中,可以安装Linux提供的图形化桌面,让我们操作更加便捷
yum groupinstall -y "GNOME Desktop"
这个过程比较漫长,需要下载安装大量的文件
安装完成之后输入命令:
startx
启动图形化工具
2.5 VM的网络管理
我们知道VM中的操作系统是我们虚拟出来的,具体的硬件也是有VM虚拟的,关于硬件的配置如下
在VM中,网络管理主要有三种模式,分别为bridged(桥接模式)、NAT模式(网络地址转换模式)、host-only(仅主机模式)
2.5.1 桥接模式
在桥接模式中,虚拟的操作系统就是一台独立于局域网中的一台主机,宿主机就相当于是一台网络交换机,虚拟机连上宿主机后,可以访问局域网内的任意一台机器,但是需要在虚拟机中手动配置IP地址、子网掩码、DNS服务器等,而且必须要和宿主机在同一网段;桥接模式一般用于需要在局域网内容真正独立出一台机器的情况;
选择好桥接模式后,重启虚拟机,输入命令
ip addr # 查看虚拟机的ip地址
在查看宿主机的IP地址:
ipconfig
2.5.2 NAT模式
NAT:全称Net Address Transform,网络地址转换,NAT模式是通过宿主机的网络来访问公网,NAT模式下虚拟机中的IP配置信息是由VMnet8虚拟网络的DHCP服务器提供的;由于NAT模式下,虚拟机是借助于宿主机的网络来访问公网的,在局域网内并不是一台独立的主机,因此不能与局域网内其他主机进行通信;NAT的优势在于虚拟机接入互联网简单,不需要进行任何的配置,只要宿主机能够访问互联网即可;
重启虚拟机
reboot
需要注意的是,在NAT模式下,即使虚拟机的网段改为了12(和宿主机同一个网段),在12段的其它机器也还是不能与虚拟机进行通信,因为在NAT模式下,虚拟机在局域网并不是一台独立的主机;
2.5.3 仅主机模式
仅主机模式,也称host-only模式,在某些特殊的网络调试环境中,要求将真实环境和虚拟环境隔离开,这时你就可采用host-only模式。在host-only模式中,所有的虚拟系统是可以相互通信的,但虚拟系统和真实的网络是被隔离开的。
主机和虚拟机是通的,但是虚拟机和主机不是通的
在host-only模式下,虚拟系统的TCP/IP配置信息(如IP地址、网关地址、DNS服务器等),都是由VMnet1(host-only)虚拟网络的DHCP服务器来动态分配的。 如果你想利用VMWare创建一个与网内其他机器相隔离的虚拟系统,进行某些特殊的网络调试工作,可以选择host-only模式。
三、客户端工具
在实际开发中,Linux服务器都在其他的地方,我们要通过windows客户端工具远程去连接Linux并操作它;市面上有许多的Linux客户端连接工具,让我们可以更便捷的操作Linux;连接 Linux的windows客户端工具有很多,企业中常用的有Xshell、Putty、secureCRT、SSH Secure等。
3.1 Xshell连接工具
3.2 XFTP文件上传工具
是一个基于 MS windows 平台的功能强大的SFTP、FTP 文件传输软件。使用了 Xftp 以后,MS windows 用户能安全地在 UNIX/Linux 和 Windows PC 之间传输文件。Xftp 能同时适应初级用户和高级用户的需要。它采用了标准的 Windows 风格的向导,它简单的界面能与其他 Windows 应用程序紧密地协同工作,此外它还为高级用户提供了众多强劲地功能特性。
四、Linux的目录结构
我们启动Linux操作系统时,默认所在的目录是root目录,简称:~
但root目录并不是linux的根目录,Linux的目录结构如下:
系统目录的解释:
● /boot:存放的启动Linux 时使用的内核文件,包括连接文件以及镜像文件。
● /etc:存放所有的系统需要的配置文件和子目录列表,更改目录下的文件可能会导致系统不能启动。
● /lib:存放基本代码库(比如c++库),其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。
● /sys: 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统 sysfs 。sysfs文件系统集成了下面3种文件系统的信息:针对进程信息的proc文件系统、针对设备的devfs文件系统以及针对伪终端的devpts文件系统。该文件系统是内核设备树的一个直观反映。当一个内核对象被创建的时候,对应的文件和目录也在内核对象子系统中
指令集合:
● /bin:存放着最常用的程序和指令
● /sbin:只有系统管理员能使用的程序和指令。
外部文件管理:
● /dev :Device(设备)的缩写, 存放的是Linux的外部设备。注意:在Linux中访问设备和访问文件的方式是相同的。
● /media:类windows的其他设备,例如U盘、光驱等等,识别后linux会把设备放到这个目录下。
● /mnt:临时挂载别的文件系统的,我们可以将光驱挂载在/mnt/上,然后进入该目录就可以查看光驱里的内容了。
临时文件:
● /run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
● /lost+found:一般情况下为空的,系统非法关机后,这里就存放一些文件。
● /tmp:这个目录是用来存放一些临时文件的。
账户:
● /root:系统管理员的用户主目录。
● /home:用户的主目录,以用户的账号命名的。
● /usr:用户的很多应用程序和文件都放在这个目录下,类似于windows下的program files目录。
● /usr/bin:系统用户使用的应用程序与指令。
● /usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
● /usr/src:内核源代码默认的放置目录。
运行过程中要用:
● /var:存放经常修改的数据,比如程序运行的日志文件(/var/log 目录下)。
● /proc:管理内存空间!虚拟的目录,是系统内存的映射,我们可以直接访问这个目录来,获取系统信息。这个目录的内容不在硬盘上而是在内存里,我们也可以直接修改里面的某些文件来做修改。
扩展用的:
● /opt:默认是空的,我们安装额外软件可以放在这个里面。
● /srv:存放服务启动后需要提取的数据(不用服务器就是空)
五、Linux基本命令
5.1 目录操作
5.1.1 创建
语法
mkdir 目录名
5.1.2 剪切
语法
mv 原来的目录 新的目录
5.1.3 修改
和剪切一致,Linux没有专门的修改文件夹的命令,但是mv命令可以实现
5.1.4 拷贝
语法
cp [参数]目录 目录的新位置
参数:
-r:拷贝文件夹
5.1.5 删除
语法
rm [参数]目录
参数:
-r:删除文件夹
-f:强制删除,不用询问提示
5.1.6 查看
语法
ls [参数]
参数
-l:以详细形式查询当前目录下所有文件和目录,不包括隐藏文件和目录
-a:以精简形式查询当前目录下所有文件和目录,包括隐藏文件和目录
5.1.7搜索
语法:
find[目录]-name'条件'
示例:
find /root -name 'a' # 在root目录(包含子目录)下查询目录名为a的目录
find /root -name 'a*' # 在root目录(包含子目录)下查询目录名包含a的目录
5.2文件操作
5.2.1 创建
语法:
touch 文件
5.2.2 查看
cat /more/head/tail 文件名
5.2.3 删除
语法:
rm[参数]文件
● -r:删除文件夹
● -f:强制删除目录,不会进行提示
5.2.4 拷贝
语法:
cp 文件名 新文件名
5.2.5 vi编辑器
vi 编辑器是linux下的vi 是一种文字编辑器,后来的升级版本是vim。vi 分为三种模式:命令模式、编辑模式、末行模式。
所有的 Linux 系统都会内建 vi 文本编辑器。Vim 具有程序编辑的能力,可以看做是 Vi 的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
● 命令模式:
当执行vi/vim指令后,将会进入命令模式;该模式是进入 vi 编辑器后的默认模式。任何时候,不管用户处于何种模式,按下Esc键即可进入命令模式。在命令模式下,用户可以输入 vi 命令,用于管理自己的文档。此时从键盘上输入的任何字符都被当做编辑命令来解释。若输入的字符是合法的 vi 命令,则 vi 在接受用户命令之后完成相应的动作。
● 编辑模式:
在命令模式下输入i、a、o、r、s等命令都可以进入编辑模式。在该模式下,用户输入的任何字符都被 vi 当做文件内容保存起来,并将其显示在屏幕上。在文本输入过程中,若想回到命令模式下,按下Esc键即可。
● 末行模式:
在编辑模式下,用户按下ESC键退出编辑模式(进入了命令模式),按:键即可进入末行模式,此时 vi 会在显示窗口的最后一行(通常也是屏幕的最后一行)显示一个:作为末行模式的说明符,等待用户输入命令。多数文件管理命令都是在此模式下执行的(如把编辑缓冲区的内容写到文件中等)。
末行模式的指令执行完后,vi 自动回到命令模式。
语法:
vi/vim 文件名
5.2.5.1 命令模式
vi a.java # 回车进入命令模式
命令模式的指令如下:
● i:插入数据,进行数据的插入
● a:数据的追加
● o:打开文件,插入空白行
● s:删除当前光标指向的数据,功能和i一致
● r:替换文件,进行数据的替换
通过上面的参数我们可以知道,大部分指令和i功能一致,都是插入,一般来说,我们使用i的频率较多
5.2.5.2 编辑模式
输入完命令模式的命令之后,vi编辑器进入编辑模式
5.2.5.3 末行模式
在编辑模式下,输入ESC键退出编辑模式,输入:进入末行模式:
末行模式的命令如下:
● wq:保存并且退出
vi 将先保存文件,然后退出 vi 返回到 shell命令行。
● q:代表退出
● q!:代表强制退出
● w:将此文件的内容另存为一份新的内容
● x:若当前编辑文件曾被修改过,则 vi 会保存该文件。否则 vi 直接退出,不保存该文件。
5.3压缩与解压
在Windows操作系统下,压缩文件的扩展名为.zip、.rar等,在Linux操作系统下为.tar、.gz、.tar.gz等
5.3.1 压缩
语法:
tar [参数]打包压缩后的文件名 要打包压缩的文件
参数:
-c:创建新的文件(必选项)
-v:输入文件清单(可选项)
-f:设置压缩包的文件名(必选项)
5.3.2 解压
语法:
tar [参数]压缩文件
参数:
-x:取出压缩包中文件的内容(必选项)
-v:取出文件清单(可选项)
-f:设置要操作的文件名(必选项)
-C:设置解压的路径(可选项),默认解压到压缩包所在的目录
5.4 其他命令
5.4.1 关机与重启
shutdown # 1分钟后关机
shutdown -h 10 # 10分钟后关机
shutdown -h now # ⽴即关机
shutdown now # ⽴即关机
shutdown -r now # ⽴即重启
reboot # ⽴即重启
halt # ⽴即关机
sync # 把内存中的数据同步到磁盘
5.4.2 查看当前目录
pwd
5.4.3 日期相关命令
1)日期命令
命令:date
参数:
%F:年⽉⽇
%T:时分秒
%Y:获取年
%m:获取⽉
%d:获取⽇
%H:获取⼩时
%M:获取分钟
%S:获取秒
%s:1970年01⽉01⽇到现在的秒数
2)日历命令
语法:
cal [参数] [[月份]年份]
参数:
-1 输出显示当前⽉(默认)
-3 输出显示前⼀个/当前/下⼀个⽉
-s 输出显示星期天作为⼀周的第⼀天(默认)
-m 输出显示星期⼀作为⼀周的第⼀天
-j 输出显示Julian⽇历(从⼀⽉1号计数为1起,每⼀天计数加1)
-y 显示当前⽇历
5.4.4 查看帮助文档
当我们对某个指令不熟悉时,我们可以使用Linux提供的帮助指令来了解这个指令的使用方法
man[命令]
同时也可以使⽤help进⾏帮助⽂档的查询:
cal --help # 查看cal命令的帮助⽂档
5.4.5 less命令
less命令与more命令类似,都是⽤于浏览⽂件的,不同的是使⽤ less 可以随意浏览⽂件,⽽ more 仅
能向前移动,却不能向后移动;⽽且 less 在查看之前不会加载整个⽂件。在浏览超⼤型⽂本⽂件时具有
较⾼的效率;
语法:
less [参数] ⽂件
参数:
-m:显示查看的进度百分⽐
-N:显示每⾏的⾏号
+/pattern:在⽂档中搜索字符串(pattern),并从这⼀⾏开始显示
-i:忽略搜索时的⼤⼩写
5.4.6 > 指令 和 >> 指令
1.>和>>指令功能⼀致,不同的是>>的可以追加内容;>只是将命令的结果集写⼊到⽂件,并不会产⽣追
加效果;
语法:
ll > info.txt # 将ll命令的结果写⼊info.txt⽂件中
六、⽤户管理
6.1 用户管理
Linux系统是一个多用户多任务的操作系统,任何一个要使用系统资源的用户,都必须先向系统管理员申请一个账号,然后以这个账号的身份进入系统。
在Linux中,用户是属于某个组的,创建用户首先得让用户属于某个组
6.1.1 关于用户和组的相关命令
cat /etc/shadow:密码和登录信息(加密的)
cat /etc/group:查看组信息
root:x:0:
组名:x:组ID:#x并⽆其他特殊含义
cat /etc/passwd:⽤户账户信息
6.1.2 添加⽤户
语法:
useradd 参数 用户名
参数:
-g:用户组,指定用户所属的用户组,如省略该参数,则会建⽴和新⽤户名同名的组。
6.1.3 分配密码
语法:
passwd 用户名
切换zhangsan⽤户登录
logout/exit:退出当前⽤户
如果使⽤xshell连接⼯具会直接退出
修改xshell连接⼯具参数:
6.1.5 切换登录⽤户
语法:
su 要切换的⽤户名
6.1.4 修改用户
语法:
usermod -l 新的登录名 原登录名
修改⽤户名时,必须当前⽤户处于退出登录状态
6.1.5 删除用户
语法:
userdel 用户名
默认情况下,删除⽤户时,⽤户所在的同名的组也会被删除;(组里还有其他用户时除外)
删除⽤户时(不管是否加上-r参数),只会删除同名的组,不同名不会被删除;
⼀般删除⽤户时,会顺带删除家⽬录;
6.2 用户组操作
⽤户组简介:类似于⻆⾊,系统可以对有共性的多个⽤户进⾏统⼀的管理;
6.2.1 添加组
语法:
groupadd 组名
6.2.2 修改组
1)修改组名称
语法:
groupmod -n 新组名 组名
2)移动⽤户到新组
useradd lisi # 创建lisi⽤户,lisi组,lisi家⽬录
usermod lisi -g g2 # 将lisi移动到g1组
6.2.3 删除组
语法:
groupdel 组名
删除组的时候必须保证组中没有⽤户
6.3 权限管理
6.3.1 权限介绍
Linux中对每个⽬录和⽂件都做了规定,只能由满⾜条件的⽤户才能操作;
r:只读,权限等级为4
w:只写,权限等级为2
x:只执⾏,权限等级为1,对于⽂件夹来说就是能否进⼊该⽂件夹
-:不具备权限
主权限(u):当前⽤户的权限
组权限(g):整个组的权限
其他权限(o):其他⽤户的权限(除当前登录⽤户外)
分配权限
语法:
chmod [权限] [操作] [文件/目录]
权限:
文字设定法:
u:主权限
g:组权限
o:其他⽤户权限
a:同时设置u、g、o三者的权限
数字设定法:
1:执⾏权限(x)
2:写权限(w)
3:写权限+执⾏权限(w+x)
4:读权限(r)
5:读权限+执⾏权限(r+x)
6:读权限+写权限(r+w)
7:读权限+写权限+执⾏权限(r+w+x)
操作
+:赋予某个权限
-:剔除某个权限
=:替换权限
3)修改⽂件的属主和组
语法:
chown [-R] ⽤户名 ⽂件 # 修改⽂件所属的⽤户
chown [-R] .组名 ⽂件 # 修改⽂件所属的组
chown [-R] ⽤户名:组名 ⽂件 # 同时修改⽂件所属的⽤户和组
关于修改⽂件的所属组还有⼀个命令:
chgrp 组名 ⽂件/⽬录
6.3.3 权限操作
当权限分配好了之后,其他⽤户在操作⽂件/⽬录时就得具备对应的权限,否则不可操作;
创建zhangsan⽤户,并分配密码admin:
useradd zhangsan
passwd zhangsan
使⽤root账号修改权限:
chmod o-r aaa.txt
6.3.4 权限优先级
u>g>o 即主权限>组权限>其他权限