Linux基本使用和安装

Linux

Linux基础

Linux历史

  • 内核和发行版

    内核:只提供操作系统的基本功能和特性,如内存管理,进程调度,文件管理等等。

    Linux内核: https://www.kernel.org/

    发行版:基于linus维护的linux内核,是由一些厂商集成了漂亮易用的桌面和常用的软件而发布的商品。

  • 常见发行版

    • RedHat

      应该称为Redhat系列,包括RHEL(Redhat Enterprise Linux,也就是所谓的Redhat Advance Server,收费版本)、Fedora Core(由原来的Redhat桌面版本发展而来,免费版本)、CentOS(RHEL的社区克隆版本,免费)。Redhat应该说是在国内使用人群最多 的Linux版本,甚至有人将Redhat等同于Linux,而有些老鸟更是只用这一个版本的Linux。所以这个版本的特点就是使用人群数量大,资料非 常多,言下之意就是如果你有什么不明白的地方,很容易找到人来问,而且网上的一般Linux教程都是以Redhat为例来讲解的。

    • Ubuntu

      国内乃至全球热门的Linux发行版。也是各种推荐入门Linux爱好者安装的一个Linux发行版。它的特点主要有以下:

      1.安装简单
      
      2.Unity 3D图形界面,比较华丽(因人而异)
      
      3.对一些专有驱动支持比较好,例如显卡驱动
      
      4.社区比较活跃,几乎遇到的问题都可以找到答案
      
    • Debian

      几大基础发行版之一,Ubuntu就是基于Debian的。它的基本有如下特点:

      1.Free,最符合开源精神的发行版。默认不包含任何专有驱动
      
      2.不求新,但求稳。软件包通常选择比较稳定的版本而不是最新的版本
      
      3.系统的开发维护完全是由社区驱动的
      
      4.APT软件包管理
      
      5.图形化安装方式对新手友好
      
    • Fedora

      经常和Ubuntu比较的发行版,和Ubuntu最大的不同可能就是包管理不一样吧,其特点如下:

      1.YUM包管理(新的包管理方式正在研发中)
      
      2.新技术吸纳较快,所以喜欢尝试新技术的可以选择它
      
      3.官网提供多种桌面环境镜像,可以满足不同桌面喜好的用户(默认是Gnome)
      
      4.由红帽赞助
      
      5.基本半年发布一个新版本
      
    • openSUSE

      SUSE Linux的open版本,来自德国的发行版,它基本有如下特点:

      1.基于的是企业级的SUSE Linux再加上德国制造,所以非常稳定
      
      2.华丽的KDE桌面,业界称为“最华丽的Linux发行版"
      
      3.安装镜像提供多个桌面环境
      
      4.包管理(YaST)倾向于图形化管理,图形界面用户友好程度要高一些
      
      5.官网提供常规版本和滚动发行版本
      
    • CentOS

      现在是大名鼎鼎的RedHat Linux的社区版(可以说是剔除了专有代码的RedHat),其特点就是相当相当的稳定,版本更新紧跟RedHat。非常适合作为服务器操作系统使用。

  • Linux应用领域

    1.基于Linux的企业服务器

    2.嵌入式应用

  • Linux于Windows的不同

    1.Linux严格区分大小写

    2.Linux中所有内容都以文件形式保存,包括硬件.

    3.Linux不靠拓展名区分文件类型:

    压缩包:“.gz”,“.bz2",".tar.bz2”,"*.tgz"等

    二进制软件包:“*.rpm”

    网页文件:“.html",".php”

    脚本文件:“*.sh”

    配置文件:“*.conf”

    4.Windows下的程序不能直接在Linux中安装和运行

  • 字符界面的优势

    优势一:字符界面占用的系统资源更少.

    优势二:字符界面减少了出错,被攻击的可能性.

系统安装

  • 安装虚拟机VMware

  • 安装操作系统CentOS

  • 上阿里云/腾讯云

    阿里云

    https://www.aliyun.com/minisite/goods?taskPkg=amb618all&pkgSid=442814&recordId=4183761&userCode=sd4xtwwm

    腾讯云

    https://curl.qcloud.com/2TR7nsvg

    新人服务

    https://curl.qcloud.com/rtzmaEIA

Linux管理

常用的一些命令

熟能生巧,每个命令下去后需要敲三遍以上.

  • 2.1.0 系统目录结构

    1、/- 根

    每一个文件和目录从根目录开始。

    只有root用户具有该目录下的写权限。请注意,/root是root用户的主目录,这与/不一样

    2、/bin中 - 用户二进制文件

    包含二进制可执行文件。

    在单用户模式下,你需要使用的常见Linux命令都位于此目录下。系统的所有用户使用的命令都设在这里。

    例如:ps、ls、ping、grep、cp

    3、/sbin目录 - 系统二进制文件

    就像/bin,/sbin同样也包含二进制可执行文件。

    但是,在这个目录下的linux命令通常由系统管理员使用,对系统进行维护。例如:iptables、reboot、fdisk、ifconfig、swapon命令

    4、/etc - 配置文件

    包含所有程序所需的配置文件。

    也包含了用于启动/停止单个程序的启动和关闭shell脚本。例如:/etc/resolv.conf、/etc/logrotate.conf

    hosts:设备名称(或域名)到ip地址的解析,相当于本地存在的dns功能。

    5、/dev - 设备文件

    包含设备文件。

    这些包括终端设备、USB或连接到系统的任何设备。例如:/dev/tty1、/dev/usbmon0

    6、/proc - 进程信息

    包含系统进程的相关信息。

    这是一个虚拟的文件系统,包含有关正在运行的进程的信息。例如:/proc/{pid}目录中包含的与特定pid相关的信息。

    这是一个虚拟的文件系统,系统资源以文本信息形式存在。例如:/proc/uptime

    7、/var - 变量文件

    var代表变量文件。

    这个目录下可以找到内容可能增长的文件。

    这包括 - 系统日志文件(/var/log);包和数据库文件(/var/lib);电子邮件(/var/mail);打印队列(/var/spool);锁文件(/var/lock);多次重新启动需要的临时文件(/var/tmp);

    8、/tmp - 临时文件

    包含系统和用户创建的临时文件。

    当系统重新启动时,这个目录下的文件都将被删除。

    9、/usr - 用户程序

    包含二进制文件、库文件、文档和二级程序的源代码。

    /usr/bin中包含用户程序的二进制文件。如果你在/bin中找不到用户二进制文件,到/usr/bin目录看看。例如:at、awk、cc、less、scp。

    /usr/sbin中包含系统管理员的二进制文件。如果你在/sbin中找不到系统二进制文件,到/usr/sbin目录看看。例如:atd、cron、sshd、useradd、userdel。

    /usr/lib中包含了/usr/bin和/usr/sbin用到的库。

    /usr/local中包含了从源安装的用户程序。例如,当你从源安装Apache,它会在/usr/local/apache2中。

    10、/home - HOME目录

    所有用户用home目录来存储他们的个人档案。

    例如:/home/john、/home/nikita

    11、/boot - 引导加载程序文件

    包含引导加载程序相关的文件。

    内核的initrd、vmlinux、grub文件位于/boot下。

    例如:initrd.img-2.6.32-24-generic、vmlinuz-2.6.32-24-generic

    12、/lib - 系统库

    包含支持位于/bin和/sbin下的二进制文件的库文件.

    库文件名为 ld或lib.so.*

    例如:ld-2.11.1.so,libncurses.so.5.7

    13、/opt - 可选的附加应用程序

    opt代表可选的。

    包含从个别厂商的附加应用程序。

    附加应用程序应该安装在/opt/或者/opt/的子目录下。

    14、/mnt - 挂载目录

    临时安装目录,系统管理员可以挂载文件系统。

    15、/media - 可移动媒体设备

    用于挂载可移动设备的临时目录。

    举例来说,挂载CD-ROM的/media/cdrom,挂载软盘驱动器的/media/floppy;

    16、/srv - 服务数据

    srv代表服务。

    包含服务器特定服务相关的数据。

    例如,/srv/cvs包含cvs相关的数据。

  • 2.1.1 ssh协议

    ssh (安全外壳协议):

    ssh为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协议。SSH 是目前较可靠,专为远程登录会话和其他网络服务提供安全性的协议。利用 SSH 协议可以有效防止远程管理过程中的信息泄露问题。SSH最初是UNIX系统上的一个程序,后来又迅速扩展到其他操作平台。SSH在正确使用时可弥补网络中的漏洞。SSH客户端适用于多种平台。几乎所有UNIX平台—包括HP-UX、Linux、AIX、Solaris、Digital UNIX、Irix,以及其他平台,都可运行SSH。

  • 2.1.2 命令基本格式

    • 命令提示符

      [root@localhost ~]#

      其中:

      root			当前登陆用户
      
      localhost	主机名
      
      ~				当前所在目录(家目录) 
      
      				如果是root代表/root;
      
      				如果是普通用户user1代表/home/user1
      
      #				超级用户的提示符#
      
      				普通用户提示符$				
      
    • 命令格式

      命令 [选项] [参数]

      注意: 个别命令的使用不遵循次格式

      	当有多个选项时,可以写在一起
      
      	简化选项与完整选项
      
      	-a 等于 --all
      
    • 查询目录中内容:ls

      ls [选项] [文件或目录]

      选项:

      -a	显示所有文件,包括隐藏文件
      
      -l	显示详细信息
      
      -h	人性化显示文件大小
      

      ls -a :查看所有

      ls -l :查看详情

      ls -h :人性化查看详情

      ll :ls-l的缩写 通过: alias ll 看快捷方式

      ls -alh:所有

  • 2.1.3 文件处理命令

    在Linux中一切皆文件

    文件夹也是文件

    • 查询所在目录位置:pwd

      pwd

      命令英文原意:print working directory

    • 切换所在目录:cd

      cd [目录]

      命令英文原意: change directory
      

      简化操作:

      cd ~ :切换到用户目录(家目录)

      cd :切换到用户目录

      cd - :切换到上一个访问目录

      cd … :切换到上一级目录

      cd . :切换到当前目录

      pwd

      命令英文原意:print working directory

    • 创建文件:touch

      touch 文件名

      touch 文件名 :创建文件

    • 建立目录:mkdir

      mkdir -p [目录名]

      -p 递归创建
      
      命令英文原意: make directories
      

      mkdir 目录名 :创建目录

      mkdir -p xx/yyy/zz :创建多级目录

    • 删除空目录:rmdir

      rmdir [目录名]

      命令英文原意:remove empty directory

      rmdir 目录 :删除目录(目录为空时执行)

    • 删除文件或目录:rm

      rm -rf [文件或目录]

      命令英文原意:remove

      选项:

      -r		递归删除目录
      
      -f		强制
      

      rm -r 目录 :递归文件夹 带提示

      rm -f 文件 :删除文件

      rm -rf 文件/文件夹 :递归删除,无提示

      禁止: rm -rf /* 删除所有文件

    • 复制命令:cp

      cp [选项] [原文件或目录] [目标目录]

      命令英文原意:copy

      选项:

      -r		复制目录
      

      cp 源文件 备份文件 :备份文件

      cp -r 源目录 目标目录

    • 剪切或改名命令:mv

      mv [原文件或目录] [目标目录]

      命令英文原意:move

      mv 文源文件件 目标文件目录 :剪切

      mv 源文件 不存在的文件 :重命名

      mv 源文件 文件夹/不存在的文件 :剪切重命名

  • 2.1.4 文件搜索命令

    • 命令搜索命令

      • whereis

        whereis 命令名

        #搜索命令所在路径及帮助文档所在位置

        选项:

        -b 只查找可执行文件

        -m 值查找帮助文件

        whereis 命令名 :搜索命令所在来的路径与帮助文档所在的位置

      • which

        which 命令名

        #搜索命令所在路径及别名

        which 命令名:搜索命令所在路径与别名

      • PATH环境变量

        PATH环境变量:定义的是系统搜索命令的路径

        相当于window下的path

        echo $PATH : 查看环境变量

    • 文件搜索命令:find

      find [搜索范围] [搜索条件]

      • 按文件名查询

        find / -name install.log

        #避免大范围搜索,会非常耗费系统资源

        #find是在系统当中搜索符合条件的文件名.如果需要匹配,使用通配符匹配,通配符是完全匹配

        find / -name install*.log

        find /root -iname install.log #按名字查询: 不区分大小写

      • 按时间查询

        find /var/log -mtime +10

        #查找10天前修改的文件

        -10 10天内修改文件

        10 10天当天修改的文件

        +10 10天前修改的文件

        atime 文件访问时间

        ctime 改变文件属性时间

        mtime 修改文件时间

      • 按文件大小查询

        find / -size 25k

        #查找文件大小是25KB的文件,注意k是小写的.

        -25k 小于25KB的文件

        25k 等于25KB的文件

        +25k 大于25KB的文件

        find / -size 25M

        #查找文件大小是25MB的文件,注意M是大写的.

      • 按文件用户查询

        find /root -user root #按照所有者搜索

        find /root -nouser #查找没有所有者的文件

    • 字符串搜索命令:grep

      grep [选项] 字符串 文件名

      #在文件当中匹配符合条件的字符串

      选项:

      -i	忽略大小写
      
      -v	排除指定字符串
      

      cat anaconda-ks.cfg 查看内容

      grep timezone anaconda-ks.cfg

      经典使用:

      ps -ef | grep java

    • find命令和grep命令的区别

      find命令:在系统中搜索符合条件的文件名.

      grep命令:在文件中搜索符合条件的字符串.

  • 2.1.5 帮助命令

    • man命令

      man ls

      #查看ls的帮助

      man 命令名 :查看帮助命令 f b 键翻页 q退出

    • 选项帮助

      命令 --help

      #获取命令选项的帮助

      实例:

      ls --help
      

      命令 --help :简洁版帮助

      但是不适用内部命令,如cd:

      help cd

      命令特殊时,使用

      help 命令 比如: help cd

  • 2.1.6 压缩与解压缩命令

    • .zip格式

      • 压缩

        zip 压缩文件名 原文件

        #压缩文件

        zip -r 压缩文件名 原文件

        先安装zip 软件

        yum install zip

        yum install -y zip : 不带确认的安装

        卸载: yum remove

        zip 压缩文件名 原文件 :压缩文件

        zip a.zip a.txt

        zip -r 压缩文件名 原文件夹 :递归要是文件夹 【如果不指定递归压缩,仅仅是压缩文件夹】

        zip -r bb.zip bb

      • 解压

        unzip 压缩文件

        #解压缩.zip文件

        unzip 压缩文件名 ;解压

        zip 压缩文件名 原文件

        #压缩文件

        zip 压缩文件名 原文件 :压缩文件

        zip a.zip a.txt

        zip -r 压缩文件名 原文件夹 :递归要是文件夹 【如果不指定递归压缩,仅仅是压缩文件夹】

        zip -r bb.zip bb

    • .tar.gz格式

      • 压缩

        tar -zcvf 压缩包名.tar.gz 源文件

        选项:

        -z 压缩为.tar.gz格式

        -c 打包

        -v 显示过程

        -f 指定打包后的文件名

        tar -zcvf learn.tar.gz learn

      • 解压

        tar -zxvf 压缩包名.tar.gz

        选项:

        -z		压缩为.tar.gz格式
        
        -x		解压缩.tar.gz格式
        
        -v		显示过程
        
        -f		指定打包后的文件名
        

    #加上-C表示解压到指定的目录

    tar -zxvf 压缩包名.tar.gz -C 指定目录

    解压:

    tar -zxvf learn.tar.gz  -C  目录
    
  • 2.1.7 关机和重启命令

    • shutdown命令

      shutdown [选项] 时间

      选项:

      -c		取消前一个关机命令
      
      -h		关机
      
      -r		重启
      

      #使用shutdown会在关机的时候帮我们保存数据

      shutdown -c :取消上一个关机命令

      shutdown -h 时间 :多少时间后关机

      shutdown -h now :马上关机

      shutdown -f :重启

    • 其他关机命令

      使用这三个命令不是特别安全,因为它们不会帮我们保存数据.

      • halt

        halt

        -n : 在关机前不做将记忆体资料写回硬盘的动作

        -w : 并不会真的关机,只是把记录写到 /var/log/wtmp 档案里

        -d : 不把记录写到 /var/log/wtmp 档案里(-n 这个参数包含了 -d) -f : 强迫关机,不呼叫 shutdown 这个指令

        -i : 在关机之前先把所有网络相关的装置先停止

        -p : 当关机的时候,顺便做关闭电源(poweroff)的动作

      • poweroff

        关机,不保存数据

      • init 0

        init 0 :关机

        init 6 :重启

        init 3 :切换字符界面

        inti 5 :切换可视化界面

    • 其他重启命令

      • reboot
      • init 6
    • 退出登录命令:logout

  • 2.1.8 其他命令

    • 查看用户登陆信息

      • w 用户名

        命令输出:

        USER 登陆的用户名

        TTY 登陆终端

        FROM 从哪个IP地址登陆

        LOGIN@ 登陆时间

        IDLE 用户闲置时间

        JCPU 指的是和该终端连接的所有进程占用时间.这个事件并不包括去后台作业的时间,但却包括当前正在运行的后台作业所占用时间;

        PCPU 是指当前进程所占用的时间

        WHAT 当前正在运行的命令

        w root

      • who

        命令输出:

        用户名

        登陆终端

        登陆时间(登陆来源IP地址)

    • 查询当前登陆和过去登陆的用户信息

      last

      last命令默认时读取/var/log/wtmp文件数据

      命令输出

      -用户名
      
      -登陆终端
      
      -登陆IP
      
      -登陆时间
      
      -退出时间(在线时间)
      
    • 查看最后一次登陆时间:lastlog

      lastlog命令默认时读取/var/log/lastlog文件内容

      命令输出

      用户名
      
      登陆终端
      
      登陆IP
      
      最后一次登陆时间
      
    • 磁盘使用情况:df

      df:用于显示磁盘的使用情况

      df -h: 格式化显示输出磁盘使用情况

    • 查看任务进程:top

      任务进程

      第一行:

      10:01:23 — 当前系统时间

      126 days, 14:29 — 系统已经运行了126天14小时29分钟(在这期间没有重启过)

      2 users — 当前有2个用户登录系统

      load average: 1.15, 1.42, 1.44 — load average后面的三个数分别是1分钟、5分钟、15分钟的负载情况。

      第二行:

      Tasks — 任务(进程),系统现在共有183个进程,其中处于运行中的有1个,182个在休眠(sleep),stoped状态的有0个,zombie状态(僵尸)的有0个。

      第三行:cpu状态

      6.7% us — 用户空间占用CPU的百分比。

      0.4% sy — 内核空间占用CPU的百分比。

      0.0% ni — 改变过优先级的进程占用CPU的百分比

      92.9% id — 空闲CPU百分比

      0.0% wa — IO等待占用CPU的百分比

      0.0% hi — 硬中断(Hardware IRQ)占用CPU的百分比

      0.0% si — 软中断(Software Interrupts)占用CPU的百分比

      第四行:内存状态

      8306544k total — 物理内存总量(8GB)

      7775876k used — 使用中的内存总量(7.7GB)

      530668k free — 空闲内存总量(530M)

      79236k buffers — 缓存的内存量 (79M)

      第五行:swap交换分区

      2031608k total — 交换区总量(2GB)

      2556k used — 使用的交换区总量(2.5M)

      2029052k free — 空闲交换区总量(2GB)

      4231276k cached — 缓冲的交换区总量(4GB)

      第五行以下:

      PID — 进程id

      USER — 进程所有者

      PR — 进程优先级

      NI — nice值。负值表示高优先级,正值表示低优先级

      VIRT — 进程使用的虚拟内存总量,单位kb。VIRT=SWAP+RES

      RES — 进程使用的、未被换出的物理内存大小,单位kb。RES=CODE+DATA

      SHR — 共享内存大小,单位kb

      S — 进程状态。D=不可中断的睡眠状态 R=运行 S=睡眠 T=跟踪/停止 Z=僵尸进程

      %CPU — 上次更新到现在的CPU时间占用百分比

      %MEM — 进程使用的物理内存百分比

      TIME+ — 进程使用的CPU时间总计,单位1/100秒

      COMMAND — 进程名称(命令名/命令行)

    • 查看内存占用:free

      内存占用情况:

      total:内存总数;

      used:已经使用的内存数;

      free:空闲的内存数;

      buffers Buffer:缓存内存数;

      cached Page:缓存内存数。

    • 查看操作历史:history

      用于显示执行过的历史命令记录

    • 在显示器输出内容:echo

    • 文件查看命令

      • cat

        整个文件的内容显示出来

      • tail

        默认在屏幕上显示指定文件的末尾10行

        参数:

        -f 显示文件最新追加的内容。

        -行数 在屏幕上显示指定文件的末尾参数设置的行数

vi编辑器

  • 编辑器的三种模式

    三种模式:
    编辑模式(命令模式) :所有的机键动作都会理解为编辑整个文档的操作,默认为编辑模式
    输入模式:大部分机键动作都会理解为输入的字符
    末行模式:在末行模式,输入很多文件管理命令

    模式之间的相互转换:
    编辑–>输入
    i:在光标所在字符前开始插入
    a:在光标所在字符后开始插入
    o:在光标所在行的下面另起一新行插入
    s:删除光标所在的字符并开始插入

    I:在光标所在行的行首开始插入 如果行首有空格则在空格之后插入
    A:在光标所在你行的行尾开始插入
    O:在光标所在行的上面另起一行开始插入
    S:删除光标所在行并开始插入

    输入模式–>编辑模式
    ESC(键盘左上方的按键)

    编辑模式—>末行模式
    :
    末行模式:–>编辑模式
    ESC(键盘左上方的按键)(一次或者多次)

  • 打开和关闭文件

    打开文件
    vi /path/to/file

    关闭文件
    在末行模式下
    wq: 保存退出
    q!: 退出不保存

  • 移动光标

    逐字符移动:

    h:左移动

    l:右移动

    j:向下移动

    k:向上移动

    行内跳转:

    0:跳转到行首

    $: 跳转到行尾

    行间跳转;(末行模式)

    num: 跳转到某一行(末行模式)

    G: 跳转行最后一行(编辑模式)

    gg: 跳转到第一行(编辑模式)

  • 翻屏操作

    在编辑模式下:

    ctrl+f 向下翻一页

    ctrl+b 向上翻一页

  • 删除命令

    dd: 删除光标所在行 (编辑模式)

    3dd:从光标行开始删除3行(编辑模式)
    1,4d 删除第一行到第四行(末行模式)
  • 复制和粘贴命令

    yy 复制光标所在行 (编辑模式)

    2yy 从光标行开始复制2行(编辑模式)

    p: 粘贴命令

  • 查找

    文件的查找

    /parttern 从前往后查找

    ?parttern 从后往前查找

    n: 下一个匹配的字符串

    N: 上一个匹配的字符串

    /关键字 按n找下一个

    set number 设置行号

    或者

    set nu

    取消行号

    set nu!

系统服务管理

  • 系统服务

    systemctl是CentOS7的服务管理工具中主要的工具

    启动服务:systemctl start <服务名>

    关闭服务:systemctl stop <服务名>

    重启服务:systemctl restart <服务名>

    查看服务状态:systemctl status <服务名>

    添加开机启动项:systemctl enable <服务名>

    禁止开机启动项:systemctl disable <服务名>

    查看服务:systemctl list-unit-files

  • 进程查看:ps

    用于报告当前系统的进程状态。可以搭配kill指令随时中断、删除不必要的程序。

    ps -ef 显示出的结果:

    1.UID       用户ID
      
    2.PID        进程ID
      
    3.PPID      父进程ID
      
    4.C           CPU占用率
      
    5.STIME     开始时间
      
    6.TTY         开始此进程的TTY----终端设备
      
    7.TIME       此进程运行的总时间
      
    8.CMD       命令名
    
  • 杀死进程

    kill -9 pid

权限管理

  • 用户管理

    • useradd

      创建用户 :useradd [用户名]

      创建用户并分配一个组:useradd -G [组名] [用户名]

      查看系统用户:cat /etc/passwd

      1 用户名

      2 用户的密码,用x替代

      3 用户的uid,一般情况下root为0,1-499默认为系统账号,有的更大些到1000,500-65535为用户的可登录账号,有的系统从1000开始。

      4 用户的gid,linux的用户都会有两个ID,一个是用户uid,一个是用户组id,在我们登录的时候,输入用户名和密码,其实会先到/etc/passwd查看是否有你输入的账号或者用户名,有的话将该账号与对应的UID和GID(在/etc/group中)读出来。然后读出主文件夹与shell的设置,然后再去检验密码是否正确,正确的话正常登录。

      5 用户的账号说明解释

      6 用户的家目录文件夹

      7 用户使用的shell,如果换成/sbin/nologin/就是默认没有登录环境的。

    • groupadd

      查看系统用户组:cat /etc/group

    • usermod

      修改用户组属性

      usermod -G [组名] [用户名]

    • userdel

      删除用户:

      -f:强制删除用户,即使用户已登录

      -r:删除与用户相关的所有文件。

    • groupdel

    • passwd

      passwd 用户名

      切换用户: su 用户名

  • 文件基本权限

    • 文件权限概述

      计算资源:(一切皆文件)

      权限:定义资源或服务的访问能力,称之为权限

      定义某一个特定的人资源或者服务的访问能力, 用户

      定义一类用户具有访问某个资源或服务的能力. 用户组(存放一些列用户的容器),同时用户组还拥有具有访问某个资源的权限

      定义一个资源的权限:

      ① 用户具有该资源的权限(文件所有者,属主)
      
      ② 用户组具有该资源的权限(属组)
      
      ③ 其他用户(既不是属主,也不是属组)
      

      文件权限:

      r, 可读 可以执行类似cat命令的操作

      w, 可写 可以编辑或者删除此文件

      x 可执行

    • 文件权限表示

      -rw-r–r–

      - 文件类型(- 文件 d 目录 I 软链接文件)
      
      rw-			        r--				  r--
      
      u所有者		g所属组		o其他人
      
      
      
      
      r读	w写	x执行
      

-rw-r--r--.  1 root root    12288 Aug 22  2019 aliases.db

文件类型     所有者读写权限     所属组读写权限   其他人读写权限          硬链接次数     所属用户   所属用户组       文件大小      文件修改时间       文件名

-                   rw-                         r--                          r--.                     1            root           root             12288          Aug 22  2019     aliases.db
  • chmod命令

    chmod [选项] 模式 文件名

    选项
    
    	-R		递归
    
    模式
    
    	[guoa] [+-=] [rwx]
    
    	[mode=421]
    
  • 修改权限的方式

    chmod [选项] 模式 文件名

    	[guoa] [+-=] [rwx]
    

    g: group

    u: user

    o: other

    a: all

    修改权限的方式:

    chmod u+x 文件

    #给当前用户添加指定文件的x执行权限

    chmod g+w,o+w 文件

    #给该文件用户组合其他人添加指定文件的w写的权限

    chmod a=rwx 文件

    #给该文件的当前用户,当前组,其他人 添加rwx可读可写可执行的权限

  • 权限的数字表示

    chmod [选项] 模式 文件名

    	[mode=421]
    

    权限的数字表示


    –x 001

    -w-010

    r-- 100

    rwx 111

    -w- 010

    r 4 r-- 100

    w 2 -w- 010

    x 1 --x 001

    0 —

    1 --x

    2 -w-

    3 -wx

    4 r–

    5 r-x

    6 rw-

    7 rwx

    示例:

    rwx r-x r-x

    7 5 5

    chmod 755 文件

    aa.txt —>

    拥有者: 可读可写 rw- 6

    所述组: 可读写执行 r-x 5

    其他人: 可读可写可执行 rwx 7

    chmod 657 aa.txt

  • sudo权限

    root把本来只能超级用户执行的命令赋予普通用户执行.

    sudo的操作对象是系统命令

    visudo

    #实际修改的是/etc/sudoers文件

    root ALL=(ALL) ALL

    #用户名 被管理主机的地址=(可使用的身份) 授权命令(绝对路径)

    %wheel ALL=(ALL) ALL

    #%组名 被管理注解的地址=(可使用身份) 授权命令(绝对路径)

    useradd dafei

    passwd admin

    dafei ALL = (ALL) /usr/sbin/shutdown

    切换到dafei用户后

    使用sudo命令执行shutdown

    sudo shutdown -h now

网络管理

  • 网络中的基本概念

    网络的基本概念

      1)ip地址:在网络通信中主机的标识符(好比手机号码)
    
      2)mac地址:主机的物理网卡的唯一标识符(好比身份证号码)
    
      3)子网掩码:用于区分主机的IP地址中的网络地址和主机地址,并由此确定该主机的IP地址的网段
    
      4)网关:就是一个网络中的主机连接到另一个网络的主机的关口
    
      5)DNS:域名解析服务器,把域名解析成对应的IP地址
    

  • 防火墙

    centos7的防火墙程序服务名为:firewalld

    防火墙配置命令:firewall-cmd

    防火墙帮助:

    firewall-cmd --help

    查看防火墙状态:

    firewall-cmd --state

    查看所有打开的端口:

    firewall-cmd --zone=public --list-ports

    开启端口:

    firewall-cmd --zone=public --add-port=端口号/tcp --permanent(–permanent参数为永久生效,不加则重启后失效)

    firewall-cmd --zone=public --add-port=8080/tcp --permanent

    更新防火墙规则:

    firewall-cmd --reload

    删除端口:

    firewall-cmd --zone=public --remove-port=端口号/tcp --permanent

    firewall-cmd --zone=public --remove-port=8080/tcp --permanent

    关闭防火墙

    systemctl stop firewalld

    systemctl disable firewalld

  • ifcfg-eth解释

    文件 /etc/sysconfig/network-scripts/ifcfg-eth0在/etc/sysconfig/network-script在这个目录下面,存放的是网络接口(网卡)的脚本文件(控制文件),ifcfg-eth0是默认的第一个网络接口,如果机器中有多网络接口,那么名字就将依此类推ifcfg-eth1,ifcfg-eth2,ifcfg-eth3…(这里面的文件是相当重要的,涉及到网络能否正常工作)。

    TYPE=Ethernet #网卡类型

    DEVICE=eth0 #网卡接口名称

    ONBOOT=yes #系统启动时是否自动加载

    BOOTPROTO=static #启用地址协议 --static:静态协议 --bootp协议 --dhcp协议

    IPADDR=192.168.1.11 #网卡IP地址

    NETMASK=255.255.255.0 #网卡网络地址

    GATEWAY=192.168.1.1 #网卡网关地址

    DNS1=8.8.8.8 #网卡DNS地址

    BROADCAST=192.168.1.255 #网卡广播地址

    查看ip:

    ip addr


    TYPE=“Ethernet”

    BOOTPROTO=“static”

    IPADDR=“192.168.40.130”

    NETMASK=“255.255.255.0”

    GATEWAY=“192.168.40.2”

    DNS1=“8.8.8.8”

    BROADCAST=“192.168.40.255”

    ONBOOT=“yes”

    重启服务

    systemctl restart network

Linux应用

软件的安装

软件包管理器: 软件的安装,卸载,查询等功能

后端工具: rpm, dpt

rpm:RedHat package Management

	是Linux界的软件管理的一个工业标准

dpt: debian的一个包管理器

依赖管理:

X —>Y —Z

X —>Y —X

yum: 基于后端工具的软件包的管理,主要是解决rpm安装软件的时候的依赖的解决

		 apt-get
  • rpm

    rpm 常用命令

    安装一个包

    rpm -ivh <包名>

    rpm -ivh --nodeps <包名> : 如果该RPM包的安装依赖其它包,即使其它包没装,也强迫安装。

    –force 即使覆盖属于其它包的文件也强迫安装

    查询一个包是否被安装

    rpm -q <软件名>

    得到被安装的包的信息

    rpm -qi < 软件名>

    列出该包中有哪些文件

    rpm -ql < 软件名>

    列出服务器上的一个文件或目录属于哪一个RPM包

    #rpm -qf <文件或目录名>

    列出所有被安装的rpm package

    rpm -qa

    卸载一个包

    rpm -e <软件名>

    有安装包,知道依赖关系使用rpm

  • yum

    1 配置一个自定义的仓库地址

    /etc/yum.repos.d

    local.repo

    2 安装命令

    yum install

    3 查看软件包

    yum list |grep mysql

    yum list installed

    4 卸载软件包

    yum remove

    没安装包, 不知道依赖关系,使用yum

    • 修改yum源

      yum install wget -y

      mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo_bak

      wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo

      yum makecache

      #更新系统软件,不执行

      yum -y update

  • 绿色软件

  • 源码编译安装

项目部署

关闭防火墙

systemctl stop firewalld

systemctl disable firewalld

  • jdk的安装

    1:将jdk拉入linux路径: /usr/local/software

    2:将jdk解压到指定的路径

    cd /usr/local/software

    tar -zxvf jdk-11_linux-x64_bin.tar.gz -C /usr/local

    3:备份配置环境变量文件

    注意,设置前先备份,养成习惯

    cp /etc/profile /etc/profile_bak

    5:修改配置环境变量文件

    vi /etc/profile

    在随便空白地方输入:

    export JAVA_HOME=/usr/local/jdk-11 #设置java_home

    export PATH= J A V A H O M E / b i n : JAVA_HOME/bin: JAVAHOME/bin:PATH #设置环境变量, 跟window区别,是 : 分隔的

    看清楚,大小写必须一致

    6:重写加载环境变量

    source /etc/profile

    7:测试

    java -version

    看到这个结果表示安装成功

    java version “11” 2018-09-25

    Java™ SE Runtime Environment 18.9 (build 11+28)

    Java HotSpot™ 64-Bit Server VM 18.9 (build 11+28, mixed mode)

  • tomcat的安装

    1:将tomcat安装包拉入linux路径: /usr/local/software

    2:将tomcat解压到指定的路径

    cd /usr/local/software

    cp apache-tomcat-9.0.33.zip /usr/local

    cd /usr/local

    unzip apache-tomcat-9.0.33.zip

    rm -rf apache-tomcat-9.0.33.zip

    3:切换到tomcat的 bin目录

    cd /usr/local/apache-tomcat-9.0.33/bin

    4:执行tomcat启动命令

    s授权:

    chmod 777 *.sh

    ./startup.sh #注意有点 的

    5:此时因为防火墙没有开辟8080端口,需要开通, 并重启

    firewall-cmd --zone=public --add-port=8080/tcp --permanent

    firewall-cmd --reload

    6:访问测试tomcat是否启动

    http://192.168.168.131:8080/ #注意: 192.168.168.131 这个是自己的虚拟主机的ip


    7:观看tomcat运行日志

    cd /usr/local/apache-tomcat-9.0.33/logs

    tail -f catalina.out #查看新增日志

    8:选中SecureCRT的连接会话拷贝一份

    cd /usr/local/apache-tomcat-9.0.33/bin

    ./startup.sh

    9:切换回到刚刚查看日志命令,可以看到日志打印

    10:tomcat 关闭

    方式1:

    cd /usr/local/apache-tomcat-9.0.33/bin

    ./shutdown.sh

    方式2:

    ps -ef | grep java #找到进程id

    kill 进程id

  • mysql数据库的安装

    看文档:

    grant all privileges on . to ‘root’@‘%’ identified by ‘admin’ with grant option; 远程用户授权

    flush privileges; 刷新缓存

    注意: 对于linux mysql 对于表明默认区分大小写的

    show variables like “%case%”;

    去配置文件中vi /etc/my.cnf添加参数

    lower_case_table_names=1

    解决中文乱码问题:

    useUnicode=true&characterEncoding=utf-8

    • 本地客户端远程连接
  • redis的安装

    最新稳定版: https://redis.io/download 官方提供的

    1:将redis安装包拉入linux路径: /usr/local/software

    2:将redis解压到指定的路径

    cd /usr/local/software

    tar -zxvf redis-6.2.1.tar.gz -C /usr/local

    3:进入redis主目录

    cd /usr/local/redis-6.2.1/

    4.安装gcc编译器

    yum install -y gcc

    6:编译redis

    cd /usr/local/redis-6.2.1/

    make

    7:安装redis 服务

    cd /usr/local/redis-6.2.1/src

    make install

    9:启动redis服务

    /usr/local/redis-6.2.1/src/redis-server /usr/local/redis-6.2.1/redis.conf

    10:验证启动是否成功:

    ps -ef | grep redis #查看是否有redis服务或者查看端口: netstat -tunpl | grep 6379

    8:修改配置文件redis.conf

    vi /usr/local/redis-6.2.1/redis.conf

    将redis配置的 : daemonize:后台运行,值为yes | no 默认为no

    protected-mode yes 保护模式改为 no

    11:设置远程连接

    vi /usr/local/redis-6.2.1/redis.conf

    注释掉

    #bind 127.0.0.1

    改为

    bind 0.0.0.0

    12:停掉redis, 重新启动

    ps -ef | grep redis

    kill 进程号

    /usr/local/redis-6.2.1/src/redis-server /usr/local/redis-6.2.1/redis.conf

    13 : 防火墙开放6379

    firewall-cmd --zone=public --add-port=6379/tcp --permanent

    firewall-cmd --reload

    14:远程连接

    firewall-cmd --reload

    • 本地客户端远程连接
  • 项目一部署

    • 打包

      • 后端

        1>在xxx-xxx-admin项目pom.xml添加打包命令

                    <groupId>org.springframework.boot</groupId>
        
                    <artifactId>spring-boot-maven-plugin</artifactId>
        
                    <version>2.1.1.RELEASE</version>
        
                    <configuration>
        
                        <fork>true</fork> <!-- 如果没有该配置,devtools不会生效 -->
        
                    </configuration>
        
                    <executions>
        
                        <execution>
        
                            <goals>
        
                                <goal>repackage</goal>
        
                            </goals>
        
                        </execution>
        
                    </executions>
        
                </plugin>
        

        2>改数据库ip端口,数据库名,数据库账户/密码

        xxx-xxx-admin----application-druid.yml

        3>改redis ip端口

        xxx-xxx-admin----application.yml

        4>打包

        xxx-xxx–maven----Lifecycle—package

        5>到xxx-xxx-admin—target目录获取运行jar包

      • 前端

        1>在vue.config.js 配置

        //打包配置文件

        module.exports = {

        assetsDir: ‘static’,

        parallel: false,

        publicPath: ‘./’,

        };

        默认情况下,使用vue-cli已经配置好了

        2>改动后端ip 端口

        在vue.config.js 修改后端ip 地址

        3>命令行执行:

        npm run build

        // 查看项目下package.json 文件–scripts 配置的 build:prod

        npm run build:prod

        4>在dist目录获取项目文件

    • 启动与部署

      • 后端

        1>将xxx-xxx-admin.jar 拷贝到 local/software

        2>使用java-jar 命令启动

        cd /usr/local/software

        java -jar xxx-xxx-admin.jar

        3>使用服务器ip访问

        4>背后独立启动

        nohup java -jar xxx-xxx-admin.jar &

      • 前端

        真实部署

        1>将dist目录中文件拷贝到服务器

        2>启动配置Nginx 路径执行dist

        3>启动nginx服务器, 直接访问

        当前部署

        没学nginx,就在本地启动

        1>启动

        npm run dev

        如果是新版本node.js启动前加:

        SET NODE_OPTIONS=–openssl-legacy-provider

    • 项目验证码报错问题

      报错

      {“msg”:“Handler dispatch failed; nested exception is java.lang.InternalError: java.lang.reflect.InvocationTargetException”,“code”:500}

      原因: 远程服务器少了字体:

      项目代码:

      CaptchaConfig类中有代码:

      // 验证码文本字体样式 默认为new Font(“Arial”, 1, fontSize), new Font(“Courier”, 1, fontSize)

      properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, “Arial,Courier”);

      查看服务器字体:

      fc-list

      安装服务器字体

      1>下载 Arial.ttf字体

      2>将字体放置在指定目录

          cd  /usr/share/fonts
      
          mkdir  myfonts
      
          将字体拖到指定位置
      

      3>创建字体索引

         yum install mkfontscale  -y
      
         yum install fontconfig -y
      
         mkfontscale 
      
         mkfontdir 
      
         fc-cache -fv
      

      4>重启服务器

  • 28
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值