目录
1.设置静态ip(公司中虚拟机ip都是固定的,不然程序设置死了,否则不能运行)
一.简介
优点:稳定,开源,模块化程度高,多用户
主要版本:Ubantu,CentOS( 主)
二.安装Linux流程
1.在windows操作系统上安装VMware
2.在Vm上创建虚拟服务器
3.在虚拟服务器上创建linux系统
&运算,任何数字&0都是0,任何数字&1都是他本身
三.上网模式
1.真实物理主机上网模式
1)ip地址: 互联网协议地址,必须跟网关在一个网段
2)mask:子网掩码,用来确定ip所在的网段 255.255.255.0
3)gw:网关,与交换机ip相同
4)dns:域名解析,将发送的url解析成ip地址
物理上网原理:多个服务器,主机连接在同一个交互机上,通过子网掩码,使得主机都在同一个网段,连接到同一个交换机保证沟通
2.NAT上网模式
创建了多个虚拟机,可以相互通讯,宿主机通过vmnet8接口连接虚拟交换机,
宿主机还有以太网接口连接外部网线通网,只要宿主机通网。虚拟机也能连接外网
3.桥接模式
虚拟机和宿主机通用同一个真实交换机,如果网络环境发生变化,那么每个虚拟机都应该要重新设置网段
四.Linux操作
1.设置静态ip(公司中虚拟机ip都是固定的,不然程序设置死了,否则不能运行)
1)首先查看虚拟交换机的网段
vmware软件界面--> 编辑->虚拟网络编辑器->更改设置(管理员身份)->点击NAT模式->NAT设置
即可查看到网段
2)设置静态ip
首先在虚拟机主界面登录 ,然后执行命令
nmtui
点击edit a connection---->Edit------>IPV4 show 展开后将IPV4 Configuration 改为Manual
------->设置Address(设置为网关下合法ip),参考虚拟交换机ip,即网关, 网关是虚拟机ip
域名解析服务器DNS:114.114.114.114
3)设置ip完成后需要重新启动
在虚拟机主界面执行命令
systemctl restart network
查看虚拟机ip:
ip addr
4)测试虚拟机连接情况
打开cmd命令:ping 192.168.25.24 (虚拟机ip)
在虚拟机中 执行命令 ping www.baidu.com
Ctrl+c 终止命令
如果失败可能是vmnet8接口问题
五.Shell终端
1.打开secureCTR软件连接虚拟机
2.打开选项,对颜色,字体,编码进行设置
六.Linux操作系统目录树
七:Linux常见命令
1.cd 切换文件夹
例子 cd /opt 进入opt目录
cd ../ 回到上一级目录
cd 回到家目录
2.pwd 查看当前所在目录
3.mkdir /abc 创建一个abc的文件夹
4.ll ls 查看文件夹详细目录 ll查看更加详细
5.mkdir a/b/c -p 递归创建多个文件夹 注意要加上-p
6.rm -rf 文件名 删除操作
7. cp b /export/server/ -r 复制操作:将b文件复制到 server文件夹下面
8. mv b /export/server/ 将b文件剪切到server文件下面
9.mv d v 将d文件改名字为v
文件的增删改查
1. 创建文件
touch a.txt 创建a.txt文件
vi a.txt 创建a.txt文件
echo "hello">>c.txt 创建c.txt文件 并且在文件中打印hello
2.查看文件
cat c.txt 查看c.txt文件
3.删除文件
rm -rf c.txt 删除c.txt文件
4. 复制文件
cp a.txt b.txt /export/server 复制a.txt,b.txt文件到server文件夹
5.剪切文件
mv a.txt /exportt/server 剪切a.txt 文件到server
mv a.txt a11.txt 将a.txt文件重命名为a11.txt文件
6.编辑命令
1)vi a.txt 编辑a.txt文件
vi的增强 为 vim,但是需要下载相关文件
yum install vim* 下载过程中 -y 可以一致执行Y
vim a.txt 也是编辑文件
2)编辑模式
编辑界面常用快捷键:
gg:光标到第一行 G:光标到最后一行 nG:到第n行
dd:删除当前行 ndd:删除n行 yy:复制当前行 nyy:复制n行 p:粘贴
set nu :显示行号 set nonu:取消显示行号 q!:直接退出 wq 保存退出
/jack :查找jack N下一个
%s/jack/rose/g :全局查找jack,然后替换为rose
八:Linux用户创建
1.创建一个用户必须在root下创建 :语法 useradd rose
2.查看信息 id rose
3.设置密码 passwd 重复输入两次密码即可
4.cd /home 用户信息存储在home下面
5. su rose 切换用户为rose
6.用户回收 先切换回root用户 su root 输入root的密码成功切换
然后执行 userdel rose -r -r代表删除家
如果有进程没有结束 ,那么就先exit退出
九. 文件页的解读
1.第一列: -ld
1)-代表这是一个文件
2)l代表这是一个连接
3)d代表是一个目录
2.第二列:后面三个子没有wxr
1)w:代表可写
2)r:代表可读
3)x:代表可执行
3.第三列:代表用户所在的当前组拥有的权限
4.第四列:其他用户拥有的权限
8.授权和剥夺权利
1)当前用户
剥夺命令 chmod u-x(w或r) 文件名
授权命令:chmod u+x(w或r) 文件名
2)当前用户所在组
剥夺命令 chmod g-x(w或r) 文件名
授权命令:chmod g+x(w或r) 文件名
3)其他用户
剥夺命令 chmod o-x(w或r) 文件名
授权命令:chmod o+x(w或r) 文件名
4)通过数字组合授权
rwx :r值为4 w为2 x为1
470 代表当前用户仅r,同组用户权限为rwx,其他用户关闭所有权限
chmod 470 文件名
5)递归授权
chmod o+w /export/soft/a/ -R 递归授权, 在其他用户下将a目录下的所有文件全部授权W
9.sudo
当普通用户要进行超管才能处理的业务时,这时超级管理员不能给出密码。只能对用户进行授权,
通过修改文件实现:
命令
visudo
如果不知到rm的绝对路径,那么就创建一个克隆会话,然后执行 which rm
这句话的意思是允许rose在任何地方都能以root的权限执行rm删除操作
查看用户的sudo权限 sudo -l
如果普通用户要使用sudo权限的话,那么就要在执行命令前加上sudo
十.Linux软件安装
1.三种安装方式
1).源码包------编译---------安装
nginx,redis
2).二进制包——-------通过rpm 直接安装(用的很少,因为对包的依赖过度),yum在线安装
vim,jdk
3).tar.gz解压安装
tomcat
2.Mysql安装
1.linux 要在下载地址前加上wget
wget https://dev.mysql.com/get/mysql57-community-release-el7-11.noarch.rpm
如果说wget找不到的话,就先执行 yum install -y wget 命令
2.安装镜像文件
yum -y install mysql57-community-release-el7-11.noarch.rpm
生成红框中的两个文件
3.查看可用版本 communityServer后缀为 enable
yum repolist all | grep mysql
4.安装mysql服务
yum install mysql-community-server --nogpgcheck
5.mysql相关指令
#启动mysql
systemctl start mysqld
#查看mysql状态
systemctl status mysqld
#重启mysql
systemctl restart mysqld
#停止mysql服务
systemctl stop mysqld
#开机自启动
systemctl enable mysqld
#开机不启动
systemctl disable mysqld
6.获取mysql密码
grep 'temporary password' /var/log/mysqld.log
7.登录mysql
mysql -uroot -p
8.修改密码:输入密码的时候不会显示
SET PASSWORD = PASSWORD('Admin123!');
9.用Navicat软件连接数据库。测试连接
如果连接不上,可能是会出现以下问题
1)虚拟机地址存在问题,在cmd命令中ping 192.xxx.xxx(虚拟机ip),查看连通性
2)检查密码,mysql是否启动
3)关闭虚拟机的防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
4)远程授权:允许所有账户访问所有的表
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
5)mysql设置,进入mysql执行命令,插入设置信息
vim /etc/my.cnf
#在[mysqld]下面添加,不需要分号字符集:注意是utf8而不是utf-8!
character-set-server=utf8
#这时候使用show variables like 'char%';就可以查看到字符集都是utf8了
#sql支持group by语句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#设置时区为东八区
default-time_zone = '+8:00'
6)重启mysql
systemctl restart mysql
7)设置开机自启动
#开机自启动
systemctl enable mysqld
mysql连接问题排查
1)首先ping虚拟机 打开cmd
2):虚拟机mysql服务是否启动
3):是否关闭防火墙
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
disable 永久关闭
4).设置远程登录
这句指令需要在mysql中执行
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'Admin123!' WITH GRANT OPTION;
flush privileges;
5)mysql的配置
vim /etc/my.cnf
#在[mysqld]下面添加,不需要分号字符集:注意是utf8而不是utf-8!
character-set-server=utf8
#这时候使用show variables like 'char%';就可以查看到字符集都是utf8了
#sql支持group by语句
sql_mode=STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
#设置时区为东八区
default-time_zone = '+8:00'
6)还有一点一定注意:服务器的安全组一定要打开mysql权限
3:安装JDK1.8
1)首先安装jdk1.8
首先打开shell终端软件,点击界面右上角按钮,左边对话框为windows操作系统,右边为Linux操作系统,将jdk1.8文件拖到Linux soft文件夹下面,linux中的压缩包文件名后缀为 .tar.gz
2)然后在linux中进入soft目录进行解压
可以看到soft目录是有安装包的,此时可以在export下建立一个文件夹server,等下直接安装在这个目录下,
tar -zxvf 文件名 -C /export/server
server目录下就生成了jdk1.8文件
3) 进入这个jdk文件,然后再进入它的/bin文件,输入 ./java 即可执行java命令
4)配置环境变量
进入配置文件
vi /etc/profile
然后在文件的最后面执行命令
5)进入文件后,在最后面执行语句,最后是保存退出
export JAVA_HOME=/export/server/jdk1.8.0_261
export PATH=$PATH:$JAVA_HOME/bin
wq
6)执行配置文件
source /etc/profile
退出后执行语句,使配置文件生效
现在全局环境变量就生效了,在任意文件都可以执行java指令
4.安装Tomcat
1)还是在软件中将Tomcat安装压缩包拖进/export/server
2)执行命令解压到server文件夹啊
tar -zxvf apache-tomcat-9.0.38.tar.gz -C /export/server/
3)到server目录下去重命名为tomcat9
mv apache-tomcat-9.0.38/ tomcat9
4)进入到tomcat里面,然后再进入到bin目录里面
cd tomcat9/
cd bin/
5)启动startup.el文件 在bin目录下执行如下命令
./startup.sh
6)查看日志文件
tomcat日志文件使catalina
./startup.sh
7)执行日志查看语句 一般来说我们只看最后10行
tail -10f catalina.out
十一.Linux的进程
1)查看所有的进程
ps -ef
2) 模糊查询进程
语法要点 |左边必须是文件列 右边必须是grep + 查询条件
ps -ef|grep tomcat
3)查找不含某个条件的进程或文件
在| 右边加上一个-v 代表排除这个条件的选项都选出来
ll |grep -v a
4)查看网络进程
netstat -nltp
5) 通过端口查看进程
安装相关指令
yum install -y lsof
lsof -i:8080
6) 只查看java进程
jps
7)#通过pid杀死进程 端口号
kill -9 pid
#批量杀死java进程
pkill -9 java
汇总
#wc -l 统计行数
ps -ef|grep nginx |grep -v grep|wc -l
#查看某个进程的进程id(pid)
ps -ef|grep mysql|grep -v grep |awk '{print $2}'
#利用 netstat 指令可让你得知整个 Linux 系统的网络进程
netstat -nltp
yum install -y net-tools
十二.网络指令
1)设置主机名
hostnamectl set-hostname bozai01
2)查看主机名
hostname
3)主机名映射
进入映射配置文件
vi /etc/hosts
配置映射,先写ip 后面写主机名
4)ping 主机名 试下连接
十三.项目部署到Linux上
1)在maven导入依赖
<build>
<plugins>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
</plugin>
</plugins>
</build>
2)对公钥,私钥的代码修改
private static byte[] readBytes3(InputStream in) throws IOException {
BufferedInputStream bufin = new BufferedInputStream(in);
int buffSize = 1024;
ByteArrayOutputStream out = new ByteArrayOutputStream(buffSize);
// System.out.println("Available bytes:" + in.available());
byte[] temp = new byte[buffSize];
int size = 0;
while ((size = bufin.read(temp)) != -1) {
out.write(temp, 0, size);
}
bufin.close();
byte[] content = out.toByteArray();
return content;
}
3)更改mysql配置文件,更改url,更改数据库密码
4)maven生命周期package打包,获取jar包
5)通过shell终端软件将jar包拖入到/export/soft目录下
6)在虚拟机的数据库中导入项目的数据
7)进入到soft目录下执行启动jar包
java -jar fengmipuzi-0.0.1-SNAPSHOT.jar
但是这样启动会遇到一个问题,如果退出程序,那么后端就会自动结束,所以要将jar包后台启动
nohup java -jar fengmipuzi-0.0.1-SNAPSHOT.jar &
8)查看日志
tail -10f nohup.out
十四:shell编程
1.简介:shell编程是面向过程编程,在用户和Linux之间建立一道桥梁,能够解析用户写的命令,然后传递个Linux内核执行,业界shell通常指shell脚本
2.入门案例
在文件夹下创建一个hello.sh文件
vi hello.sh
进入界面后,在界面上方加上一句声明#! /bin/bash ,写下执行语句
#! /bin/bash
echo "hello world"
文件执行前加上执行权限
chmod u+x hello.sh
文件执行
./hello.sh
3.shell语法(可以通过菜鸟驿站学习)
1)定义变量:不能加空格
name=jack
如果要加空格,整个变量需要用引号括起来
name1="zhang san"
2)引用变量:echo $变量名
echo $name
如果引用的边界出现问题,需要将引用变量加上{}
desc="我的名字叫做${name},xxx"
3)设置变量为只读
将变量设置为只读,这样就无法修改
readonly name
4)删除变量
unset name
5)字符串
一般情况下,单引号和双引号效果是一样的
name='bozai'
name="bozai"
但是name中如果引用了其他变量,那么就要用“”才行
6)获取字符串的长度
string="abcd"
echo ${#string}
7)shell案例
APP_HOME=/export/soft/
APP_NAME=fengmipuzi-0.0.1-SNAPSHOT.jar
PID=`ps -ef|grep $APP_NAME |grep -v grep|awk '{print $2}'`
#刷新环境变量(必须)
source /etc/profile
case $1 in
start)
if [ $PID ]
then
echo "java进程已经启动无需再启动"
else
echo "启动start ....."
cd $APP_HOME
nohup java -jar $APP_NAME &
echo "启动finished ....."
fi
;;
restart)
echo '开始重启.....'
if [ $PID ]
then
kill -9 $PID
echo "kill success"
cd $APP_HOME
nohup java -jar $APP_NAME &
else
cd $APP_HOME
nohup java -jar $APP_NAME &
fi
echo '重启finished.....'
;;
stop)
echo '开始stop....'
if [ $PID ]
then
kill -9 $PID
else
echo "进程已经关闭"
fi
echo "stop finished"
;;
*) echo '必须传参'
;;
esac
4.Linux内置定时任务
crontab –e //编写一条定时任务
crontab -l //列出当前用户定时任务
crontab -r //删除当前用户定时任务
案例 进入crontab-e 写定时任务
#案例一:每分钟往a.txt文件追加文本信息
* * * * * echo 'hello jack' >> /a.txt
* * * * * sh /export/shell/tomcat.sh start
十五:面试题
1.Linux常用命令
1)top:查看Linux操作系统消耗系统资源的进程
top
2)free-m:查看剩余资源
free-m
3)df -lh: 查看磁盘利用率
df -lh
4)ps -ef:查看进程
ps -ef
5)tai -10f:查看滚动日志
tai -10f
6)发送请求(没那么重要)
curl http://www.baidu.com
2.生产排查问题
这里我们要下载一个软件Arthas,将arthas-boot.jar文件放进Linux下的soft目录,然后执行
java-jar arthas-boot.jar
这个软件会自动检测正在运行的java程序,查找出最占内存的程序,根据java进程的编号,可以直接输入数字,然后进入arthas命令
1)查看哪个进程的哪个线程最消耗cpu资源
2)哪个进程的哪个对象特别占用内存资源
- 先执行top命令 ,找到最占内存的进程
- 启动 java -jar arthas-boot.jar
- 输入数字
- 查询进程中的堆信息
-
heapdump --live /export/soft/dump.hprof
jhat dump.hprof
继续执行这句代码 ,读取堆信息文件
通过7000端口号去访问文件,找到排除平台的实例,值得注意的是前面的ip必须指定具体。不能用localhost:在网页最下面