Linux
第1节 为什么要学习Linux
1.1 Windows的不足:
对于Windows操作系统而言,大家应该不陌生,但Windows操作系统也存在一些不足的地方:
1) Windows是需要花钱去购买
2) 系统长时间运行,安装多了,系统越来越慢,越来越不稳定。
3) 病毒和流氓软件很多
1.2 Linux的优势
相反,上述Windows的不足,恰好是另一款操作系统Linux的优势所在:
1) Linux系统是免费,很多还是开源的。
2) 长时间运行,很稳定的
3) 几乎没有病毒和流氓软件
1.3 学习Linux的目的
学会对Linux的基本操作是后端JavaEE程序员的必修课。做为一个后端JavaEE程序员,通常在Windows中开发完程序后,需要部署到一个相对比较安全,稳定的服务器中运行,这台服务器上安装的往往不是Windows操作系统,而是Linux操作系统。
第2节 Linux的概述
Linux是基于Unix的开源、免费、多用户、多任务的操作系统,由于系统的稳定性和安全性。几乎成为程序代码运行的最佳系统环境。
2.1 Linux的分类
根据市场需求不同,分为两个方向:
1. 图形界面版:注重用户体验,但目前没有成为主流,主流的普通用户还是习惯在Windows下使用。
2. 服务器版:没有好看的界面,在控制台窗口中输入命令来操作系统的,是我们架设服务器的最佳选择,类似于DOS界面。
2.2 根据原生程度不同,分为两个方向
内核版本:在托瓦兹(Linux之父)领导下的内核小组开发维护的系统内核的版本号。
发行版本:一些个人/组织/公司在内核版基础上进行二次开发而重新发行的版本号。
内核版是唯一的,发行版可以很多,它封装了内核版,底层还是使用内核版操作机器的硬件设备。
2.3 常见的发行版本
如:ubuntu、redhat、centos、lubuntu、freeBSD等等
CentOS是一个Linux的发行版本,是目前企业中用来做应用服务器的主要版本。
第3节 Linux的安装
3.1 安装Linux系统的方式:
1) 使用双系统,在电脑开启的时候选择进入哪个操作系统,但不建议安装多个系统,一是浪费空间,二是可能造成系统不稳定。
2) 使用虚拟机,虚拟机就是Windows系统上的软件,通过软件来模拟一台电脑。我们可以在虚拟机中安装Linux系统。
3.1.1 虚拟机简介
虚拟机是一个软件,它可以使你在一台真实PC机器上同时运行两个或更多的操作系统,如:Windows或Linux。
它可以模拟一个标准的PC环境,这个环境和真实的计算机一样,有芯片组、CPU、内存、显卡、声卡、网卡、软驱、硬盘、光驱、串口、并口、USB控制器。
3.1.2 目前市场上流行的虚拟机有两种:
- VMware(威睿)公司的虚拟机软件,功能强大,收费产品,有30天试用期。
- VirtualBox (甲骨文)公司的虚拟机软件,免费的商品。
3.2 安装虚拟机软件
请参考《资料\01_虚拟机VMware安装\虚拟机VMware安装步骤.docx》
3.3 在软件中创建虚拟电脑并安装centos7
请参考《资料\02_centOS7系统安装\使用VMware虚拟机安装centOS7步骤.doc》
3.4 root用户登录和退出
l root用户登录进入Linux:
l root用户退出Linux:
手动开启网卡(在安装centos7系统是忘记了开启网卡才需要做)
保存退出,重启linux系统,网卡就启动了。
第4节 配置服务器端的网络
使用客户端Xshell在连接CentOS服务器之前要先要查看CentOS的局域网ip地址。
1) 使用命令查看Linux在局域网中的IP地址
4.1 网络相关的操作命令
命令 |
功能说明 |
ip addr |
查看网卡的ip,与ifconfig功能是一样 |
ping 网络地址 |
查看是否可以连通指定的ip地址 |
注意: 在Linux中,按ctrl+c 强行终止程序执行
4.2 修改局域网自动生成ip地址
VM虚拟机网卡介绍
打开windows网卡适配器
只要成功安装了Vmware虚拟机就会默认生成的2个网卡(VMnet1和Vmnet6)
VMNet1,使用的是host-only的链接模式,即虚拟机只能与主机windows构成内部通信,无法对外网进行访问。
VMNet6
模式:
NAT网络模式
场景:在宿主机安装多台虚拟机,和宿主组成一个小局域网,宿主机,虚拟机之间都可以互相通信,虚拟机也可访问外网.ens33就是使用这个VMNet6网卡。
修改VMNet6的ip(注意关闭虚拟机)
如下图点击“虚拟网络编辑器”
打开的界面中,选中vmnet6,点击更改设置。
设置ip段
设置动态生成ip的起始ip地址
点击确定退出。点击打开虚拟电脑,查看ip
打开windows的dos命令窗口ping虚拟机中虚拟电脑ip
上图说明windows主机可以与虚拟机中linux系统可以正常通信连接
第5节 客户端工具使用
5.1 Linux客户端简介
在实际开发中,Linux服务器都在网络其他的电脑上,我们要通过Windows客户端工具去连接Linux并操作它。连接Linux的Windows客户端工具有很多,企业中常用的有SecureCRT、Xshell等。
SecureCRT和xshell都是企业中应用较多的.
第6节 目录操作命令
6.1 Linux 的目录结构
目录特点:不同于windows,一个硬盘分了几个区,有C盘。在Linux中没有盘符,所有的文件和目录都在根目录下面。
6.1.1 文件结构
常用的目录 |
说明 |
root |
管理员的主目录,root用户登录以后自动进入目录 |
home |
普通用户的目录,每个普通用户都有一个自己的主目录,在这个目录下。 |
bin |
可执行文件所在的目录,今天学习的命令都在这个目录下 |
etc |
系统配置和管理目录 |
usr |
常用的资源和安装文件放在这个目录,是一个资源共享的目录 Unix Shared Resources |
6.1.2 文件颜色说明:
这是Linux下文件不同颜色表示的含义
颜色 |
说明 |
白色 |
普通文件 |
深蓝色 |
目录(文件夹) |
绿色 |
可执行文件 |
红色 |
压缩包 |
青色 |
链接,相当于Windows下快捷方式 |
橙色 |
设备文件 |
在修改客户端的配色方案,如下操作
选中options-“session options”,按照如下图进行勾选
下面效果
6.1.3 命令提示符
6.2 目录切换命令
6.2.1 语法格式
cd 目录名 |
|
作用 |
改变目录Change Directory,cd与目录名之间必须有空格 |
. |
当前目录 |
.. |
上一级目录 |
6.2.2 操作演示
1) 切换到系统根目录
2) 切换到该目录下usr目录
3) 切换到上一层目录
4) 切换到用户主目录,如果是root管理员,则是到root目录
5) 切换到上一个所在的目录
6.2.3 执行结果
cd回车 ,去到root目录下
6.3 创建目录
6.3.1 语法格式
mkdir 目录名 |
|
作用 |
make directory 创建一个目录 |
6.3.2 操作演示
1) 进入root目录
2) 在root目录下创建aaa目录
3) 使用.方式的相对路径,在当前目录下创建bbb目录
4) 在root目录下,在bbb目录下创建ccc目录
5) 使用..在上一级目录下创建ddd目录
6) 使用绝对路径在root下创建目录eee目录
6.3.3 执行结果
6.4 查看
6.4.1 语法格式
语法:ls [参数] |
|
无 |
显示当前目录下的文件和目录 |
-l |
以详细的方式显示当前目录下的文件和目录 缩写ll |
-a |
显示当前目录下所有的文件和目录,包含隐藏的文件和目录。只要是.开头的文件和目录都是隐藏的 |
6.4.2 操作演示
1) 进入root目录,以精简形式查询当前目录下的内容
2) 以详细形式查询当前目录下的内容,可以缩写成ll
3) 在当前目录下创建一个隐藏的目录.ccc
4) 以精简形式查询当前目录下的所有的内容,包含隐藏文件
5) 以详细形式查询当前目录下的隐藏内容,-la和-al都可,也可以使用ll -a
6.4.3 执行结果
6.4.4 文件列表中第一列字母含义
字母 |
说明 |
d |
directory 目录 |
- |
文件 |
l |
link 链接 |
l 演示案例:
1) /lib是一个指向/usr/lib的链接
2) 进入/lib,显示所有的文件与进入/usr/lib显示的文件是同一个目录
6.4.5 执行结果
6.4.6 文件列表的含义
6.5 搜索
6.5.1 语法格式
find [目录名] [-name '查询字符串'] |
|
||
无参名 |
搜索当前目录和它的子目录所有的文件和目录 |
|
|
目录名 |
搜索指定目录下和它的子目录所有的文件和目录 |
|
|
-name '查询字符串' |
指定具体查询字符串 |
|
|
|
* |
匹配多个字符 |
|
|
? |
匹配1个字符 |
|
6.5.2 操作演示
1) 在/root目录下,查询当前目录下所有的文件和目录
2) 查询/根目录下(包括子目录),名以abc开头的目录和文件
3) 查询根目录即其子目录下以cc开头的三个字符的目录或文件
6.5.3 执行结果
6.6 重命名
6.6.1 重命名
mv 旧名 新名 |
|
作用 |
move 将一个旧名字修改成一个新的名字,既可以改文件名又可以改目录名 |
² 在Xshell中复制字符串:ctrl + insert,粘贴使用shift+insert
6.6.2 操作演示
1) 将root文件夹下的aaa目录改成abc
2) 使用touch创建一个空文件为aaa,再使用mv将aaa文件改名为xyz
6.6.3 执行结果
6.6.4 移动
mv 源目录 目标目录 |
|
作用 |
move 将源目录移动到目标目录下 |
² 疑问:mv命令什么时候是改名,什么时候是移动?
如果目标目录存在,则是移动,如果不存在则是改名。
6.1 复制
6.1.1 语法格式
语法 |
cp [参数] 源文件或目录 目标目录 |
作用 |
将源文件或整个目录复制到目标目录下 |
-r |
recursion 连同子目录下所有的文件全部复制 |
6.7.2 操作演示:
1) 当前是root目录,复制/proc/dma文件到root目录下的bbb目录中
2) 将/etc目录下所有c开头的文件复制到root目录下的bbb目录下
3) 将/etc目录下所有h开头的文件和目录复制到root目录下的eee目录,连同子目录下的内容一起复制
6.6 删除文件或目录
6.6.1 语法格式
语法:rm [参数] 文件或目录1 文件或目录2 |
|
作用 |
remove 删除文件或目录,可以同时指定多个 |
-r |
recursion 连同子目录一起删除,只用于删除目录 |
-f |
强制删除,因为删除之前会有提问:yes或no,回答yes |
6.6.2 操作演示
1) 同时删除eee目录下的hostname和hosts文件
2) 进入root下的bbb目录,删除所有文件名csh,任意扩展名的文件
3) 进入root目录下的eee目录,递归删除httpd目录和所有子目录的文件,不进行确认,强制删除。
6.6 目录操作命令小结
命令 |
功能 |
cd |
切换目录 |
mkdir |
创建目录 |
ls |
查看文件和目录 |
find |
查找目录和子目录下所有文件 |
mv |
移动和改名 |
cp |
复制文件和目录 |
rm |
删除文件和目录 |
第7节 文件操作命令
7.1 查看文件内容
7.1.1 语法格式
查看文件的内容的命令:cat/more/head/tail/less |
|
cat 文件名 |
查看文件所有的内容 |
more 文件名 |
查看文件所有的内容,可以分屏显示 回车键:一行一行显示 空格键: 一页一页显示 q: 退出 |
head 文件名 |
查看文件前8行 |
head -n 行数 文件名 |
查看前面指定的行数 |
tail 文件名 |
查看文件后8行 |
tail -n 行数 文件名 |
查看文件后指定的行数 |
less 文件名 |
查看文件所有的内容 -N 显示行数 PageUp: 向前翻页 PageDown: 向后翻页 q: 退出 如果使用crt客户端翻页不好使,如果使用xshell是没有问题 |
7.1.2 操作演示:
1) 将素材目录的Demo.java文件,上传到root目录下。
2) 查看当前目录下Demo.java文件的全部内容
3) 分页查看当前目录下Demo.java文件内容,按回车键一行一行的看,按空格健一页一页的看
4) 查看当前目录下Demo.java文件的前8行内容
5) 查看当前目录下Demo.java文件的后8行内容
6) 查看当前目录下Demo.java文件的前5行内容
7) 查看当前目录下Demo.java文件的后5行内容
6) 使用less命令显示Demo.java文件,显示行号
7.2 创建文件
7.2.1 语法格式
touch 文件1 文件2 |
|
作用 |
创建一个或多个文件,0个字节大小 |
7.2.2 操作演示
1) 在当前目录中创建Hello.java文件
2) 在当前目录中同时创建Hello.txt文件和Hello.xml
7.3 编辑文件vim
编辑已存在文件的内容,我们在Linux中,通常使用vi/vim工具来修改文件内容。
7.3.1 vim介绍
vi(vim)是上Linux常用的编辑器,很多Linux发行版都默认安装了vi(vim)。vi是“Visual Interface”的缩写,vim是 (增强版的vi)。在一般的系统管理维护中vi就够用,如果想使用代码加亮的话可以使用vim。
vim 文件名称 |
|
作用 |
编辑文本文件 |
l vim编辑器的三种模式
三种操作模式 |
说明 |
命令模式 |
可以移动光标、删除字符等操作,打开文件时即进入这个模式 |
编辑模式 |
在此模式下可以输入字符,进行编辑等操作 |
底行模式 |
可以输入命令对编辑的文件进行查找,保存,退出等操作 |
7.3.2 vi或vim三种模式的切换
7.3.3 vim操作语法
l 命令模式下按键:
命令 |
描述 |
i |
在当前光标的前面插入字符 |
a |
在当前光标的后面插入字符 |
o |
在当前光标的下一行插入字符 |
l 底行模式下常用的编辑命令
命令 |
描述 |
yy |
复制当前行 |
p |
如果前面已经复制了,在当前下面粘贴 |
dd |
删除当前行 |
u |
撤销 |
/字符串 |
搜索文本内容 n:向后搜索 N:向前搜索 |
wq |
保存并退出 |
q! |
不保存强制退出 |
wq! |
强制保存退出(只读文件) |
7.3.4 操作1:
1) vim Hello.java 用vim编辑器创建/打开Hello.java文件,这时进入命令模式。
2) 按i键,进入编辑模式,输入以下内容:
3) 按Esc键,进入命令模式,按冒号进入底行模式
4) 输入:wq回车,表示存盘退出
5) 使用cat Hello.java查看文件的内容
7.3.5 操作2
1) 使用vim打开Hello.java文件,进入命令模式。
2) 将光标移动到System.out这一行,按yy复制
3) 按3次p,粘贴这一行三次
4) 按dd删除最后一行
5) 按i进入编辑模式
6) 再任意输入一些内容
7) 在按Esc进入命令,按冒号进入底行模式
6) 输入q!回车,不存盘强行退出。
7) 作用cat Hello.java发现Hello.java没有变化
第8节 压缩与解压命令
8.1 压缩文件扩展名
扩展名 |
分类 |
.zip或.rar |
在windows下的压缩包 |
.tar |
在Linux下的打包文件 |
.gz |
在Linux下的压缩文件 |
.tar.gz |
在Linux下的打包压缩文件 |
8.2 打包并压缩文件
8.2.1 tar的参数
语法:tar [参数] 压缩包名 一个或多个文件 |
|
作用 |
对一个或多个文件进行打包并压缩 |
-c |
创建一个打包的文件(必选) |
-v |
显示打包的详细过程(可选) |
-z |
压缩文件(可选) |
-f <压缩文件名> |
指定压缩包的文件名(必选),f要求后面紧跟着压缩的文件名,一般放在参数最后面 |
8.2.2 操作演示:
1) 定位于root目录,将当前目录下的Hello.java和Hello.txt文件打包成hello.tar文件,并显示详细信息。
2) 将当前目录下的Demo.* 打包并压缩成demo.tar.gz文件,显示详细信息。
8.3 解压文件
8.3.1 解压文件语法
语法1:tar [参数] 压缩文件 |
解压文件到当前目录 |
语法2:tar [参数] 压缩文件 -C 目录 |
|
解压文件到指定的目录 |
|
-x |
解压指定的文件【必选】 |
-v |
显示解压详细过程【可选】 |
-f<压缩文件> |
指定要解压的文件【必选】
|
-C |
解压到指定的目录下【可选】 |
8.3.2 操作演示
1) 定位于root目录下,删除所有大写的Hello开头的文件
2) 解压hello.tar到当前目录
3) 释放demo.tar.gz文件到abc目录下
第9节 其他命令
9.1 查看当前绝对路径
9.1.1 语法格式
pwd |
Print Working Directory 打印当前的工作目录 |
9.1.2 操作演示:
1) 进入根目录,显示当前的目录
2) 进入/bin,显示当前的目录
3) 进入/usr/bin目录,显示当前的目录
9.2 查看进程
9.2.1 Linux进程启动的两种方式
1) 一种是用户通过终端输入命令启动的进程
2) 一种是Linux系统开机以后自动启动进程
9.2.2 bash进程
1) 每个用户登录以后都会分配一个终端操作的进程
2) 这个进程是所有终端命令的父进程bash,不要随意终止这个进程。
9.2.3 语法格式
ps [参数] |
|
无参 |
显示当前用户通过终端启动的进程 |
-a |
显示所有用户通过终端启动的进程 |
-u |
显示所有用户通过终端启动的进程的详细信息 |
-x |
显示所有用户的所有进程 |
9.2.4 操作演示:
1) 在客户端中显示当前用户通过终端启动的所有进程
2) 在Linux命令行窗口运行vim Hello.txt编辑文件,在Xshell软件中显示所有用户通过终端启动的所有进程。
3) 显示所有用户通过终端启动的所有进程详细信息
4) 显示所有用户所有进程详细信息
9.2.5 各列的说明
列标题 |
说明 |
%CPU |
CPU(处理器)使用百分比 |
%MEM |
真实内存使用百分比 |
CMD |
正被执行的命令的名称 |
COMMAND |
正被执行的命令的完整名称 |
PID |
进程ID |
PPID |
父进程的进程ID |
RSS |
内存驻留空间大小(内存管理) |
START |
定时启动的时间 |
STAT |
状态代码(O,R,S,T,Z) |
TIME |
积累CPU时间 |
TTY |
控制终端的完整名称(?表示没有控制终端,该进程为守护进程) |
USER |
用户名 |
VSZ |
虚拟大小(单位为KB) |
9.3 查看电脑整体内存耗用
Top命令:查看系统整体内存、cpu耗用情况
9.4 杀死进程
9.4.1 语法格式
kill [参数] 进程号 |
|
进程号 |
通过ps可以查到进程号 |
-7 |
强制中止进程 |
9.4.2 操作演示
1) 在Linux命令行上使用vim 编辑Hello.txt文件
在Xshell客户端软件显示所有用户通过终端启动的所有进程,并杀死vim这个进程。
在Linux命令行可以看到进程被终止
2)
在Linux命令行使用ping www.itcast.cn
在Xshells客户端软件显示所有用户通过终端启动的所有进程,并强行杀死ping这个进程
在Linux命令行可以看到进程被杀掉
9.5 搜索文件内容
grep是一种强大的文本搜索工具,它能使用字符串搜索文本,并把匹配的行和行号打印出来。
9.5.1 语法格式
grep [参数] 字符串 文件名 |
|
作用 |
搜索指定文件中字符串内容 |
-n |
搜索结果中显示行号 |
-v |
显示不匹配的行 |
-i |
忽略大小写搜索 |
9.5.2 操作演示
1) 在Demo.java中搜索close字符串
2) 在Demo.java中搜索close字符串,并且显示行号
3) 在Demo.java中搜索没有close的行和行号
4) 在Demo.java中忽略大小写搜索insert字符串并且显示行号
9.6 管道
9.6.1 语法格式
语法 |
命令1 | 命令2 |
解释 |
管道命令符 | ,必须要有两条以上的命令参与操作。将第1个命令的执行结果,做为第2个命令的参数,继续进行下一个操作。 |
9.6.2 操作演示:
1) 分屏显示/etc目录所有文件的详细信息,将ll的输出做为more的输入,即分屏显示。
2) 在root目录下使用ll显示所有文件的详细信息,再在显示结果中使用grep查询Demo字符串
3) 显示Linux中所有进程的详细信息,查询ssh的字符串
9.7 关机
9.7.1 语法格式
语法 |
shutdown now |
解释 |
关闭服务器 |
Windows系统关机
shutdown -s 立刻关机
shutdown -s -t 秒数 ,指定多少秒后立刻关机
shutdown -a 清除定时计划
9.6 重启
9.6.1 语法格式
语法 |
reboot |
解释 |
重启Linux |
9.7 其它命令小结
命令 |
功能 |
pwd |
显示当前绝对路径 |
ps |
显示进程信息 |
kill |
杀死进程 |
grep |
查询字符串 |
| |
管道命令 |
shutdown now |
关机 |
reboot |
重启 |
第10节 文件权限
10.1 权限的简介
Linux中对每个目录和文件都做了规定,只能由满足条件的用户才能操作这个目录或文件,这个规定叫权限。
10.1.1 用户和组的概念
概念 |
解释 |
属主 |
目录或文件的拥有者 |
属组 |
拥有者所在的组 |
其他用户 |
除了属主和属组之外的用户 |
10.1.2 7个字母的含义
-,普通文件
d, 目录
l, 链接文件
10.1.3 权限的范围
权限范围 |
说明 |
u |
User 属主,文件和目录的拥有者 |
g |
Group 属组,拥有者所在的组 |
o |
Other 其他用户 |
a |
All 所有的用户 |
10.1.4 权限的操作
权限符号 |
说明 |
+ |
添加权限 |
= |
修改权限 |
- |
删除权限 |
10.1.5 权限的字母和数字
权限字母 |
权限数字 |
说明 |
r |
4 |
Read 读取权限 |
w |
2 |
Write 写权限 |
x |
1 |
eXecute 执行权限 |
- |
0 |
没有权限 |
10.2 添加权限
10.2.1 语法格式
chmod 用户或组+权限 目录或文件 |
对指定的文件或目录,给用户或组赋予权限。多种类型的用户之间使用逗号分隔 |
10.2.2 操作演示
1) 给Demo.java文件的拥有者添加执行权限
2) 给Demo.java拥有者所在的组添加写和执行的权限
3) 给Hello.java所有的用户添加所有的权限
4) 给Demo.html拥有者添加执行权限,其它用户添加写权限
10.3 修改权限
10.3.1 语法格式
chmod 用户或组=权限 目录或文件 |
对指定的文件或目录,针对不同的用户修改权限。多种类型的用户之间使用逗号分隔 |
10.3.2 操作演示
1) 给Hello.txt拥有者改为读写执行权限,所在的组有写的权限,其它用户有执行的权限
2) 修改Hello.txt的权限,使用数字的方式给拥有者,所在组,其它组都是读写权限
10.4 删除权限
10.4.1 语法格式
chmod 用户或组-权限 目录或文件 |
对指定的文件或目录删除权限,多种类型的用户之间使用逗号分隔 |
10.4.2 操作演示
1) 删除Hello.txt拥有者写入的权限,用户组写入权限
2) 使用数字的方式删除Demo.java所有的权限
如有更好需求,请联系小Bin。我会为你更好地服务