目录
一、VMware--创建生产的电脑工厂
所谓虚拟机(virtual machine),就是通过软件技术虚拟出来的一台计算机,它在使用层面和真实的计算机并没有什么区别。
安装了VMWare还没有虚拟机,它是来创建虚拟机的。VMWare每次新建虚拟机就相当于产生一台电脑。安装了VMware相当于开了一家生产电脑的工厂。
扩展:VMWare三种工作模式
所在类 | 和宿主机通信 | 和互联网联系 | 和宿主机的局域网通信 | |
---|---|---|---|---|
桥接模式 bridged (vmnet0) | √ | √ | √ | 和宿主机的网卡地址属于同一个网段 |
NAT 网络地址转换模式 (vmnet8) | √ | √ | × | 和宿主机的地址不属于同一个网段 |
仅主机模式 host-only (vmnet1) | √ | × | × | 可以用于病毒测试等特殊环境 |
Xshell和Xftp的安装
目前安装了Linux操作系统,光标需要在两个操作系统(两台电脑)之间进行切换。相当于在每个电脑上操作当前电脑
希望在宿主机上直接操作Linux(因为实际中Linux可以在远程,北冰洋、矿山、数据中心),更多的还是远程操作的。将自己的电脑模拟为远程电脑的一个终端,利用当前电脑的键盘发送命令控制远程的服务器,让远程服务器的CPU和内存进行运算,结果返回给客户端的显示器。
Linux网络连接问题
问题1:ifconfig不显示ens33
ifconfig工具不仅可以被用来简单地获取网络接口配置信息,还可以修改这些配置。用ifconfig命令配置的网卡信息,在网卡重启后机器重启后,配置就不存在。要想将上述的配置信息永远的存的电脑里,那就要修改网卡的配置文件了。
ifconfig:显示up状态(激活状态)的网卡信息
ifconfig -a:显示所有网卡的信息,包含未up的
ifconfig ens33 down 关闭指定网卡
ifconfig ens33 up 启动指定网卡
ifconfig ens33 192.168.11.212 up 修改IP地址并启动
问题2:ifconfig显示ens33但是不显示ipv4
- 确保vmware的服务都开启
- 确保nat和vmnet8都开启
- 确保防火墙关闭状态
- 确保网卡的onboot=yes
- 最后的大招:禁用NetworkManager服务器,启用network服务(sudo可以尝试省略)
systemctl status NetworkManager 应该是active
systemctl disable NetworkManager 下次开机不会自动开启,现在没有关
systemctl stop NetworkManager 现在是开启状态,现在就关掉
systemctl start network.service 现在就开启network网络服务
reboot 重新启动
关于Windows和linux通信,VMNet8虚拟网卡
二、Linux 目录结构 ★
Linux一切皆文件,Linux中没有盘符的概念,使用一个/代表整个所有目录和文件的根目录。
/bin(/usr/bin、/usr/local/bin) | 是Binary 的缩写, 这个目录存放着最经常使用的命令 |
/sbin(/usr/sbin、/usr/local/sbin) | s就是Super User的意思,这里存放的是系统管理员使用的系统管理程序。 |
/home | 存放普通用户的主目录,在Linux中每个用户都有一个自己的目录,一般该目录名是以用户的账号命名的。 |
/root | 该目录为系统管理员,也称作超级权限者的用户主目录。 |
/lib | 系统开机所需要最基本的动态连接共享库,其作用类似于Windows里的DLL文件。几乎所有的应用程序都需要用到这些共享库。 |
/lost+found | 这个目录一般情况下是空的,当系统非法关机后,这里就存放了一些文件 |
/etc(等等,感觉应该是conf) | 所有的系统管理所需要的配置文件和子目录 |
/usr(unix software resource) | 这是一个非常重要的目录,用户的很多应用程序和文件都放在这个目录下,类似与windows下的program files目录。 |
/boot | 这里存放的是启动Linux时使用的一些核心文件,包括一些连接文件以及镜像文件,自己的安装别放这里 |
/proc | 这个目录是一个虚拟的目录,它是系统内存的映射,我们可以通过直接访问这个目录来获取系统信息。 |
/srv | service缩写,该目录存放一些服务启动之后需要提取的数据 |
/sys | 这是linux2.6内核的一个很大的变化。该目录下安装了2.6内核中新出现的一个文件系统sysfs |
/tmp | 这个目录是用来存放一些临时文件的。 |
/dev (device) | 类似windows的设备管理器,把所有硬件用文件形式存储 |
/media(centos6) | linux系统会自动识别一些设备,例如U盘、光驱等等,当识别后,linux会把识别的设备挂载到这个目录下。 |
/run | 进程产生的临时文件,虚拟机加载光盘映像在:/run/media/root/ 目录下 |
/mnt (mount) | 系统提供该目录是为了让用户临时挂载别的文件系统的,我们可以将外部的存储挂载在/mnt/上,然后进入该目录就可以查看里的内容了。 |
/opt | 这是给主机额外安装软件所摆放的目录。比如你安装一个ORACLE数据库则就可以放到这个目录下。默认是空的。 |
/usr/local | 这是另一个给主机额外安装软件所摆放的目录。一般是通过编译源码方式安装的程序。 |
/var | 这个目录中存放着在不断扩充着的东西,我们习惯将那些经常被修改的目录放在这个目录下。包括各种日志文件。 |
三、路径
在Linux中,存在着绝对路径和相对路径。
- 绝对路径:路径的写法一定是由根目录 / 写起的,例如 /usr/local/mysql
- 相对路径:路径的写法不由根目录 / 写起的,例如当前目录是”/usr”,然后再进入到下级目录local,执行的命令为 “#cd local”,这个local是相对于/usr目录来讲的,所以称为相对路径。
在Linux中,有几个特殊的符号也可以表示目录。
- “/”:表示根目录
- “.”:表示当前目录,用在相对路径中,一般情况下会省略。
- “..”:表示当前目录的上一级目录,用在相对路径中,比如 cd ..
- “~”:表示/root目录
四、VI | VIM 编辑器 ★
vi:记事本 notepad
vim:notepad++ 功能更加强大
vi编辑器是所有Unix及Linux系统下标准的编辑器,他就相当于windows系统中的记事本一样,是我们使用Linux系统不能缺少的工具。
vim可以当作vi的升级版本,具有程序编辑的能力,可以以字体颜色辨别语法的正确性,方便程序设计。
三个模式之间的切换关系
vi和vim一共有三种工作模式:一般模式、编辑模式和命令模式。
- 一般模式:通过vi或者是vim打开文档后默认进入到一般模式,默认模式。该模式下主要负责查看和一些基础的修剪工作
- 编辑模式:在一般模式下通过字母i、a、o 进入到编辑模式,进入后左下角会有【插入】的字样.如想退出编辑模式,需要按下【ESC】按键
- 命令模式:在一般模式下输入 /或者: 进入命令模式,命令模式一般用于存盘、退出VIM 、显示行号、搜索、批量替换等操作.
打开后进入一般模式,编辑模式和命令模式之间无法之间转换,需要先通过ESC键进入到一般模式。
- 一般模式(默认模式)
dd | 删除光标当前行 |
dnd | 删除n行 |
u | 撤销上一步 |
Shift+g | 移动到页尾 |
1+Shift+g | 移动到第一行 |
N+shift+g | 移动到第N行 |
Shift+6 | 移动到行头 |
Shift+4 | 移动到行尾 |
- 编辑模式
i(insert) | 当前光标前录入 |
a | 当前光标后录入 |
- 命令模式
:w write :wq | 保存 |
:q quit | 退出 |
:! :q! | 强制执行 |
:%s/old字符/new字符 | 批量替换 |
/要查找的词 | 搜索,n查找下一个,N查找上一个 |
:set nu (number) | 显示行号 |
:set nonu | 关闭行号 |
:noh (highlight) | 取消高亮显示 |
非正常退出可能会出现存在交换文件swp提示,此时按照提示进行相应操作即可,也可以使用rm命令直接删除swp文件。
五、常用命令 ★
ifconfig:获取虚拟机ip地址
systemctl status firewalld :查看防火墙状态
systemctl stop firewalld:关闭防火墙
systemctl start firewalld:开启防火墙
echo %PATH% cmd中查看环境变量
echo $PATH linux中查看环境变量
yum install 安装
man | 帮助手册(mannual) |
--help | 帮助手册 |
clear | 清除屏幕(ctrl+L) |
pwd | 显示当前所在目录(print working directory) |
touch | 创建文件 |
cd | 切换目录 (change directory) |
mkdir | 创建目录(make directory) -p :同时创建多级目录 (parent) |
ls | 显示当前目录下的内容(list) -a 全部文件,连同隐藏的文件 -l 列出详细列表 别名ll (long) cd mkdir |
grep | 通过|管道符,配置grep进行过滤筛选。比如: ls –l |grep xxx ls –l |grep xxx | grep yyy 删选的是上一条命令的结果 |
rm | 删除文件或者目录(remove) -rvf:递归删除所有目录内容,有提示(recursive verbose force) -rf:递归删除所有目录内容,无提示[慎用] |
cp | 复制(copy) -r : 递归复制整个目录 -v:显示复制过程中文件的列表 \cp:强制覆盖不提示 |
mv | 重命名或者移动文件(move) mv oldFileNamenewFileName重命名 mv/原目录/原文件/新目录移动文件 |
cat | 查看文件 cat 文件名查看轻量级的文本文件 还有一个命令是tac,你猜是什么作用 |
more | 查看比较长的文件 空格键:向下翻一页 回车键:向下翻一行 q:代表立刻离开more ctrl+F向下滚动一屏 ctrl+B向上滚动一屏 |
less | 同more类似,比more功能更多 pageDown:向下滚动一页 pageUp:向上滚动一页 /字符串:向下搜索指定字符串 ?字符串:向上搜索执行字符串 n:重复前一个搜索 N:反向重复前一个搜索 |
history | 查看历史命令 |
tail 还有一个命令是head,作用是什么呢? | 从尾部开始查看文件,比较适合看日志 -n200 显示的行数 -f:跟随查看 (其他进程可通过echo“内容“>>文件名追加内容到文件,tail命令可以观察到数据的变化) |
echo | 回显,输出 一般在shell脚本中使用较多 |
find | 查找文件,提供了丰富的模糊搜索及条件搜索 Find+搜索路径+参数+搜索关键字 按文件名: find /目录/… -name “*.txt” find /目录/… -iname “*.txt” 不区分字母大小写 |
locate | 查找文件,基于索引,查询速度更快 locate '*.log' locate -i '*.log' 不区分大小写 通过updatedb来更新索引 |
tar | 压缩文件、解压缩文件 tar -zcvf xxx.tar.gz xxxx压缩文件 tar -tvf xxxx压缩文件 查看压缩文件内容 tar -zxvf xxx.tar.gz 解压缩文件 -c:创建一个新归档 create -x:从归档中解出文件 -v:显示详细信息 verbose -f:指定压缩后的文件名 file -z:通过gzip过滤归档 -t: 查看压缩文件中内容 |
2、网络配置命令
- 查看网络配置信息
ifconfig / ip addr
- 如何修改ip为固定IP
如使用Linux作为服务器使用,应采用固定IP地址,而不是自动分配IP,避免变化。
图形化操作
命令行方式vim /etc/sysconfig/network-scripts/ifcfg-ens33
#静态分配IP,而不再使用DHCP动态分配
BOOTPROTO="static"
#IP和子网掩码
IPADDR=192.168.86.86
NETMASK=255.255.255.0
#网关和DNS服务器
GATEWAY=192.168.86.2
DNS1=114.114.114.114
DNS2=8.8.8.8
3、进程类
相当于windows中任务管理器
a、显示系统中运行的进程
命令1: ps - aux | grep xxx 可以看到CPU 内存占用率
命令2:ps -ef | grep xxx 可以看到父进程ID
-a : 显示当前总段的所有进行信息
-u : 以用户的格式显示进程信息
-x : 显示后台进程运行的参数
-e 显示所有进程。
-f 全格式。
b、结束任务(杀死进程)
kill pid 杀死进程
kill -9 pid 强制杀死进程
4、服务类
- 有方便统一的管理方式(常用的方法)
systemctl status 服务名(xxxx.service)
systemctl start 服务名(xxxx.service)
systemctl stop 服务名(xxxx.service)
systemctl restart 服务名(xxxx.service)
systemctl reload 服务名(xxxx.service)
- 通过systemctl命令设置自启动
systemctl enable service_name 自启动
systemctl disable service_name 不自启动
注:disable只能保证下次开机不启动,当前依旧打开状态,需要执行stop
- 查看服务的方法
/usr/lib/systemd/system
- 查看服务的命令
systemctl list-unit-files
systemctl --type service
- 运行级别
查看默认级别:vim /etc/inittab
multi-user.target 等价于原运行级别3(多用户有网,无图形界面)
graphical.target 等价于原运行级别5(多用户有网,有图形界面)
Linux系统有7种运行级别(runlevel):常用的是级别3和5
运行级别0:系统停机状态,系统默认运行级别不能设为0,否则不能正常启动
运行级别1:单用户工作状态,root权限,用于系统维护,禁止远程登陆
运行级别2:多用户状态(没有NFS),不支持网络
运行级别3:完全的多用户状态(有NFS),登陆后进入控制台命令行模式
运行级别4:系统未使用,保留
运行级别5:X11控制台,登陆后进入图形GUI模式
运行级别6:系统正常关闭并重启,默认运行级别不能设为6,否则不能正常启动
5、netstat 查看系统的网络情况
netstat -anp
-an 按一定顺序排列输出
-p 显示哪个进程在调用
需求:启动tomcat,提示端口8080被占用,该怎么办?
netstat –anp | grep 8080 查看占用8080端口的进程
kill pid 删除占用了8080端口的进程()
六、rpm 与yum ★
1、rpm
Rpm:就好比之前的jar处理方案。需要下载安装包,如果有依赖的安装包,必须也下载下载,安装软件的时候,先安装依赖的,再安装其他.。非常繁琐
Yum:就是RPM安装,但是时候RPM的自动化安装,不需要下载依赖,会自动到官网下载,并且依赖的安装包会自动下载,自动安装
- RPM(RedHat Package Manager),Rethat软件包管理工具,类似windows里面的setup.exe。是Linux这系列操作系统里面的打包安装工具,它虽然是RedHat的标志,但理念是通用的。RPM包的一般安装位置
查询已安装的rpm列表
rpm –qa | grep xx
- rpm包的名称:firefox-52.5.0-1.el7.centos.x86_64
名称:firefox 版本号:52.5.0-1
适用操作系统: el7.centos.x86_64 表示centos7.x的64位系统。
- 安装rpm
rpm –ivh rpm包名
-i 安装 (install) -v 查看信息 (verbose) -h 查看进度条
2、Yum操作
使用RPM安装软件依赖关系严重,不管是安装还是卸载,都需要先处理依赖软件,考验耐心。为了解决该方式,推出了yum安装方式。
Yum(全称为 Yellow dog Updater, Modified)是一个在Fedora和RedHat以及CentOS中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。
类似于Java开发中的Maven工具,可以从镜像网站上下载应用程序并直接安装
yum list:列出所有可安裝的软件清单
yum list installed 列出已经安装的软件清单
yum list | grep xxx:从列出所有可安裝的软件清单中查询指定软件
yum search xxx:查找软件包命令
yum install xxx:下载并安装指定的软件
yum remove xxx:删除软件包命令:
七、安装JDK
1、使用Vftp传输JDK安装文件到Linux:jdk-8u221-linux-x64.tar.gz2
2、在opt目录使用tar将JDK解压缩到opt目录下:tar -zxvf jdk-8u221-linux-x64.tar.gz 、
3、配置环境变量:vim /etc/profile
export PATH USER LOGNAME MAIL HOSTNAME HISTSIZE HISTCONTROL
JAVA_HOME=/opt/jdk1.8.0_221
PATH=$JAVA_HOME/bin:$PATH
export JAVA_HOME PATH
注意:分隔符是冒号不是分号;引用环境变量不是使用%,而是使用$
4、查看安装是否成功
echo $JAVA_HOME echo $PATH
5、解析文件:让配置生效,可以避免重启系统
source /etc/profile
6、查看安装是否成功
java -version
八、安装Tomcat(tar)
TonCat
startup.sh 启动
shutdown.sh 关闭
1、使用Vftp传输Tomcat7安装文件到Linux:
2、使用tar解压缩到/opt目录
解压:tar -zxvf apache-tomcat-7.0.70.tar.gz
文件夹改名(可选):mv apache-tomcat-7.0.70 tomcat7
3、进入到Tomcat目录下的bin目录中,启动tomcat
./startup.sh
注意:不可以直接访问startup.sh。使用命令行执行某个程序时,Linux会到PATH环境变量的路径去搜索程序文件,但在默认情况下,Linux和Windows不同,Windows会搜索当前目录,而Linux不会搜索当前目录,所以在当前目录下的程序,而当前目录不再PATH环境变量中的话,就需要加上"./"来指定到当前目录下去查找应用程序了。
4、宿主机中,在浏览器中访问Tomcat。(确保Linux端防火墙已经关闭)
5、可选:配置环境变量并解析配置文件:(和)
vim /etc/profile
CATALINA_HOME=/opt/tomcat7
PATH=$CATALINA_HOME/bin:$PATH
export CATALINA_HOME PATH
source /etc/profile
startup.sh
九、安装Mysql
1、检查工作
- CentOS7 判断mariadb是否已经存在:rpm -qa|grep mariadb
如果已存在,先执行卸载命令:rpm -e --nodeps mariadb-libs
- 检查/tmp文件夹权限(可选) 执行:chmod -R 777 /tmp
ll
drwxrwxrwt. 19 root root 4096 6月 10 10:59 tmp
chmod -R 777 /tmp
drwxrwxrwx. 19 root root 4096 6月 10 10:59 tmp
2、拷贝安装包到opt目录下
3、执行以下命令进行安装
rpm -ivh MySQL-client-5.5.54-1.linux2.6.x86_64.rpm
rpm -ivh MySQL-server-5.5.54-1.linux2.6.x86_64.rpm
4、检查安装是否成功
执行mysqladmin --version,如果打印出消息,即为成功
5、MySQL服务的启停
启动: service mysql start
停止: service mysql stop
6、设置root用户的密码
mysqladmin -u root password '密码'
7、本地登录MySQL
mysql -u root -p
8、通过图形管理功工具,远程访问Mysql
MySQL默认的root用户只允许本机登录,无法通过远程SQLyog工具登录
9、创建可以远程访问的root用户并授予所有权限 (数据库远程访问)
mysql5.7及以前版本:
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'root(你的密码)' WITH GRANT OPTION;
mysql 8版本执行下面语句
#Mysql8 创建用户
CREATE USER 'root'@'%' IDENTIFIED BY 'root(你的密码)';
#进行授权
grant all privileges on *.* to 'root'@'%' ;
#刷新用户权限
FLUSH PRIVILEGES;
其中"."代表所有资源所有权限, “‘root’@%”其中root代表账户名,%代表所有的访问地址。IDENTIFIED BY ‘密码’,这里换成数据库root用户的密码,WITH GRANT OPTION表示允许级联授权。
- 查看MySQL mysql库中的用户表
列显示: select * from user\G;
查询常用字段: select host,user,password,select_priv from mysql.user;
- 修改用户的密码
修改当前用户的密码
set password =password('123456’)
修改某个用户的密码
update mysql.user set password=password('123456') where user='li4';
卸载Mysql
MySQL必须干净卸载,否则会影响二次安装
- 关闭MySQL服务:service mysql stop
- 卸载客户端:rpm -e MySQL-client-5.5.54-1.linux2.6.x86_64
- 卸载服务器端:rpm -e MySQL-server-5.5.54-1.linux2.6.x86_64
- 查看残留并删除:whereis mysql
- 查看残留并删除:find / -iname 'mysql ' 尤其其中/var/lib/mysql一定要确保删除
注意:
Linux whereis命令,会在特定目录中查找符合条件的文件,这些文件应属于原始代码、二进制文件,或是帮助文件。一般文件的定位需使用locate或者find命令。
十、更多Linux命令 (了解)
1、Linux分区理论
Linux来说无论有几个分区,却只有一个根目录,一个独立且唯一的文件结构。Linux中每个分区都是用来组成整个文件系统的一部分,因此它采用了一种叫“挂载点”的处理方法,将一个分区和一个目录联系起来,称为将该分区挂载到该目录,通过访问该目录来实现对该分区的访问。
2、Linux 磁盘分区操作
1. 查看目前的磁盘分区及其挂载情况
lsblk 或者lsblk -f
2. 给虚拟机再添加一个硬盘,对该硬盘进行分区操作
3. 分区
分区方案:一个主分区,一个扩展分区(扩展分区再划分两个逻辑分区)
开始分区后输入n新增分区,然后选择p ,分区类型为主分区。两次回车默认剩余全部空间。最后输入w写入分区并退出,若不保存退出输入q。
通过fdisk /dev/sdb 开始对/sdb进行分区,
m 显示命令列表
p显示磁盘
n新增分区
d删除分区
w写入并退出分区
q 退出不保存
4. 高级格式化:针对每个分区
mkfs -t ext4 /dev/sdb1
mkfs -t ext4 /dev/sdb5
mkfs -t xfs /dev/sdb6
5. 目录挂载
mount /dev/sdb1 mypart1
mount /dev/sdb5 mypart2
mount /dev/sdb6 mypart3
取消挂载:umount
umount /dev/sdb5
umount /opt/mypart3
3、磁盘查询命令
free -m 查看内存
df -h 查询系统整体磁盘使用情况
查询指定目录的磁盘占用情况,默认为当前目录
-s 指定目录占用大小汇总
-h 带计量单位
-a 含文件
--max-depth=1 子目录深度
-c 列出明细的同时,增加汇总值
例:du -ach --max-depth=1 /opt
4、用户管理
- 对用户的操作
新增用户:useradd 新用户名 观察home目录下新增了用户主目录
设置密码: passwd 用户名
用户是否存在:id 用户名
切换用户:su 切换用户名
查看当前用户/登录用户:whoami/ who am I
删除用户:userdel 用户名
删除用户:userdel -r 用户名 同时删除主目录
- 对用户组的操作
新增组:groupadd 组名
修改用户的组:usermod –g 用户组 用户名
增加用户时直接加上组:useradd –g 用户组用户名
删除组:groupdel组名
5、文件和文件夹权限命令
指定:-ls -l 或 -ll 查看文件详情
- 第一种方式:+ 、-、= 变更权限
u:所有者 g:所有组 o:其他人
a:所有人(u、g、o的总和)
chmod u=rwx,g=rx,o=x 文件目录名
chmod o+w文件目录名
chmod a-x 文件目录名
- 第二种方式:通过数字变更权限
r=4 w=2 x=1 rwx=4+2+1=7
chmod u=rwx,g=rx,o=x 文件目录名
相当于chmod 751 文件目录名