Linux系统的安装
安装Vmvare软件
安装VM
VMWare的安装步骤(了解,不会了搜索引擎查,最好选择新版本,例如16以上),具体如下:
第一步:去BIOS里修改设置开启虚拟化设备支持(在电脑启动时按f2或f10).
第二步:安装虚拟机VM (课前安装)
安装Linux系统
镜像下载
下载CentOs,其下载的镜像地址如下:
http://mirrors.163.com/centos/7/isos/x86_64/
http://mirrors.sohu.com/centos/7/isos/x86_64/
创建VM空间
安装Linux系统
第一步:设置VM的硬件配置
第二步:打开虚拟机设置,加载linux镜像
第三步:开启虚拟机
键盘上下键移动,选择第一项,Install CentOS 7 回车
默认进入check状态(也可以选择跳过)
1.选择语言环境
2.点击继续
3.设置日期和时间
4.设置键盘
5.软件选择
6.设置分区
7.配置root用户名密码。
安装好以后,重新启动并同意相关协议
时间
查看时区:date -R
修改时区:timedatectl set-timezone Asia/Shanghai
安装NTP (网络时间协议(Network Time Protocol,NTP):sudo yum -y install ntp
使用 ntpdate 更新系统时间:ntpdate pool.ntp.org
启动ntpd daemon,持续校准时间(其中systemctl用于管理系统启动和服务):systemctl start ntpd
查看ntpd daemon是否启动:systemctl status ntpd
Linux系统克隆和快照
虚拟机克隆分为“完整克隆”(Full Clone)和“链接克隆”(Linked Clone)两种方式。克隆过程中,VMware会生成和原始虚拟机不同的MAC地址和UUID,这就允许克隆的虚拟机和原始虚拟机在同一网络中出现,并且不会产生任何冲突。例如:
完整克隆
完全克隆(Full Clone)的虚拟机不依赖源虚拟机,是完全独立的虚拟机,它的性能与被克隆虚拟机相同。由于完整克隆不与父虚拟机共享虚拟磁盘,所以创建完整克隆所需的时间比链接克隆更长。如果涉及的文件较大,完整克隆可能需要数分钟才能创建完成。完整克隆只复制克隆操作时的虚拟机状态,因此无法访问父虚拟机的快照。
连接克隆
连接克隆(Lined Clone)依赖于源虚拟机(称为父虚拟机)。需要通过父虚拟机的快照创建而成,因此节省了磁盘空间,而且克隆速度非常快,但是克隆后的虚拟机性能能会有所下降。对父虚拟机的虚拟磁盘进行的更改不会影响链接克隆,对链接克隆磁盘所做的更改也不会影响父虚拟机。但是如果父虚拟机损坏或快照点删除,链接克隆的虚拟机也不能使用;如果父虚拟机移动位置,需要重新指定父虚拟机的位置,再启动链接克隆虚拟机。
拍摄系统快照
快照是虚拟机某个时间点上完整系统的镜像,可以在虚拟机内部通过快照文件恢复系统到之前的节点。
Linux 系统基础操作
安装MobaXTerm工具
MobaXTerm是目前市场上一款主流linux系统的操作工具,性能非常好,是目前程序员首选的linux远程登陆和操作软件。从官网https://mobaxterm.mobatek.net/直接下载MobaXterm软件(功能强大,远超xshell这样的软件),打开即可使用。
打开MobaXterm软件后,选择settings,修改字体大小(SSH终端窗口字体),打开Terminal选项卡,进行修改
连接linux操作系统
在MobaXterm主窗口打开session,然后选择ssh选项卡,配置IP地址
连接成功以后,然后输入用户名和密码进行系统登陆
基本指令操作
系统重启
reboot 立刻重启(底层调用shutdown -r now )
shutdown -r now 立刻重启(root用户使用)
shutdown -r 10 过10分钟自动重启(root用户使用)
shutdown -r 20:35 在时间为20:35时候重启(root用户使用)
系统关机
halt 立刻关机(底层调用shutdown -h)
poweroff 立刻关机
shutdown -h now 立刻关机(root用户使用)
shutdown -h 10 10分钟后自动关机
防火墙操作
systemctl stop firewalld.service #关闭防火墙服务
systemctl disable firewalld.service #禁止防火墙开启启动
systemctl restart iptables.service #重启防火墙使配置生效
systemctl enable iptables.service #设置防火墙开机启动
Linux文件系统及操作
目录结构
linux文件系统的目录结构,如图所示:
/bin:bin 是 Binaries (二进制文件) 的缩写, 这个目录存放着最经常使用的命令。
/boot:这里存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev:dev 是 Device(设备) 的缩写, 该目录下存放的是 Linux 的外部设备,在 Linux 中访问设备的方式和访问文件的方式是相同的。
/etc:etc 是 Etcetera(等等) 的缩写,这个目录用来存放所有的系统管理所需要的配置文件和子目录。
/home:用户的主目录,在 Linux 中,每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的
/lib:lib 是 Library(库) 的缩写这个目录里存放着系统最基本的动态连接共享库,其作用类似于 Windows 里的 DLL 文件。几乎所有的应用程序都需要用到这些共享库。
/media:linux 系统会自动识别一些设备,例如U盘、光驱等等,当识别后,Linux 会把识别的设备挂载到这个目录下。
/mnt:系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将光驱挂载在 /mnt/ 上,然后进入该目录就可以查看光驱里的内容了。
/opt:opt 是 optional(可选) 的缩写,这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。
/proc:proc 是 Processes(进程) 的缩写,/proc 是一种伪文件系统(也即虚拟文件系统),存储的是当前内核运行状态的一系列特殊文件,这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。
/sbin:s 就是 Super User 的意思,是 Superuser Binaries (超级用户的二进制文件) 的缩写,这里存放的是系统管理员使用的系统管理程序。
/selinux:这个目录是 Redhat/CentOS 所特有的目录,Selinux 是一个安全机制,类似于 windows 的防火墙,但是这套机制比较复杂,这个目录就是存放selinux相关的文件的。
/srv:该目录存放一些服务启动之后需要提取的数据。
/tmp:tmp 是 temporary(临时) 的缩写这个目录是用来存放一些临时文件的。
/usr:usr 是 unix shared resources(共享资源) 的缩写,这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似于 windows 下的 program files 目录。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。
/var:var 是 variable(变量) 的缩写,这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。
/run:是一个临时文件系统,存储系统启动以来的信息。当系统重启时,这个目录下的文件应该被删掉或清除。如果你的系统上有 /var/run 目录,应该让它指向 run。
基本操作
cd 操作
cd命令是linux中最基本的命令语句,必须熟练掌握。
cd / 返回根目录
cd ~ 用户主目录 cd /root 与 cd 的效果一致.
cd . 当前目录
cd ..返回到上一级目录
cd /usr/ 进入到usr目录
cd – 返回上一个目录
cd 直接回家
ls目录显示
ls –l 详细格式,文件权限,时间
ll 和ls –l作用相同
ls *.txt 查看所有的txt类型文档
创建和删除目录
mkdir 创建目录
mkdir a 创建 a目录
mkdir -p a/b 创建 a目录,并在a目录里创建b目录
mkdir -m 777 c 创建一个权限为777的C目录
rmdir 删除目录(如果目录里有文件,则不能用此命令)
rm n.txt 提示y删除n放弃
rm –f n.txt 不提示
rm –rf dirname 不提示递归删除目录下所以内容
rm –rf * 删除所有文件
rm –rf /abc/* 删除所有abc的子目录和文件
创建和删除文件
touch 创建文件
touch f1.txt
touch f2.txt f3.txt
touch -a aa.txt #-a 参数更改最后访问的时间
rm 删除文件
rm n.txt 提示y删除n放弃
rm –f n.txt 不提示
rm –rf dirname 不提示递归删除目录下所以内容
rm –rf * 删除所有文件
rm –rf /abc/* 删除所有abc的子目录和文件
浏览文件内容
cat 查看文件所有的内容(缺陷是文件比较长是也是直接到到文件尾),例如:
cat -n /etc/profile #-n 表示行号
more通常会结合cat使用输出文档所有的内容,分页输出,空格浏览下一屏,enter表示一行一行看,按q退出,ctrl+b 向上看一屏,ctrl+f表示向下看一屏。
more /etc/profile #这里表示将cat的内容交给more进行分页显示
less 用法和more类似,用来分屏查看文件内容,它的功能与more指令类似,但是比more更加强大,此指令在显示文件内容时,并不是一次将整个文件加载之后才显示,而是根据显示需要加载内容,对于大型文件会有较高的性能。通过PgUp、PgOn,空格等键来控制文件内容的显示,按q则退出。
less /etc/profile
echo 用于输出文件环境信息,当然也可以输出文本信息,例如
echo $PATH
echo ‘hello’ #输出普通串
head指令一般用于显示文件的头几行,默认显示文件的前10行
head /etc/profile
head -n 5 /etc/profile
tail 用于显示文件后几行,默认显示后10行,例如:
tail -5 nginx.conf 查看nginx.conf的最后5行
tail –f nginx.conf 动态查看日志,方便查看日志新增的信息,使用频繁(例如在一个窗口增加内容,一个窗口查看内容,检测文件内容的变化。
ctrl+c 结束查看
打包和压缩命令
tar命令位于/bin目录下,它能够将用户所指定的文件或目录打包成一个文件,但不做压缩。一般Linux上常用的压缩方式是选用tar将许多文件打包成一个文件,再以gzip压缩命令压缩成name.tar.gz的文件。
-c 创建一个新的tar文件
-v 显示运行过程的信息
-f 指定文件名
-z 调用gzip压缩命令进行压缩
-t 查看压缩文件的内容
-x 解开tar文件
tar –cvf n.tar ./* 压缩当前目录下的所有文件和目录,文件名为n.tar
tar –xvf n.tar 解压压缩包中的文件到当前目录(如果长时间未解压成功 Ctrl+C推出)
tar –cvzf m.tar ./* 解压m.tar.gz文件到当前目录
Find 查找文件
语法:
find [PATH] [option] [action]
与时间有关的参数:
-mtime n : n为数字,意思为在n天之前的“一天内”被更改过的文件;
-mtime +n : 列出在n天之前(不含n天本身)被更改过的文件名;
-mtime -n : 列出在n天之内(含n天本身)被更改过的文件名;
-newer file : 列出比file还要新的文件名
与用户或用户组名有关的参数:
-user name : 列出文件所有者为name的文件
-group name : 列出文件所属用户组为name的文件
-uid n : 列出文件所有者为用户ID为n的文件
-gid n : 列出文件所属用户组为用户组ID为n的文件
与文件权限及名称有关的参数:
-name filename :找出文件名为filename的文件
-size [±]SIZE :找出比SIZE还要大(+)或小(-)的文件
-type TYPE :查找文件的类型为TYPE的文件,TYPE的值主要有:一般文件(f)、设备文件(b、c)、目录(d)、连接文件(l)、socket(s)、FIFO管道文件(p);
-perm mode :查找文件权限刚好等于mode的文件,mode用数字表示,如0755;
-perm -mode :查找文件权限必须要全部包括mode权限的文件,mode用数字表示
-perm +mode :查找文件权限包含任一mode的权限的文件,mode用数字表示
Linux 系统中的vi和vim指令
概述
Vi为linux文件内容编辑器,所有linux系统都自带vi编辑器。vim具有程序编辑的能力,可以看做是Vi的增强版本,可以主动的以字体颜色辨别语法的正确性,方便程序设计。代码补完、编译及错误跳转等方便编程的功能特别丰富,在程序员中被广泛使用。
应用模式
Vim 操作文件时,提供了正常模式、输入模式、命令模式:
正常模式(一般模式)
在正常模式下我们可以使用快捷键以vim打开一个档案就直接进入一般模式了(这是默认的模式)。在这个模式中,你可以使用【上下左右】按键来移动光标,你可以使用【删除字符】或【删除整行】来处理档案内容,也可以使用【复制、粘贴】来处理你的文件数据。
输入模式(编辑模式)
按下i, I, o,等任何一个字母之后才会进入编辑模式,一般来说按i即可.
命令行模式
在这个模式当中,可以提供你相关指令,完成读取、存盘、替换、离开vim、显示行号等的
应用模式切换
VIM 指令打开一个文件后,几个模式之间切换
常用快捷键
拷贝操作
拷贝当前行:【yy】,拷贝当前行(包括当前行)向下的5行:【5yy】,粘贴:【p】
删除操作
删除当前行【dd】,删除当前行(包括当前行)向下的5行:【5dd】
查找操作
在文件中查找某个单词:【命令行模式下 /关键字或者?关键字】,回车查找,输入【n】就是查找下一个设置文件的行号,取消文件的行号:【命令行模式下: set nu和set nonu】
保存和退出
文件编辑好以后,可以进入命令模式保存和退出
q:直接退出(不保存退出)
wq:修改后保存退出
q!:强制退出,不保存修改的内容
其它操作
使用快捷键到文档的最末行【G】和首行【gg】
在一个文件中输入"内容", 然后又撤销这个动作:【u】
0或功能键Home:这是数字0,移动到这一行的最前面字符处
$或功能键End:移动到这一行的最后面字符处
H:光标移动到这个屏幕的最上方那行的第一个字符
M:光标移动到这个屏幕的中央那行的第一个字符
如果你将右手放在键盘上的话,你会发现hjkl是排列在一起的,因此可以使用这四个按钮来移动光标。
h或向左箭头键:光标向左移动一个字符
j或向下箭头键:光标向下移动一个字符
k或向上箭头键:光标向上移动一个字符
l或向右箭头键:光标向右移动一个字符
如果想要进行多次移动的话,例如向下移动30行,可以使用“30j”或“30↓”的组合按键,亦即加上想要进行的次数(数字)后,按下动作即可!
假如希望按页为单位进行移动,可参考如下指令:
Ctrl+f:屏幕【向下】移动一页,相当于【Page Down】按键
Ctrl+b:屏幕【向上】移动一页,相当于【Page Up】按键
Ctrl+d:屏幕【向下】移动半页
Ctrl+u:屏幕【向上】移动半页
Linux 系统中的yum指令
概述
yum命令是linux系统中基于RPM的一个软件包管理器,它能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软体包,无须繁琐地一次次下载、安装。使用起来非常方便。
基本语法
yum [options] [command] [package …]
选项(options)可以是:
-h:显示帮助信息;
-y:对所有的提问都回答“yes”;
-c:指定配置文件;
-q:安静模式;
-v:详细模式;
-d:设置调试等级(0-10);
-e:设置错误等级(0-10);
-R:设置yum处理一个命令的最大等待时间;
-C:完全从缓存中运行,而不去下载或者更新任何头文件。
命令(command)可以是:
install:安装rpm软件包;
update:更新rpm软件包;
check-update:检查是否有可用的更新rpm软件包;
remove:删除指定的rpm软件包;
list:显示软件包的信息;
search:检查软件包的信息;
info:显示指定的rpm软件包的描述信息和概要信息;
clean:清理yum过期的缓存;
shell:进入yum的shell提示符;
resolvedep:显示rpm软件包的依赖关系;
localinstall:安装本地的rpm软件包;
localupdate:显示本地rpm软件包进行更新;
deplist:显示rpm软件包的所有依赖关系。
案例分析
安装JDK
第一步:查询要安装 JDK 的版本
yum -y list java*
第二步:安装JDK
yum install -y java-1.8.0-openjdk.x86_64
第三步:检查JDK安装
java -version
linux系统中环境变量的设置
业务描述
Linux是一个多用户的操作系统。多用户意味着每个用户登录系统后,都有自己专用的运行环境。而这个环境是由一组变量所定义,这组变量被称为环境变量。用户可以对自己的环境变量进行修改以达到对环境的要求。
设置环境变量的方法
系统环境变量
这类变量对系统内的所有用户都生效,所有用户都可以使用这类变量。作用范围是整个系统。此文件只在root下才能修改。
# vi /etc/profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
添加完成后新的环境变量不会立即生效,立即生效需要运行 source /etc/profile ,否则只能在下次重进此用户时才能生效。
指定用户环境变量
在用户目录下的.bash_profile 文件中添加变量,该文件是隐藏文件,可使用ll -a查看:
$ whoami
rethink
$ vi /home/rethink/.bash_profile
export CLASSPATH=./JAVA_HOME/lib:$JAVA_HOME/jre/lib
$ source /home/rethink/.bash_profile
其中,.bash_profile文件只会在用户登录的时候读取。
临时有效的环境变量
此类环境变量只对当前的shell有效。当我们退出登录或者关闭终端再重新打开时,这个环境变量就会消失。是临时的。
设置方法:命令行下直接使用[export 变量名=变量值] 定义变量。
$ export NAME="rethink"
$ echo $NAME
rethink
设置环境变量常用命令
echo 用于打印显示环境变量,如:echo N A M E ; e x p o r t 用 于 设 置 新 的 环 境 变 量 , 如 : e x p o r t N A M E = ′ r e t h i n k ′ ; 更 新 环 境 变 量 更 新 环 境 变 量 直 接 重 新 赋 值 即 可 : N A M E = ′ t e s t ′ ( 注 意 : 变 量 名 前 不 需 要 加 NAME; export 用于设置新的环境变量,如:export NAME=‘rethink’; 更新环境变量 更新环境变量直接重新赋值即可:NAME=‘test’ (注意:变量名前不需要加NAME;export用于设置新的环境变量,如:exportNAME=
′
rethink
′
;更新环境变量更新环境变量直接重新赋值即可:NAME=
′
test
′
(注意:变量名前不需要加);
env 显示当前用户的变量;
set 显示当前shell变量,shell变量包含用户变量;
unset 删除一个环境变量,如:unset NAME;
readonly 设置环境变量只读,如:readonly NAME ,只读变量unset无效。
系统常用环境变量应用分析
PATH 环境变量
# echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin
路径之间用冒号分隔,这些路径都是一些可以找到可执行程序的目录列表。当我们输入一个指令时,shell会先检查命令是否是系统内部命令,如果不是则会再去检查此命令是否是一个应用程序,shell会试着从PATH中寻找这些应用程序。
如果shell在这些路径目录里没有找到可执行文件,就会报错;若找到,系统将调用执行应用程序。通过设置PATH ,可以让我们运行程序或指令更加方便。
将某个目录路径加入到PATH中,可以这样写:
$ pwd
/root/docker/httpd
$ export PATH=$PATH:$PWD
$ echo $PATH
/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin:/root/docker/httpd
`可以看到在PATH后面已经加上了我们当前所处目录的路径`
HOME 环境变量
用户的主工作目录,即为用户登录到Linux系统中时的默认目录。
$ whoami
rethink
$ echo $HOME
/home/rethink
HISTSIZE 环境变量
保存历史命令的条数。我们输入的指令都会被系统保存下来,这个环境变量记录的就是保持指令的条数。一般为1000。
$ echo $HISTSIZE
1000
$ HISTSIZE=1001
$ echo $HISTSIZE
1001
历史命令是被保存在内存中的,当退出或者登录shell时,会自动保存或读取我们可以通过history命令来查看。可以使用符号 ! 执行指定序号的历史命令。例如,要执行第2个历史命令,则输入!2。
$ history 5
59 ls
60 who
61 history | head -n 5
62 who am i
63 history 5
$ !62
who am i
root pts/0 2018-04-04 11:00 (101.81.92.18)
LOGNAME环境变量
当前用户登录名。
$ echo $LOGNAME
rethink
HOSTNAME 主机名称。
$ echo $HOSTNAME
JDu4e00u53f7
SHELL环境变量
当前用户使用的shell种类。
$ echo $SHELL
/bin/bash