• Linux学习笔记


    1586185429977

    Author:Eric

    Version:9.0.1

    目录

    一、引言


    1.1 开发环境

    平时大家大多是在Windows或者Mac操作系统下去编写代码进行开发,在开发环境中安装大量的软件,这样会导致环境的稳定性和安全性降低

    1.2 生产环境

    是将程序运行在此环境中,供用户去使用。这个环境是有专业的人员去维护,一般人是没有权限去操做生产环境的

    1.3 测试环境

    一般克隆一份生产环境,会将开发环境中的程序部署到测试环境中,这个环境的主要目的是去程序进程检测,收集程序中的各种问题,并交给开发人员进行修改

    1.4 操作系统的选择

    生产环境中,常用的操作系统有Windows 2003 service,Linux,Unix等等,Linux操作系统,在生产环境中占据了大量的市场份额,Linux主要以稳定,可靠,免费的特点成为全球使用最多的服务器操作系统。

    Linux操作系统现在已经成为后台开发人员必备的技能,并且后期学习的各种知识都会涉及到Linux操作系统。

    二、Linux介绍


    2.1 Linux介绍

    在Linux操作系统出现之前,还有一个操作系统叫做Minix,Minix操作系统是由Andrew的大学教授研发出来的,当时大学教授是为了给学生上课,买了一套Unix操作系统,参考Unix自己写了一个操作系统,并且命名为Minix。同时将Minix开源,供学校内部的研究和教学,到了2000年,Andrew将Minix操作系统完全对外开源。

    Minix由于完全对外开源之后,在互联网上迅速的传播,但是大家在使用时,发现Minix不时很完美,内部存在各种各样问题。用户将问题解决后,编写了一个补丁,将补丁以邮件的方式发给Andrew,但是Andrew教授最初的目的只是为了教学和研究。

    于此同时,一位芬兰的大学生出现了,叫Linus,在Minix操作系统基础上,自己添加了一些补丁和插件,并将其命名为Linux操作系统,并且完全对外开源,而且开始维护Linux操作系统。

    之前学习的Git也时Linus研发的。

    Linus Torvalds 和 Linux
    1586225837185

    2.2 Linux的版本

    Linux的版本分为两种,一种是Linus团队正在维护的开源内核版本。另一种是一些厂商基于内核版本封装的发行版本。

    • Linux的内核版本官网:https://www.kernel.org/

    • Linux的发行版本,咱们需要学习的发行版本就时CentOS

    Linux的常见发行版本
    1586227096086

    2.3 Linux和Windows区别

    • Linux是严格区分大小写的,Windows无所谓。
    • Linux中一切皆是文件。
    • Linux中文件是没有后缀的,但是他有一些约定俗成的后缀。
    • Windows下的软件一般是无法直接运行的Linux中。

    Ps:我们在学习Linux时,参考Windows下做了什么,就在Linux中做什么

    三、Linux安装


    3.1 安装VMware

    傻瓜式安装,下一步下一步下一步……

    3.2 安装Xterm

    解压即可以使用……

    3.3 在VMware中安装Linux

    按照下图步骤,逐步安装Linux操作系统……‘

    3.3.1 选择安装方式
    选择安装方式
    1586231357367
    3.3.2 指定镜像方式
    选择稍后安装操作系统
    1586231394510
    3.3.3 选择操作系统类型
    选择操作系统类型
    1586231434814
    3.3.4 指定虚拟机名称
    指定虚拟机名称,和安装目录
    1586231466922
    3.3.5 磁盘存储方式
    拆分成多个文件存储
    1586231519493
    3.3.6 指定虚拟机配置

    网络适配器设置为:NAT模式

    指定虚拟机的设置
    1586231619526
    3.3.7 开始安装CentOS
    开始界面选择语言
    1586231719094
    3.3.8 配置虚拟机网络连接
    配置安装位置以及网络和主机名(开启)
    1586231811319
    3.3.9 开始安装
    9、开始安装后,设置ROOT用户的密码
    1586231864794
    3.3.10 安装成功
    10、安装成功,并登录
    1586232093005

    3.4 使用Xterm连接Linux

    直接在Vmware中操作Linux有很多限制,我们可以在图形化界面中操作Linux操作系统

    具体步骤如下……

    3.4.1 查看ip地址
    查看ip地址
    1586238155779
    3.4.2 通过Xterm连接
    连接上Linux
    1588919972667
    连接成功
    1586238257999

    四、Linux的目录结构


    Windows的目录结构是带有盘符的。D: E: C:,而Linux中是没有盘符的

    在Xterm中输入ls / 查看Linux的顶级目录。

    ls /
    1586239207504

    Linux的常用目录……

    Linux目录树状图
    1586239342796
    • root:该目录为系统管理员HOME目录
    • bin:这个目录下放着经常使用的命令
    • boot:这里存放的是启动Linux时的一些核心文件
    • etc:存放系统管理所需要的配置文件和子目录
    • home:普通用户的HOME目录
    • usr:默认安装软件的目录,类似Windows中的Program Files目录
    • opt:是主机额外安装软件拜访的目录

    五、Linux的基本命令


    Linux中命令的基本格式:命令 【选项】 【参数】

    需要注意,个别命令是不遵循这个格式

    当命令中有多个选项时,可以写在一起的,并且选项也是由简写方式的 命令 -选项A选项B

    Linux的基本操作命令,不遵循上述格式,但是后期会经常使用……

    # 1. 我是谁
    who am i
    
    # 2. 我在哪
    pwd
    
    # 3. 查看ip 地址
    ip a | ip address
    
    # 4. 清屏
    clear
    
    # 5. ping域名|ip
    ping 地址
    
    # 6. 强制停止
    Ctrl + C
    

    六、Linux目录命令【重点


    6.1 列出目录

    查看指定目录下的内容,默认查看当前目录下内容

    Linux中的隐藏文件是以.开头的,当前目录使用.表示,上一级目录使用..表示

    ls [-ald] [目录名]
    # 目录名不填写,默认为当前目录。
    # -a:列出的全部的文件,包括隐藏文件
    # -l:列举出全部的信息
    # -d:仅查看目录本身
    

    6.2 切换目录

    实现目录间切换,使用绝对路径、相对路径、特殊符号

    cd 具体路径 | 特殊符号
    
    特殊符号 表达的路径
    . 当前目录
    .. 上一级目录
    / 根目录
    ~ 当前登录用户的HOME目录
    - 返回

    6.3 创建目录

    创建目录,以及创建多级目录方式

    mkdir [-p] 目录名
    # -p:代表创建多级目录时,使用
    

    6.4 删除目录

    删除非空目录或包含内容的目录

    # 只能删除空目录
    rmdir 目录名
    
    # 删除非空目录
    rm [-rf] 目录名
    # -r:代表递归删除目录下的全部内容
    # -f:不询问,直接删除
    

    6.5 复制目录

    复制目录下的全部内容

    cp -r 来源目录 目标目录
    # -r:递归复制全部内容,必填项
    

    6.6 移动、重命名目录

    移动、重命名目录,会根据第二个参数指定具体操作逻辑

    mv 目录名 新目录名 | 路径
    # 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动
    

    七、Linux的文件命令【重点


    7.1 创建文件

    创建空文件

    touch 文件名1 文件名2 ……
    

    7.2 编辑文件

    编辑文件,后期最常的命令之一

    vi 文件名 				# 查看文件。(查看模式)
    i | a | o   		  # 进入编辑模式。(编辑模式)
                          # i:在当前光标处,进入编辑模式。 
                          # a:在当前光标后一格,进入编辑模式。 
                          # o:在当前光标下一行,进入编辑模式。
    esc				      # 退出编辑模式,回到查看模式。
    :				      # 从查看模式进入到底行命令模式。(底行命名模式)
                          # 在底行命令模式下,输入wq:保存并退出。输入q!:不保存并退出
                          # 在查看模式下,摁ZZ,可以快速保存并退出。
    
    vi/vim工作模式

    7.3 vi文件时,其他操作

    编辑文件时,常用的快捷键,方便操作

    # 在vi文件时,在底行命令模式下可以输入以下常用内容
    # 行号操作
    set nu              # 查看文件的行号
    to rownum           # 快速的跳转到指定行
    set nonu            # 取消行号
    # 搜索操作
    /word               # 类似Windows的Ctrl + F搜索文件中的具体内容所在位置,查看下一个可以输入字母n
    # 快速定位
    G                   # 快速跳转到最后一行
    gg                  # 快速跳转到第一行
    

    7.4 查看文件

    根据不同的业务,可以选择不同的查看方式

    # 查看文件,直接展示到最后一行
    cat 文件名
    
    # 倒序查看文件内容,展示全部
    tac 文件名
    
    # 显示文件的用时,展示行号
    more 文件名
    # 查看大文件时,可以一页一页的向下翻
    # space向下翻页,退出时按q
    
    less 文件名
    # 查看大文件时,可以任意的向上或者向下翻
    # 向上或向下翻页摁PageUp和PageDown,一行一行查看,摁光标的↑↓
    
    # 只查看前几行
    head -n 文件名
    
    # 只查看后几行
    tail -n 文件名
    # tail -f 日志 监控日志
    

    7.5 移动、重命名文件

    移动、重命名文件,会根据第二个参数指定具体操作逻辑

    mv 文件名 新文件名 | 路径
    # 如果第二个参数指定的路径不存在,就是重命名,如果第二个参数的路径存在,就是移动
    

    7.6 复制文件

    复制文件到指定目录下

    cp 文件名 目录
    

    7.7 删除文件

    删除文件方式

    rm [-f] 文件名
    # -f:是否询问
    

    八、Linux的压缩包命令【重点


    8.1 针对tar命令

    Linux中常用的压缩包,大多是.tar,.tar.gz,tgz的

    8.1.1 解压压缩包

    针对压缩包后缀的情况,采用不同的参数,否则可能会损失文件

    tar [-zxvf] 压缩包名称 [-C 路径]
    # -z: 代表压缩包后缀是.gz的
    # -x: 代表解压
    # -v: 解压时,打印详细信息
    # -f: -f选项必须放在所有选项的最后,代表指定文件名称
    # -C 路径: 代表将压缩包内容解压到指定路径
    
    8.1.2 打包成压缩包

    可以将多个文件以及目录打包成压缩包,根据选择的参数指定压缩包名

    tar [-zcvf] 压缩包名称 文件1 文件2 目录1 目录2 ...
    # -c: 代表打包
    # 其他参数同上
    

    8.2 针对zip类型压缩包

    Linux不仅仅针对tar类型的压缩包,也支持zip,rar这种Windows下的压缩包。

    不过需要安装软件针对对各种类型压缩包的操作

    8.2.1 安装软件
    yum -y install zip     # 打包程序
    yum -y install unzip   # 解压程序
    
    8.2.2 解压以及打包
    # 解压
    unzip 压缩包名称
    
    # 打包
    zip 压缩包名称 文件1 文件2 目录1 目录2 ...
    

    九、用户&用户组的操作


    9.1 用户的常用操作命令

    Linux是一个多用户的操作系统,任何一个用户想要操作Linux操作系统,必须向系统管理员申请一个账号才可以,并且以这个账号的身份去操作Linux。

    用户的账号一方面可以帮助系统管理员追踪当前用户的操作。另一方面可以控制当前用户对系统资源访问。

    Linux用户分类

    超级用户:root uid=0

    普通用户:uid 500-60000

    用户组

    每个用户组可以包含多个用户

    每个用户至少属于一个用户组

    配置文件详解

    /etc/passwd 保存用户信息 用户名:密码位:UID:GID:描述信息:宿主目录:命令解析器

    /etc/shadow 保存密码信息

    /etc/group 保存用户组信息 组名:组密码位:GID:组内用户列表

    /etc/gshadow 保存用户组密码信息

    9.1.1 用户的创建
    useradd [-cgd] [选项指定的具体内容] 用户名
    # -c:代表comment,给用户添加一段注释
    # -g:代表group,可以修改用户的所在组
    # -d:代表指定用户的HOME目录
    
    9.1.2 设置用户密码
    passwd 用户名
    
    9.1.3 切换用户
    su 用户名
    # [root@localhost ~]#   -> root用户在本地登录,并且当前在~目录下,#代表是超级管理员
    # [qf@localhost ~]$		-> qf用户在本地登录,并且当前在~目录下,$代表是普通用户
    
    9.1.4 删除用户
    userdel [-r] 用户名
    # -r: 代表删除用户的同时,删除该用户的HOME目录
    
    9.1.5 修改用户
    usermod [-cgd] [选项指定的具体内容] 用户名
    # -c:代表comment,给用户添加一段注释
    # -g:代表group,可以修改用户的所在组
    # -d:代表指定用户的HOME目录
    

    9.2 用户组的操作

    用户的身份除了用户本身,还会分配到指定的用户组,可以通过用户组对设置一些文件的操作权限

    9.2.1 创建用户组
    groupadd 用户组名
    
    9.2.2 修改用户组
    groupmod [-n] [选项指定的具体内容] 用户组名
    # -n 修改用户组名称
    
    9.2.1 删除用户组
    groupdel 用户组名
    # 只能删除不存在用户的用户组
    

    十、文件权限的修改【重点


    首先我们要清楚Linux文件的权限信息

    在Linux中输入ls -l 或者 ll查看文件和目录的详细信息

    文件详情
    1586268971368

    实例中,a目录的第一个属性用“d”标识这个a是一个目录。

    anaconda-ks.cfg第一个属性用“-”标识他是一个文件。

    在Linux文件详情的后面属性需要分为三组查看

    • rwx: 代表文件拥有者的权限
    • rwx: 代表文件所属组用户的权限
    • rwx: 代表其他用户对当前文件的操作权限
      • r: 代表read,读的权限
      • w: 代表write,写的权限
      • x: 代表execute,代表执行权限

    其余信息

    • 后续的第一个root:代表当前文件的拥有者

    • 后续的第二个root: 代表当前文件的所属组

    • 后续分别为:文件的大小和最后修改时间等信息

    10.1 对文件的权限修改

    使用chmod对文件的权限进行修改,一种使用数字,一种使用符号……

    • 数字方式方便操作,不过要修改整体权限信息
    • 符号方式更细粒度华,不过操作麻烦
    10.1.1 数字方式
    chmod [-R] 777 文件|目录
    # rwx在这三个权限中r:4,w:2,x:1
    # -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
    
    10.1.2 符号方式
    chmod [-R] a=rw 文件|目录
    # user:u,group:g,other:o,all:a
    # read:r,write:w,execute:x
    # 赋予权限的方式 , 添加:+,减掉:-,设定:=
    # -R: 当修改一个目录权限时,可以添加-R,将目录下的全部内容,都修改权限。
    

    10.2 文件拥有者及所属组修改

    chown可以直接修改拥有者和所属组,chgrp只能修改所属组……

    # 修改文件的拥有者和所属组
    chown [-R] 拥有者:所属组 文件|目录
    # 修改文件的拥有者
    chown [-R] 拥有者 文件|目录
    # 修改文件的所属组
    chgrp [-R] 所属组 文件|目录
    

    十一、Linux的其他操作命令【重点


    11.1 进程的操作

    需要用到类似Windows的结束进程时,在Linux下需要使用如下命令

    ps -ef 
    # 查看全部正在运行的进程
    ps -ef | grep 搜索的内容
    # 杀死进程
    kill -9 pid
    

    11.2 服务的操作

    和Windows下的服务操作一致,只需使用如下命令,默认为centos7版本

    # 针对服务的启动,停止,重启,开机自动启动,禁止开机自动启动,查看服务状态。
    systemctl start|stop|restart|enable|disable|status 服务名称
    

    11.3 端口号查看

    如发现端口号被占用,可以使用如下方式查找pid,并结束进程

    # 想使用指定的命令需要事先下载netstat
    yum -y install net-tools
    # 查看端口号占用情况
    netstat -naop | grep 端口号
    

    11.4 访问地址

    类似浏览器访问路径,无法图形化显示,一般用于测试

    curl 访问地址
    

    11.5 查找文件

    在Linux中查找指定文件,参数较多,如下为根据文件名称查询

    find -name 文件名称
    find 路径 -name 文件名称
    
    例子:
    find -name 1.txt
    find /root -name 1.txt
    

    十二、Linux下安装软件【重点


    12.1 安装JDK

    在Linux下安装JDK,并配置JAVA_HOME环境变量……

    12.1.1 下载JDK的压缩包

    去逛网下载压缩包,由于oracle官网更新,需要登录并同意协议才允许下载

    https://www.oracle.com/java/technologies/javase-jdk8-downloads.html

    12.1.2 将jdk压缩包拉取到Linux系统中

    需要使用图形化界面的Sftp拖拽到Linux操作系统

    Xterm的Sftp图
    1589258771046
    12.1.3 将jdk的压缩包解压

    后期大多软件都安装在/usr/local下,直接使用tar解压

    tar -zxvf jdk-8u241-linux-x64.tar.gz -C /usr/local
    
    12.1.4 将jdk的目录名修改一下

    为了方便配置环境变量,修改一下目录名称

    cd /usr/local
    mv jdk1.8.0_241 jdk
    
    12.1.5 配置环境变量

    Linux提供了两种环境变量的文件

    • 第一个是用户级别的环境变量,存放在:~/.bashrc
    • 第二个是系统级别的环境变量,存放在:/etc/profile

    修改哪个文件都可以,毕竟虚拟机就我们自己使用

    # 在环境变量文件中,添加如下内容
    export JAVA_HOME=/usr/local/jdk
    export PATH=$JAVA_HOME/bin:$PATH
    # 重新加载环境变量文件
    source /etc/profile
    # 最终测试
    java -version
    
    测试效果
    1586307863331

    12.2 安装MySQL

    在MySQL下用yum的方式安装MySQL……

    12.2.1 安装MySQL的YUM存储库

    使用wget下载即可,不过需要先下载wget,再通过wget下载rpm包

    # 首先通过yum下载wget命令
    yum -y install wget
    # 通过wget下载MySQL存储库
    wget https://dev.mysql.com/get/mysql80-community-release-el7-3.noarch.rpm
    
    12.2.2 安装下载好的rpm包

    使用rpm包的命令直接安装

    # 安装rpm包
    rpm -Uvh mysql80-community-release-el7-3.noarch.rpm
    # 查看rpm包
    rpm -qa | grep 内容
    # 卸载rpm  (不需要指定当前命令。。。)
    rpm -e --nodeps rpm名称
    
    12.2.3 选择发行版本

    由于默认安装8.0版本的MySQL,我们需要修改为5.7版本

    # 查看一下默认选择的发行版本
    yum repolist all | grep mysql
    # 通过编辑/etc/yum.repos.d/mysql-community.repo文件,去修改发行版本
    # 将80的enabled更改为0,将67的enabled更改为1,保存即可,再次通过yum repolist all | grep mysql查看
    # 效果如下
    
    MySQL安装版本
    1586309805089
    12.2.4 安装MySQL社区版服务

    开始安装,这一步需要下载一段时间,下载失败就是网络较差了

    yum -y install mysql-community-server
    
    12.2.5 启动MySQL服务,并连接

    安装成功后,手动启动,并使用日志中的密码登陆,而且第一个操作必须是修改密码,才可后续正常操作

    # 启动MySQL服务
    systemctl start mysqld.service
    # 查看初始化密码
    grep 'temporary password' /var/log/mysqld.log
    # 连接MySQL服务
    mysql -u root -p
    Enter password:随机密码
    # 修改密码
    mysql> ALTER USER 'root'@'localhost' IDENTIFIED BY 'P@ssw0rd';
    # 要求密码,必须携带大写字母,小写字母,数字,特殊符号
    
    12.2.6 开启远程连接

    默认MySQL禁止远程链接,需要单独创建一个用户开启远程链接,这样就可以在windows下使用图形化工具连接

    mysql> GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY 'P@ssw0rd' WITH GRANT OPTION;
    mysql> FLUSH PRIVILEGES;
    

    12.3 安装Tomcat

    在Linux下安装Tomcat,以便部署工程到Linux操作系统

    12.3.1 下载Tomcat的压缩包

    通过wget直接下载即可

    wget https://mirror.bit.edu.cn/apache/tomcat/tomcat-8/v8.5.56/bin/apache-tomcat-8.5.56.tar.gz
    
    12.3.2 解压压缩包

    一样解压到/usr/local目录下

    tar -zxvf apache-tomcat-8.5.53.tar.gz -C /usr/local
    
    12.3.3 启动Tomcat并监听日志

    通过./执行可运行文件,并使用tail监控日志信息

    # 跳转到tomcat的bin目录
    cd /usr/local/apache-tomcat-8.5.53/bin
    # 启动
    ./startup.sh
    # 监控日志
    cd ../logs
    tail -f catalina.out
    # 启动成功如下
    
    日志及Tomcat首页
    1586313889843
    1586313916362

    十三、部署SSM工程


    部署项目到Linux中需要注意一下内容:

    • 项目要保证在Windows下是没有问题的,再考虑部署到Linux。
    • 将开发环境中的内容更改为测试环境。
      • 连接数据库的信息。
      • 存放文件的路径。
      • 日志文件存放的位置。
      • 项目路径问题。
    • 将Maven项目打包。
    • 根据项目路径的不同,将项目部署到Tomcat中。
    • 在部署到Linux操作系统中后,一定要查看日志。

    打包:mvn clean package -DskipTests

  • 相关阅读:
    .NETCORE微服务架构--网关篇(Ocelot)
    Hangfire实战--添加DashBoard登录权限
    IIS发布-HTTP谓词限制访问
    基于Dapper的泛型Repository
    .Net Framework JWT验证
    .Net Framework swagger 进阶----头部参数
    .Net Framework下安装api swagger
    ErrorSet
    201907总结
    博客美化
  • 原文地址:https://www.cnblogs.com/lidelong/p/14576907.html
Copyright © 2020-2023  润新知