Linux
Posted aknife
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux相关的知识,希望对你有一定的参考价值。
1 虚拟机
1.1 什么是虚拟机
虚拟机就是能够在一台物理计算机上模拟出一台或多台虚拟的计算机的软件。常用的虚拟机软件有VMware、VirtualBox等。
在虚拟机里可以安装各种操作系统,包括Windows、Linux 、MacOS等。
本次课程,就是在虚拟机(VMware)中安装Linux操作系统。
1.2 为什么要使用虚拟机
为什么我们要在虚拟机中安装Linux,而不是直接在物理机跟安装Windows一样,直接安装一个Linux操作系统?
因为直接在物理机上安装Linux系统,很多教学软件无法在Linux中使用,比如录屏、广播等。
因此,虽然物理机上可以安装Linux系统,我们还是在虚拟机中进行。
1.3 虚拟机软件安装
本教程使用的是VMware,
|
2 Linux简介
2.1 什么是Linux
Linux是一个开源的操作系统。
2.2 为什么要学习Linux
问题:Windows系统能够满足我们日常开发需求,为什么要学习Linux?
答:(1)Linux是开源的,用它来做服务器成本比较低。
(2)我们开发的项目,绝大部分都会部署到Linux上
所以,作为一名开发人员,必须掌握Linux基本知识。
2.3 Linux发行版本
由于Linux是一个开源的操作系统。所以,世界上任何的人或者公司都可以获得它的代码,构建自己操作系统,这就导致市场上的Linux的版本非常的多。常用的Linux发行版本如下:
个人版 |
Ubuntu、Linux Mint |
服务器版 |
Radhat(小红帽)、CentOS |
在众多发行版本中,我们不考虑个人版。
其中,Radhat是知名厂商小红帽公司推出的商业版本,功能很强大,需要收费。
但是Radhat是基于Linux内核(源码),受限于Linux社区的GPL授权,Radhat也要开源。于是小红帽公司将Radhat的源码再编译一次,重新将其命名为CentOS,开源免费。
所以市场上Radhat和CentOS是同步发行、同步更新的,学会了CentOS,就等于是学会了Radhat。
本次课程使用的是CentOS版本。
2.4 安装Linux(CentOS)
先安装VMware,然后再安装Linux。安装过程参考《Linux相关软件安装》第二章节。
2.5 Linux目录说明
Linux的磁盘管理理念与Window不一样。
|
(1)Linux没有C: D: E:盘符概念,只有一个根目录/,所有的文件都存储在/下面的文件夹中。
(2)Linux建议我们按它定义的文件夹存放文件。这个要求导致我们必须要记住它定义的文件夹。它定义的文件夹就是我们所说的Linux目录。
目录名 |
说明 |
/ |
文件系统的根目录,所有的文件都放在根目录下 |
bin |
存放所有系统用户都可以使用的命令 |
boot |
存放系统的启动文件 |
dev |
存放系统驱动信息的 (device) |
etc |
存放所有系统配置文件 (系统配置) |
home |
存放普通用户的主目录(个人文件夹). |
lib |
存放Linux系统的支持类库 |
lost+found |
在系统出现突发关机的时,Linux会尽可能的保存当前没有保存信息. 可以在开机的时候恢复 |
media |
光驱的挂在区. 会显示光盘的文件. |
misc |
自动挂载区, 插入U盘.显示U盘的文件 |
mnt |
手工挂载区,通过mount命令,手工将sub外设的数据挂载到这个文件夹 |
net |
存储网络设备信息. |
opt |
存放大型安装软件,是一个软件安装目录 |
proc |
内存映射文件夹,将内存运行时的信息映射到这里. 系统关闭,就会清空 |
root |
root管理员的主目录(个人文件夹) |
sbin |
super bin,只有root管理员可以使用的命令 |
selinux |
是一个系统安全加密软件 |
srv |
service,存放系统服务信息 |
sys |
system,存放系统支撑的文件 |
tmp |
存放临时文件, |
usr |
存放用户安装的软件 |
var |
存放系统的日志 |
问题:/opt是安装软件的,/usr也是安装软件,那么软件安装在哪里呢?
答:没有统一标准,安装的软件随便在/opt或/usr都可以。注意/usr是普通用户可以写入,/opt默认普通用户是不能写入。
2.6 远程连接Linux
2.6.1 什么是客户端远程连接
所谓的客户端远程连接,就是使用一台电脑操作另一台电脑。
被操作电脑称为服务端,
操作的电脑就是客户端。
2.6.2 为什么要使用远程连接
现实中,服务器都是放在机房里面的。我们操作服务器一般都远程操作,不可以老是跑去机房。
所以需要使用客户端软件远程登录服务器。
Linux的远程控制程序是OpenSSH。一般服务端版的Linux都自带OpenSSH。在CentOS中,该服务叫做sshd,端口是22。
在进行远程连接之前,必须保证该服务已经启动!!!
|
2.6.3 前提:配置网卡
远程连接服务器,需要虚拟机(服务器)连入网络(或者局域网)中。
虚拟机网络配置,通常有三种网络模式:桥接、NAT模式、主机模式(Host-Only,外网无法访问,不考虑)。
2.6.3.1 桥接模式
基于物理机所在网络的路由器,共享物理机的ip网段。比如物理机的ip地址是192.168.4.110,那么虚拟机的ip可以设置为192.168.4.XXX。
这里我们不推荐使用桥接模式,原因是:
(1)在同一个网段中,只有1-255这些地址可用。当物理机比较多,每一台物理机上在安装多个虚拟机的话,容易引起ip冲突。
(2)当物理机更换了网络环境,则虚拟机就无法上网了。
2.6.3.2 NAT模式
NAT模式也称之为网络转换模式,两层路由:
|
第一层路由:物理机所在网络的真实路由器。
第二层路由:物理机上安装虚拟机软件,自动安装的一个网卡vmnet8,每一台物理机上的网卡地址不一定相同。
NAT模式是开发中比较常用的网络模式。配置步骤参考《Linux网卡配置》
2.6.4 安装客户端软件
当配置好虚拟机的网卡之后,就可以安装相关客户端软件,连接虚拟机。
|
2.6.4.1 安装xshell
Xshell是一个连接Linux服务器的客户端软件,界面如下:
|
安装过程参考《Linux相关软件安装》第三章节。
2.6.4.2 安装xftp
Xftp是一个基于ftp协议的文件传输客户端软件,可以实现windows和Linux之间的文件传输。
Xftp支持拖拽操作,安装过程参考《Linux相关软件安装》第四章节。
启动之后,界面如下:
|
3 Linux的启动流程
目的:为了让我们知道常用的Linux的配置文件的作用!!!
|
4 Linux命令
4.1 基础命令
Linux基础命令使用格式为:命令名 [选项]... [参数]...
其中,不同的[选项],命令执行的结果也不相同。可以使用--help选项,查看某个命令的用法。
重启网卡:service network stop
Service network restart
ifconfig |
查看ip |
cd |
进入到指定目录。 cd /etc 进入etc目录下;cd .. 退回上一次目录;cd / 进入到根目录/ |
ls |
列举文件。ls -a /etc 列举/etc目录下所有文件,包括掩藏文件 |
ll |
列举文件及文件的详细信息 |
date |
系统时间命令。 格式化输出系统时间:date "+%Y-%m-%d %H:%M:%S" 设置时间: 设置年月日 date -s 01/02/18 2018年1月2日; 设置时分秒 date -s 10:11:12 10点11分12秒 设置完整时间 date mmddHHMMYY.SS 月日时分年.秒 |
clear |
清屏 |
whoami |
查看当前登陆用户 |
shutdown |
关机。init 0也表示关机 |
reboot |
重启。init 6也表示重启 |
$PATH env/set
|
查看系统环境变量 |
grep |
搜索命令,相当于Windows上的ctrl+f |
echo |
输出一段文本 |
> |
输出重定向,echo 1 > 1.txt,将1写入1.txt中。多次输出时,会覆盖。 |
>> |
输出附加定向,值不会覆盖。 |
| |
管道操作符,即左边的输出是右边的输入。 |
ps |
查看进程状态,即时状态,非连续。常用组合命令: ps -aux|grep tomcat 查看tomcat进程状态。-a表示所有进程、-u表示进程状态、x表示进程详细信息。 |
tar |
压缩(解压)命令。常用组合命令 tar -xvf apache-tomcat-7.tar 解压tomcat压缩文件,显示详细过程 tar -zxvf apache-tomcat-7.tar.gz 解压zip格式的压缩文件 tar -zxvf apache-tomcat-7.tar.gz -C mydir 解压到mydir目录下。 tar -cvf my.tar apache/ 压缩apache,并命名为my.tar
-c 创建压缩包 -x 解压 -v 回显 -f <指定包名> -z 是否使用zip格式压缩 |
&& |
左边命令执行成功,再执行右边的命令 |
|| |
左边命令执行失败,再执行右边的命令 |
kill |
关闭进程。kill [进程号pid]。如果进程正在执行,无法关闭,则可以使用kill -9 [pid]强制关闭进程。 |
4.2 文件系统操作命令
touch |
修改文件的访问时间。如果文件不存在,则创建空文件 |
cat |
查看文本内容,输出到控制台 |
head |
从头开始查看文件。head -100 1.txt,查看前100行 |
tail |
从后开始查看文件。tail -100 1.txt,查看后100行。常用来查看日志。 |
mkdir |
创建文件夹。mkdir -p 当父目录不存在时,同时创建父目录 |
mv |
移动。格式:mv原文件全路径 新文件全路径 mv aaa /etc/ 将aaa文件夹移动到/etc目录下 mv aaa /etc/bbb 将aaa文件夹移动到/etc目录下,并重新命名bbb |
cp |
拷贝。格式:cp原文件全路径 新文件全路径 |
rm |
删除。格式:rm -rfv mydir。-f表示强制删除、-r表示删除目录 v表示显示详细信息 |
4.3 Service系统命令
用来控制Linux系统服务的命令,可以【启动|停止|重启|查看状态】指定系统服务,也可以查看当前所有系统服务状态。
启动服务: service 服务名 start
停止服务: service 服务名 stop
查看状态: service 服务名 status
重启服务: service 服务名 restart
Linux系统服务,一定在/etc/init.d/目录下,有与该服务名称一致的可执行shell脚本文件。
如前面用到的网卡network服务、sshd服务,就是Linux的系统服务。
|
4.4 远程拷贝命令
语法 scp -r 主机1:/资源 目标主机:/路径。如果是拷贝文件夹,则必须加-r
(1)从其他主机拷贝资源,到当前主机
scp [email protected]23.21:/usr/bin/my_print_defaults .
. 指当前主机所在的当前路径
(2)从当前主机,拷贝资源到远程主机
scp /home/a.txt [email protected]:/home/
4.5 VI命令
VI是Linux上的一个文本编辑器。掌握常用的VI命令,可以简化编辑操作。
4.5.1 VI的三种模式
使用VI编辑文本时,文本会呈现三种不同的模式。
4.5.1.1 命令模式 (command mode/一般模式)
(1)使用vi打开文本时,就处于命令模式;
(2)其它任何模式,按ESC键,都会切换到命令模式;
(3)命令模式下,可以使用vi命令,对文本进行编辑。
(4)常用vi命令:
快速定位到第n行 nG, n省略,则定位到最后一行 复制当前行 yy 粘贴 p(将选中的内容,粘贴到光标所在行的下一行) 复制多行 nyy 删除当前行 dd 删除当前的单词 dw 删除当前行到最后一行 dG 删除n行 ndd 删除光标至行尾 d$ 删除光标至行首d0 命令模式下撤销 u 撤销恢复命令 ctrl+r |
4.5.1.2 编辑模式 (input mode/编辑模式、插入模式)
(1)在命令模式下,我们无法自由编辑文本。
(2)想要自由编辑文本,需要在键盘上敲响应的字符,将文本切换到编辑模式。
(3)命令模式切换到编辑模式,常用的切换字符及效果如下:
字符 |
进入编辑模式光标所在位置 |
i |
光标之前 |
I |
光标所在行 行首 |
a |
光标之后 |
A |
光标所在行 行尾 |
o |
下一行行首 |
O |
上一行行首 |
s |
替换光标所在位置的字符 |
S |
替换当前行 |
4.5.1.3 末行模式 (last line mode/指令列命令模式,尾行模式)
(1)命令模式下,按:或者/键,进入末行模式;按回车键执行该命令;
(2)末行模式下,可以使用相关的命令,简化vi操作
(3)常用末行模式命令:
:set nu 在文本中显示行号; :wq 保存文件、退出vi命令,结束此次编辑; :q! 不保存文件,强制退出; :q 未编辑文件情况下,直接退出; /word 在文本中,查找word所在位置,并将光标定位;按键n,切换到下一个位置;按键N,切换到上一个位置。 |
4.5.2 三种模式切换
|
5 Linux权限控制
Linux的权限,是指某个用户对某个文件(文件夹)的操作权限。这里涉及用户组的概念。
5.1 用户组
用户组的作用,就用于标识一种类型的用户,这样可以给一组用户(多个用户)授予权限。
|
5.1.1 查看用户组
注意:用户组的信息放在/etc/group。使用命令cat /etc/group
|
5.1.2 创建用户组
使用命令:groupadd [组名]
5.1.3 删除用户组
使用命令:groupdel [组名]
5.2 用户
5.2.1 添加用户
使用命令useradd [用户名],默认会将用户添加到跟用户名相同的用户组中。
如果要将用户添加到指定的组中,使用useradd -g [组名] [用户名],前提是指定的组必须存在。
|
5.2.2 查看用户
用户信息在/etc/passwd文件中查看
|
5.2.3 查看用户属组
使用命令groups [用户名]
|
5.2.4 修改用户属性
使用命令:usermod [用户名]
修改用户的属组:usermod -g [新组名] [用户名]
|
5.2.5 修改用户密码
使用命令passwd [用户名]
注意,输入密码的时候,光标不会移动!!!
|
5.2.6 切换用户
使用命令:su [用户名],退出命令使用exit。
如果使用命令:su - [用户名],表示一并切换用户的环境变量
|
验证环境变量是否切换
(1)在root用户下,使用export a=aaaa创建一个临时变量(随着用户注销而消失)
|
使用set命令,确定变量a添加成功。
|
(2)使用su hadoop切换到hadoop用户,变量a还存在,则表示没有切换环境变量。
|
(3)使用su - hadoop切换到hadoop用户,变量a不存在,表示切换了新的环境变量下。
|
问题:我们在开发中切换用户,到底要不要加”-”?
答:除非有特殊要求,通常需要加”-”
5.2.7 删除用户
使用命令userdel [用户名]
|
5.3 权限管理
Linux权限管理对root用户无效。
权限分为三种:可读(r)、可写(w)、可执行(x)
5.3.1 权限划分
使用ll命令,查看文件的详细信息,其中:
第1位:代表该文件的类型,”-”代表文件,”d”代表文件夹,”l”代表链接;
第2~4位:代表文件的拥有者的权限;
第5~7位:代表该文件拥有者的同组用户的权限(也称之为属组用户);
第8~10位:其它所有用户的权限。
第一个root:代表该文件的拥有者(默认是该文件的创建者);
第二个root:代表该文件拥有者的属组。
5.3.2 修改权限chmod
(1)chmod 【用户】【+、-】【权限】 文件
【用户】 u:表示该文件拥有者 g:文件拥有者属组用户 o:其它用户
【+、-】 +:表示增加权限 -:表示删除权限
【权限】 r:表示可读 w:可写 x:可执行
chmod u+x a.txt 表示给a.txt的拥有者,添加可执行权限。
(2)数字权限 r:4 w:2 x:1 r+w+x的值表示用户的最终权限
chmod 766 a.txt 表示拥有者满权限、属组读写权限、其它用户读写权限。
6 Linux常用软件安装方式
6.1 RPM包安装
RPM是Red-Hat Package Manager(RPM软件包管理器)的缩写,是小红帽厂商推出的软件管理器,在Redhat、CentOS中完成支持。现在也基本推广到其它主流Linux发现版本中。
RPM软件包就像windows的EXE安装文件一样,各种文件已经编译好,并打了包,哪个文件该放到哪个文件夹,都指定好了,安装非常方便。
6.1.1 rpm安装命令
rpm -q jdk 查看jdk是否安装 rpm -qa 查看所有rpm安装包 rpm -ql jdk 查看jdk路径 rpm -ivh jdk.rpm 安装jdk,并显示安装进度 rpm -e jdk 卸载已经安装的jdk rpm -e mysql --nodeps 卸载已经安装的mysql,-nodeps 忽略相关依赖的卸载 |
6.1.2 rpm安装jdk
(1)上传jdk-7u79-linux-x64.rpm 到/opt/soft目录下:
(2)安装 rpm -ivh jdk-7u79-linux-x64.rpm
|
(3)查看安装结果 java -version
|
(4)配置环境变量:
a)、编辑 ~/.bash_profile文件
b)、添加环境变量配置,在空白行添加如下内容:
#Java PATH export JAVA_HOME=/usr/java/jdk1.7.0_79 export PATH=$JAVA_HOME/bin:$PATH |
c)、source ~/.bash_profile 重新加载,是配置生效
6.2 yum安装
6.2.1 yum简介
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。
语法格式为:yum -y install [软件名],其中”-y”表示安装过程不询问。
6.2.2 yum安装本质
(1)yum安装的本质,其实是rpm包安装
(2)yum安装软件时,会从yum源(镜像库)中,下载该软件对应的rpm包、及安装该软件所依赖的其它rpm包,并根据依赖关系,按顺序安装软件及其相关依赖。
(3)类似于java里面maven安装jar依赖
6.2.3 yum安装vim
vim是基于vi的一款文本编辑器,支持几乎所有vi命令;功能更加强大。vi相当于window上的记事本,vim则相当于nodepad++等文本编辑工具。
6.2.4 修改yum源镜像
(1)下载yum镜像文件 ,地址https://opsx.alibaba.com/mirror
|
(2)yum clean all
(3)yum makecache
6.2.5 yum安装VIM
使用yum -y install vim命令即可。
说明:安装完成后,修改vim配置 /etc/vimrc文件,永久显示行号:
|
6.3 源码安装
当前Linux提供了绝大多数软件的rpm包,rpm是已经编译过了的,可以直接运行安装;
但是,有一部分软件,Linux并没有提供rpm包,而是提供了未经编译的二进制源码包,这就需要我们自己对该源码包进行编译,之后再安装。
6.3.1 源码安装步骤
1)、找到相应的软件包,比如soft.tar.gz,下载到本机某个目录;
2)、cd soft.tar.gz所在的目录;
3)、tar -xzvf soft.tar.gz //一般会生成一个soft目录
4)、cd soft
5)、./configure(预编译,编译过的tar包不需要6、7、8步)
6)、make (编译)
7)、make install
6.3.2 源码安装redis
(1)、下载、解压
(2)、预编译
进入 cd /opt/soft/redis-3.2.9/deps/jemalloc
执行预编译 ./configure
在预编译过程中,会检测安装redis所需的相关依赖,依次安装即可。
(3)、编译 进入/opt/soft/redis-3.2.9/src目录,执行make命令。
(4)、安装 进入/opt/soft/redis-3.2.9/src目录,执行make install。
6.4 解压免安装
6.4.1 Linux安装tomcat
(1)上传tomcat压缩包到Linux服务器;
(2)解压tar命令,解压tomcat.tar.gz; tar -zxvf tomcat.tar.gz
(3)进入bin目录,执行命令./startup.sh,启动tomcat
6.4.2 访问tomcat
由于防火墙安全限制问题,无法直接访问tomcat,解决方案:
(1)关闭防火墙 service iptables stop
(2)开放8080端口,允许外部网络通过该端口访问Linux服务器。
a)用编辑器打开/etc/sysconfig/iptables
|
b)参照22端口,进行配置
|
c)、保存退出,并重新启动防火墙
6.4.3 将tomcat添加为Linux系统服务
(1)拷贝/tomcat/bin目录下catalina.sh脚本到/etc/init.d目录下
cp catalina.sh /etc/init.d/tomcat
(2)在脚本中设置 CATALINA_HOME 和 JAVA_HOME 这两个脚本必需的环境变量,如:
CATALINA_HOME=/opt/soft/tomcat7 tomcat解压目录
JAVA_HOME=/usr/java/jdk jdk安装目录
|
(3)service tomcat start|stop 启动|停止tomcat
7 安装mysql
7.1 方式一(离线安装,已经下载好了安装包)
7.1.1 卸载旧版本mysql及插件
(1)、查看 rpm -qa | grep mysql
(2)、卸载 rpm -e mysql-libs-5.1.73-7.el6.x86_64 --nodeps
--nodeps 忽略其它依赖,直接卸载
7.1.2 安装依赖perl
yum install -y perl
7.1.3 安装Mysql(重点)
(1)上传、解压文件;
(2)rpm依次安装4个应用程序,命令:rpm -ivh xxx.rpm;
|
Tips:
如果Mysql-server安装失败,则查看是否是系统自带低版本mysql-lib库产生冲突,如果是这个原因,则卸载低版本mysql-lib库:
rpm -e mysql-libs-5.1.71-1.el6.x86_64
7.1.4 上传配置文件my.cnf到/etc/目录下
目的:这个my.cnf文件,已经配置好了相关的设置,编码使用的是utf-8。
|
7.1.5 初始化mysql
|
7.1.6 启动Mysql
|
7.1.7 重置密码(重点)
(1)查看初始密码
|
(2)使用初始密码登陆 mysql -u root –pFeejxrrkzR544vGR
(3)修改密码 set password=password(‘111111’);
|
7.1.8 远程授权
远程授权的目的:让其他的主机、用户能够访问服务器上的mysql数据库。授权命令如下:
grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant option; flush privileges; |
7.2 方式二(在线安装)
7.2.1 检查是否安装了mariadb,如果已经安装了则卸载:
[[email protected] ~]# yum list installed | grep mariadb mariadb-libs.x86_64-1:[email protected] [[email protected] ~]# yum -y remove mariadb* |
7.2.2 下载官方提供的rpm包
Mysql官方地址:https://dev.mysql.com/downloads/repo/yum/
|
(1)、首先在linux中安装wget
[[email protected] ~]# yum -y install wget |
(2)、使用wget命令,下载rpm包
wget https://dev.mysql.com/get/mysql57-community-release-el6-11.noarch.rpm |
7.2.3 安装rpm包
[[email protected] ~]# rpm -ivh mysql57-community-release-el6-11.noarch.rpm |
7.2.4 检查mysql的yum源是否安装成功
[[email protected] ~]# yum repolist enabled | grep "mysql.*-community.*"
|
7.2.5 使用yum源安装mysql-server
[[email protected] ~]# yum -y install mysql-server |
7.2.6 启动mysql
[[email protected] ~]# service mysqld start |
7.2.7 重置密码
说明:有的版本没有默认密码,可以直接登录。
(1)打开/var/log/mysqld.log日志文件,查看默认密码。
(2)登录mysql客户端,mysql -u root -p’>>yu7s(d8aQD’
|
(3)修改密码
mysql> set password=password("yourpassword"); Query OK, 0 rows affected, 1 warning (0.36 sec) |
(4)重新登陆
[[email protected] ~]# mysql -u root –pyourpassword |
7.2.8 远程授权
mysql> grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘gzsxt‘ with grant option; mysql> flush privileges; |
7.3 使用navicat远程连接Mysql
7.3.1 注意事项
防火墙默认是没有开放Mysql服务的3306端口。
要想远程访问mysql,必须设置防火墙,添加对3306端口访问的支持。
(1)编辑防火墙配置文件 vi /etc/sysconfig/iptables
|
(2)重新启动防火墙 service iptables restart
(3)打开navicat客户端软件,创建一个新的数据库连接即可。
8 虚拟机克隆
注意:克隆之前,先关闭虚拟机。
(1)、右键“管理”—“克隆”,选择默认操作
(2)、修改新的虚拟机的ip地址。
a)修改ip地址。
b)删除mac地址,删除uuid
c)删除mac地址生成规则/etc/udev/rules.d/70-persistent-net.rules
d)修改克隆机的主机名 vi /etc/sysconfig/network
(3)、重启 init 6 或者 reboot
以上是关于Linux的主要内容,如果未能解决你的问题,请参考以下文章