Linux

目录

一.简介

二.安装Linux流程

1.在windows操作系统上安装VMware

2.在Vm上创建虚拟服务器

3.在虚拟服务器上创建linux系统

&运算,任何数字&0都是0,任何数字&1都是他本身

三.上网模式

1.真实物理主机上网模式

2.NAT上网模式

3.桥接模式

四.Linux操作

1.设置静态ip(公司中虚拟机ip都是固定的,不然程序设置死了,否则不能运行)

五.Shell终端

六.Linux操作系统目录树

七:Linux常见命令

八:Linux用户创建

 九. 文件页的解读

十.Linux软件安装

1.三种安装方式

2.Mysql安装

mysql连接问题排查

3:安装JDK1.8

4.安装Tomcat

十一.Linux的进程

十二.网络指令

十三.项目部署到Linux上


一.简介

优点:稳定,开源,模块化程度高,多用户

主要版本: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:在网页最下面

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值