Linux

101 阅读10分钟

博学谷IT技术支持

一. java学习之路

javase
mysql
前端
javaweb
ssm框架
springboot
vue
springclude
MP(mybatisPlus)
Git
Linux (centos7) 操作系统
    Linux基础
    Redis:是一个nosql数据库
    Nginx:反向代理,负载均衡服务器
    Docker:容器化技术
消息队列(kafka,rabbitMQ,rockeetMQ),缓存(redis),搜索引擎(es),集群分布式(购买多台服务器或者用多台虚拟机)

二.Linux简述

<1>两套服务器的环境
    LAMP : linux+apache+mysql+php
    LNMP : linux+ngix+mysql+php
<2> Kali linux:安全渗透测试使用(网络安全)
    平台如:补天等

三.Linux开机与关机

<1>用户的登录方式
    命令行登录
    ssh登录:xshell方式(ctrl+鼠标调整字体大小)
    图形界面登录:本地用vware虚拟机
<2>关机
    sync #关机或重启前把内存中的数据存到硬盘
    shutdown #关机
    reboot #重启

四.Linux目录结构

/:根目录
/etc:配置文件
    网络配置目录:cd/etc/sysconfig/network-scripts
        默认的网络配置文件:network-scripts/ifcfg-eth0
            查看网络配置的命令:进到ifcfg-eth0文件中使用ifconfig命令
/home:用户的主目录,一般该目录名是以用户的账号命名的
/opt:给服务器安装额外的软件,这就是安装软件所摆放的目录。比如redis,mysql等
/root:超级权限者的用户主目录。
/usr:存放普通用户的很多应用程序和文件,类似于 windows 下的 program files 目录。
/tmp:存放临时文件的。(用完即丢的文件,比如安装包,解压完直接删了就行)
/var:存放日志文件的目录
/www:存放服务器网站相关的资源,如环境,网站的项目    

Snipaste_2022-01-08_23-18-54.png

/bin:存放着linux常用的命令。
/boot:存放的是启动 Linux 时使用的一些核心文件,包括一些连接文件以及镜像文件。
/dev :Device(设备) 的缩写, 存放的是 Linux 的外部设备(u盘等)
/mnt:实际中会把本地文件挂载这个目录下
/media:挂在外部设备,如光驱,u盘
/lib:基本依赖,类似于 Windows的动态连接库
/lost+found:存放突然关机的一些文件
/proc:系统映射,不用管    
/sbin:存放系统管理员使用的系统管理程序。
/usr/bin:系统用户使用的应用程序。
/usr/sbin:超级用户使用的比较高级的管理程序和系统守护程序。
/usr/src:内核源代码默认的放置目录。(把这个删了系统就没了)
/srv:存放服务启动之后需要提取的数据。    
/run:临时文件系统,不用管
/sys:存放文件系统 

五.Linux命令

1.文件(读写执行crud)
<1>目录管理
    ll 查看文件所以的信息包括权限 
    ls -参数:查看目录
        -a 查看所有文件,包括隐藏文件
        -l 查看文件信息,包含文件的属性和权限,看不了隐藏目录
        -al查看所有文件的信息,包含属性和权限,以及隐藏目录
    cd:切换目录(绝对路径以/开头,相对路径是..)
        cd / 返回到根目录
        cd .. 返回上一级目录
        cd ../目录名(相对路径)
        cd ~(回到当前用户目录)
    pwd:显示当前用户所在的目录
    touch:
        创建文本文档
    mkdirmkdir test
        mkdir -p test1/test2/test3(创建多级目录)
    rmdir:删除空的目录,如果目录里有文件,要先删除文件
        rmdir test(删除单个目录)
        rmdir -p test1/test2/test3(强制删除一个多级目录)
    cp:复制文件或目录
        cp 旧文件 新目录 (拷贝文件到目录,如果文件重复选择y覆盖或n放弃)
            eg:cp install.sh alex
    rm(移除文件或目录)
        -f:忽略不存在的文件,不会有警告,强制删除
        -r:递归删除目录
        -i:询问是否删除
        -rf:直接删除
            /:系统所有文件全部删除,千万不要用,删库跑路
                eg:rm -rf install.sh 
            删除多个文件
                eg:rm -rf alex alex02 test
    mv:移动文件或目录(相当于剪切),还可以重命名文件夹
        -f:强制移动
        -u:只替换已经跟更新的文件
            eg :mv install.sh alex/ (移动文件到目录下)
                mv alex alex2 (重命名文件夹)
    echo:输入字符串到文件中
<2>基本属性
    #更改用户对文件的操作权限
    chmod 777 xxx.txt#修改单个文件的权限
    chmod -R 777 xxx #修改整个文件夹包括里面的所有文件的权限
    
    #修改文件/文件夹所属组
    chown eupp:users xxx.txt
    chown -R eupp:users xxx.txt
<3>文件内容查看
    cat : 从第一行开始查看文件内容
        cat alex.txt
    tac : 从最后一行开始显示文件内容
    nl : 显示内容的同时显示行号
    more : 一页一页的显示文件内容(空格翻页,enter往下翻一行)
    less : 升级版more,可以翻页(空格翻页,上下键翻页面,q退出,/字符可以查找字符,n表示继续向下寻找,N向上寻找)
    head: 只看头几行
    tail: 只看最后几行
<4>硬链接与软链接(用来备份文件)
    硬链接:A-B,允许一个文件有多个路径,用户可以通过这种机制建立硬链接到重要文件上,防止误删,如果删了其中一个A,还可以通过B访问到文件
    软连接:类似windows的快捷方式,如果删除了源文件,快捷方式也访问不了文件
    创建链接:ln
        [root@userAlex home]# touch alex #创建alex源文件,没有后缀,是一个默认的文件
        [root@userAlex home]# ls
        alex  www
        [root@userAlex home]# ln alex alex02  #创建一个硬链接
        [root@userAlex home]# ls
        alex  alex02  www
        [root@userAlex home]# ln -s alex alex03 #创建一个软链接
        [root@userAlex home]# ls
        alex  alex02  alex03  www
        [root@userAlex home]# ll
        total 4
        -rw-r--r-- 2 root root    0 Jan  9 00:05 alex
        -rw-r--r-- 2 root root    0 Jan  9 00:05 alex02
        lrwxrwxrwx 1 root root    4 Jan  9 00:07 alex03 -> alex
        drwxr-xr-x 2 root root 4096 Jan  7 13:07 www
        [root@userAlex home]# echo "I love alex" >> alex  #给alex文件写入字符串
        [root@userAlex home]# cat alex
        I love alex
        [root@userAlex home]# cat alex02
        I love alex
        [root@userAlex home]# cat alex03
        I love alex
        [root@userAlex home]# rm -rf alex
        [root@userAlex home]# ls
        alex02  alex03  www
        [root@userAlex home]# cat alex02
        I love alex
        [root@userAlex home]# cat alex03 #alex03(软链接)快捷方式失效
        cat: alex03: No such file or directory
<5>vim编辑器
    三种命令模式:命令模式, 输入模式,底线命令模式
    用法:
        使用vim编辑文件就是进入了命令模式:vim alex.tex(如果alex存在就是直接编辑,如果不存在就会新建alex.txt文件)
        输入i切换到输入模式(编辑模式)
        键盘esc退出编辑模式进到命令模式
        输入:光标移动到最底下,进入底线命令模式
        输入wq保存并退出
     常用命令:
         :set nu(底线命令设置行号,用于看代码,比如配置文件)
         /字符(输入模式用于字符的搜索)
         n/N(配合/字符使用,向下或向上搜索字符)
2.权限(用户,用户组)
<1>用户账号管理(/etc/passwd是用户管理最重要的文件)
    useradd -参数: 使用root权限添加用户
        -m:自动创建这个用户的主目录/home/
        -G:创建用户的同时给用户分配用户组
        #linux一切皆文件,这里的添加用户其实就是往某一个文件中写入用户的信息(/etc/passwd)
    userdel -参数: 删除/etc/passwd系统文件中的用户记录
        -r:删除用户的时候将他的目录一起删掉(如果不加-r不会删文件)
    usermod -参数: 修改用户的有关属性,如用户号,主目录,用户组,登录shell等
        -d:更改目录
    eg:
        [root@userAlex home]# ls
        www
        [root@userAlex home]# useradd -m alex
        [root@userAlex home]# ls
        alex  www
        [root@userAlex home]# cat /etc/passwd
        alex:x:1000:1000::/home/alex:/bin/bash 
        [root@userAlex home]# userdel -r alex
        [root@userAlex home]# ls
        www
        [root@userAlex home]# cat /etc/passwd
        #可以看到配置文件中已经没有alex的用户信息了
        [root@userAlex home]# useradd -m alex
        [root@userAlex home]# usermod -d /home/111 alex
        [root@userAlex home]# ls
        alex  www
        [root@userAlex home]# cat /etc/passwd
        alex:x:1000:1000::/home/111:/bin/bash
        #虽然没创建111目录,配置文件中已经把alex用户的主目录位置改掉了,这样的话新建的用户文件会跑到111目录,文件不存在就会报错,所以最好切换文件前先创建出来目录

<2>linux下切换用户
    $ : 普通用户权限
    # :超级用户root权限
    su - username(username是用户名):切换普通用户
    sudo su:普通用户切换回root用户
    exit:退回到原来用户
<3>用户的密码修改
    超级用户权限:
        passwd username
    普通用户修改:
        当前用户下直接passwd
<4>锁定用户
    使用root权限冻结账号
    passwd -l alex #锁定之后用户alex就不能登录了
    passwd -d alex #没有密码也不能登录
<5>用户组管理
    groupadd 用户组名 : 创建用户组
        -g :指定id
            eg:group -g id名 用户组名 #创建用户组的同时指定id
    groupdel 用户组名 : 删除用户组
    groupmod 用户组名: 修改用户组信息
        -g :修改id
        -n 新名字 旧名字:修改名字          
    eg:
        [root@userAlex home]# groupadd jack
        [root@userAlex home]# cat /etc/group
        jack:x:1001:
        [root@userAlex home]# groupdel jack
        [root@userAlex home]# cat /etc/group
3.系统(磁盘,进程)    
<1>磁盘管理
    df:列出文件系统整体的磁盘使用量
        -h : 可视化,按照M查看
    du:检查磁盘空间的使用量
        -a: 查看所有文件,包括隐藏文件
        -sm /* : 检查根目录下每个文件占用的容量(/usr是系统初期最大的占用内存目录,很多文件和程序都在这儿)
    eg:
    [root@userAlex /]# df -h
    Filesystem      Size  Used Avail Use% Mounted on
    /dev/vda1        40G  3.5G   34G  10% /
    devtmpfs        868M     0  868M   0% /dev
    tmpfs           879M  8.0K  879M   1% /dev/shm
    tmpfs           879M  464K  878M   1% /run
    tmpfs           879M     0  879M   0% /sys/fs/cgroup
    tmpfs           176M     0  176M   0% /run/user/0
    [root@userAlex /]# cd home
    [root@userAlex /]# du -sm /* 
    0	/bin
    132	/boot
    1	/dev
    34	/etc
    1	/home
    0	/lib
    0	/lib64
    1	/lost+found
    1	/media
    1	/mnt
    1	/opt
    du: cannot access ‘/proc/29794/task/29794/fd/4’: No such file or directory
    du: cannot access ‘/proc/29794/task/29794/fdinfo/4’: No such file or directory
    du: cannot access ‘/proc/29794/fd/4’: No such file or directory
    du: cannot access ‘/proc/29794/fdinfo/4’: No such file or directory
    0	/proc
    1	/root
    1	/run
    0	/sbin
    1	/srv
    0	/sys
    1	/tmp
    1528	/usr
    483	/var
    1320	/www
    [root@userAlex home]# du -a
    4	./www
    4	./alex/.bash_history
    4	./alex/.bash_profile
    4	./alex/.bash_logout
    4	./alex/.bashrc
    20	./alex
    28	.

    补充:mac本或想使用liunx挂载本地磁盘或文件(mount:挂载(相当于Windows插入u盘),umount -f:卸载<相当于windows中拔出u盘>)
    

Snipaste_2022-01-09_01-57-12.png

<2>进程管理
    ps :查看当前系统中正在执行的各种进程信息
       -a:显示当前终端运行进程的所有信息
       -u:以用户的信息显示进程
       -x:显示后台运行进程的参数
       -aux | grep mysql:查看所有进程,并过滤出符合条件mysql的
       -ef|grep mysql:查看mysql父进程的信息
   pstree -pu : 通过目录树查看进程
   kill  :杀掉进程
       -9 xx(进程id):强制结束进程(写的java程序死循环了,就可以强制结束进程)
       
3.网络和服务管理命令

image.png

image.png

4.linux重定向
    <1>ll > a.txt#把ll的输出结果写到a.txt里面
    <2>ll >>a.txt#追加内容到a.txt

六.环境安装

image.png

安装软件一般有三种方式:rpm,解压缩,yum在线安装
1.rpm(下载安装jdk, 并在线发布一个springboot项目的全流程测试)
<1>.下载jdk rpm
<2>.安装java环境(注意linux的arm架构用的是arm的jdk版本)
    java --verison  : 检测当前系统是否存在java环境
    rpm -qa|grep jdk  :检测jdk版本
        jdk1.8.0_121-1.8.0_121-fcs.x86_64
    rpm -e --nodeps jdk1.8.0_121-1.8.0_121-fcs.x86_64  卸载jdk
    rpm -ivh jdk-8u65-linux-x64.rpm  : rpm方式下载jdk
<3>.配置环境变量(source /etc/profile让配置文件生效)
    vim /etc/profile  
    -i :编辑模式,在最后加入下面配置
    JAVA_HOME=/usr/java/jdk1.8.0_65
    CLASSPATH=%JAVA_HOME%/lib;%JAVA_HOME%/jre/lib
    PATH=$JAVA_HOME/bin;$JAVA_HOME/jre/bin
    export PATH CLASSPATH JAVA_HOME
    export PATH=/bin:/usr/bin:$PATH
<4>阿里云配置安全组打开端口
<5>.防火墙
    #查看防火墙的服务状态
    systemctl status firewalld
    #查看所有开启的防火墙
    firewall-cmd --list-ports(只看端口)
    firewall-cmd --list-all(查看全部)
    #开启防火墙端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent(9000是项目需要开启的端口)
    #重启防火墙
    systemctl restart firewalld.service
<6>发布一个springboot项目并访问
    生成的jar包通过xftps拉取到服务器->
    java -jar xx.jar ->
    阿里云公网访问
2.解压缩(tomcat -> 部署启动并通过外网访问)
ssm项目就需要打包成war包放在tomcat环境下运行
<1>.下载tomcat,官网下载 
    apache-tomcat-9.0.22.tar.gz
<2>.解压tomcat文件
    tar -zxvf apache-tomcat-9.0.22.tar.gz
<3>.启动tomcat并测试
    #执行
    ./startup.sh
    #停止
    ./shotdown.sh
<4>阿里云配置安全组打开端口
<5>打开防火墙
    #查看所有开启的防火墙
    firewall-cmd --list-ports(只看端口)
    #开启防火墙端口
    firewall-cmd --zone=public --add-port=9000/tcp --permanent(9000是项目需要开启的端口)
    #重启防火墙
    systemctl restart firewalld.service
<6>访问tomcat
    通过阿里云公网访问8080端口
<7>域名解析,真正所有人访问
3.yum在线安装(docker -> 直接安装运行跑起来)
<1>检测centos7
    [root@userAlex bin]# cat /etc/redhat-release
    CentOS Linux release 7.6.1810 (Core) 
<2>安装准备环境
    yum-y install 包名
<3>清除以前的版本
    yum remove docker 
    
    

七.shell脚本

1.是什么

shell是一个命令行解释器,接收应用程序/用户命令,然后调用操作系统内核    

image.png

2.为什么用

执行命令可以在linux后台输一行执行一行,也可以把一串儿命令写到一个文件里面,把文件交给linux执行,这个文件就是脚本文件们,这样就可以实现各种复杂的流程控制

3.怎么用

<1>linux提供的shell解析器

image.png

<2>shell脚本编写基本格式

开头第一行
#!bin/bash  (指定解析器)

<3>脚本常用执行方式

I.使用子shell进程

在当前环境下打开一个shell子进程,用来执行shell脚本文件
i.方式一

image.png

ii.方式二

image.png

II.不使用子shell进程

不会用到父子shell的嵌套环境,就是在当前环境下,把shell脚本里的命令每一行拿出来挨个儿执行
source
. 

image.png image.png

<4>shell编程——变量

4.shell脚本入门helloworld

使用shell脚本,输出一句heloworld

<1>.编写shell脚本

image.png

image.png

<2>.执行shell脚本

I.方式一

直接通过bash或者sh对脚本文件进行解析,sh本质上就是bash的一个软链接,所以用bash和用sh是一样的

image.png

II.方式二

i.不在当前目录下执行脚本文件
不通过解析器,直接输入脚本文件,让它执行    

image.png

ii.在当前目录下执行脚本文件

image.png

III.其他方式

image.png

5.shell完整内容

https://juejin.cn/editor/drafts/7135445211978661919