• linux (简单了解)


     

    目录

    Bash Shell 简单了解

    Bash Shell基础语法

    文件管理

    用户管理

    权限管理

    软件管理

     什么是Bash Shell 

      命令的解释,用来翻译用户输入的命令

     Bash Shell 能做什么?

    文件管理  软件管理  用户管理  权限管理   网络管理

     Bash Shell 

      单行命令   脚本命令

    4 linux 的登录提示符

      [root@liuun2 /]#

    root  当前登录的用户

    liuun2  当前主机名称

    /  当前用户所在的路径

    #   表示超级管理员

    $  表示普通用户

     Bash Shell基础语法

    命令 选项 参数
    ls 命令 查看当前目录下的所有文件
    ls -l 命令+ 选项 以列表的形式显示所有文件
    ls -l /tmp 命令=选项+参数 查看某路路径下的所有文件

     文件管理 

    对文件可以进行的操作

      创建  删除  压缩  移动  复制  编辑  查看  查找

    1. 文件的基础命令

    bin 普通用户可以操作的命令
    sbin 管理员可以操作的命令
    home 普通用户的家目录
    root 管理员用户的家目录
    boot

    存放启动系统时需要的文件

    grub 引导菜单.内核文件

    dev

    设备(硬盘.光盘.终端)

    /dev/rendom  (摇钱树)

    /dev/null  黑洞

    etc

    配置  (网卡,系统配置,服务配置)

    /etc/hostname  主机名称

    /etc/sysconfig/network-script/  (网卡配置信息)

    proc 实时反馈当前系统的状态
    tmp 临时文件,那个用户上传的,那个用户删除
    usr 用户文件
    var

    可变的目录

    log

    pid 存放服务器进程的id -->Python  ->30119 -->/var/pid/python.pid  ( 30119 )

    常用命令表单

    which

    命令 查找命令的绝对路径
    touch /路径/要创建的文件 创建文件
    cp /原路径/复制的文件/复制到的路径 复制(拷贝)
    rm ( -f | -fr ) /路径/文件名 删除文件

    cat

    (-A | -n)  /路径/文件名 查看文件中的内容
    head (- n)  /路径/文件名 n选着查看的行数
    tail (- f ) /路径/

    (符实时追踪文件末尾的变化)

    仅查看文件末尾的10行

    more

    less

    /路径/文件名 分页查看文件内容
    mkdir ( -p | -v)  

    创建文件夹

    (递归创建)

    (显示创建的过程)

    mv  /要移动的路径/文件名  /移动到的路径 文件移动

    上传和下载

    下载: 

    互联网到服务器

    服务器到本地

    上传:

    本地到服务器

     

    rz:  从本地上传到文件到 server

    sz:  从server 下载文件到本地电脑

    wget 获取互联网上的资源到本地

    yum install wget -y

    wget http://nginx.org/download/nginx-1.16.1.tar.gz

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

     

     

     

    linux 编辑工具 vim

    vim的基本介绍

    1. 什么是vim?

    文本文件对的编辑工具.

    2. 为什么要使用vim?

    linux中一切皆文件,需要修改配置文件,让软件按照我们的期望运行,所以使用编辑工具.

    3.VIVIM 的区别:

    vim  有高亮显示

    vi   没有高亮显示

    VIM 的命令模式

    复制:  yy

    粘贴:  p

    撤销:  u

    删除:  dd  |  D 删除本行光标之后的所有内容

    剪贴:  (删除+粘贴)

    光标操作

      文件首行:  gg

      文件尾行:  G

      翻页操作::  ctrl+f向上翻页  Ctrl+b向下翻页

      行首:  ^  |  0 

      行尾:  $

    进入编辑模式

      i:  直接进入编辑模式

      o:  插入新的行,并且进入编辑模式

      A:  光标移动到行尾,并且进入编辑模式

      a:  光标向后移动一位,并且进入编辑模式

    快速切换到你想要的行

      vim file.py +Number

      200gg  快速跳转到200行

      :200  快速跳到200行

    VIM 的编辑模式 (输入自己想写的代码)

    VIM 的末行模式

    保存:  :w

    退出:  :q

    保存并退出::  :wq

    搜索:  /search  N 向上查  n向下查

    替换:  

      :%s#要替换对的#替换成的#g

      :1,5s#要替换的#替换成的#g

    视图模式

    shift+v 行模式:

      复制  y

      删除  d

    Ctrl+v 块模式

      加注释  shift+i -->输入#号注释符 -> 按ESC

      删注释:  选中后,按 x 删除 一个字符

    其他的操作

    1. 开启行号:  :set number

    2. 搜索忽略大小写  :set ic

    3. 取消高亮:  :noh

    vim 编辑故障:

      打开文件,做了修改,关闭会话.

        E: 直接编辑,会忽略关闭之前写的内容

        R: 将之前编写没有及时保存的内容显示出来.确认没有错误保存退出

            再次确认文件可以选择 D 删除或者是交换的swp文件,则不会再有提示

    linux 文件类型

    一切皆文件

      -  文件

      d  目录

      s  socket

      c  字符设备

      b  块设备 (磁盘)

     file  查看文件的具体属性

    linux 文件属性

      -rw-r--r--. 1 root root      32 9月  27 11:46 test.py

    -  文件;类型

    rw-r--r--  文件权限

    1  硬链接次数

    root  文件所属用户

    root  文件所属组

    32  文件大小

     9月  27  11:46  最后修改时间  stat 详细时间记录

    tas.py  文件名称

    文件的压缩和打包

      1.什么是打包?

        压缩包是一种特殊的格式.将多个文件或者目录整理在一个文件中

      2. 为什么要使用压缩包?

        便于传输  压缩后体积会变小

      3. 实现打包与压缩有哪些工具:

        windows:   zip tar

        linux  zip tar.gz

      4. 压缩包如何实现:

        gzip:(仅针对文件) 

          压缩:  gzip /etc/yum.repos,d/CentOS-Bsae.repo

          查看:  zcat /etc/yum.repos.d/centOS-Base.repo.gz

          解压:  gzip -d /ect/yum.repos.d/CentOS-Base.repo.gz

        zip:(针对文件和目录)

          压缩:  yum install zip unzip -y  (原文件消失)

          查看:  zip -r yum_local.zip /etc/yum,repos.d/ /tmp/

          解压:  unzip yum_local.zip -d /pot/

        tar.gz

          c: 创建  z:压缩类型  f:指定文件名称  x:自动识别文件类型

          创建  tar czf etc.tar.gz /ect/ /home/

          压缩  tar xf etc.tar.gz

          指定解压路径  tar xf etc.tar,gz -C /home/

    用户管理

    什么是用户

      值能够正常登录操作系统

    为什么要有用户

      进程要依赖一个特定的用户身份,才可以正常的运行

      服务器可能有多个用户,root的权限最大

    用户分类

      类型      名称    ID编号

      超级用户     root    0

      系统用户          1-999  为系统正常运转而使用的用户 系统用户 虚拟用户

      普通用户          1000+  能够正常登陆系统的用户 普通用户

      进程能够以什么样的方式去访问文件或目录 . 取决于进程运行的'用户身份'对该目录或文件是否拥有对应的权限.

    如何查询用户

    id root  (id+ 用户名)

    得到  uid=0(root) gid=0(root) 组=0(root)

    如何创建用户

    useradd liuun  (useradd  用户名)

    id liuun   查看是否创建成功

    uid=1001(liuun) gid=1001(liuun) 组= 1001(liuun)

    创建的用户信息都放在那里 (存储用户信息以冒号为分割符,有7列)

    cat /ect/passwd  查看用户信息

    root:x:0:0:root:/root:/bin/bash

    liuun:x:1001:1001:/home/liuun:/bin/bash

    第一列  用户名称

    第二列  密码占位符.(密码存放在 /ect/shadow 文件中)

    第三列  用户的uid

    第四列  用户的gid

    第五列  描述信息 commit

    第六列  用户的家目录

    第七列  用户登录的Bash类型

    用户的密码放在那里

    /ect/shadow 文件中

    创建用户的参数

    -u:  指定用户的uid

    -g:  指定用户的基本组 (不指定,默认创建与用户同名的组)

    -G:  指定附属组

    -c:  指定 注释消息

    -s:  指定登录的bsah类型,(默认是 /斌/bash

    -r:  指定系统用户

    -M:  不创建用户的家目录

    创建liuun用户,UID为5000.基本组为students.附属组为撒.注释信息为9211 new student.登录shell:/bin/bash

    groupadd student

    group sa

    useradd liuun -u 5000 -g students -G sa -c '9211 new student' -s /bin/bash

    创建mysql系统用户,-M不建立家目录 -s 指定Nologin使其用户无法登录系统

    useradd mysql -人-M -s /sbin/nologin

    如何删除用户

    userdel -r username  删除用户,并删除用户的家目录  (不建议使用 -r )

    如何为用户设置密码

      设定密码的方式

        交互式: passwd [username]

        非交互式: passwd --srdin root  固定密码

             echo $RANDOM | mdSsum | cut -c 2-10 | tee 1.txt | passwd --stdin root 

    批量创建用户

    for user_name in old-{1..100}
      do
       pass=$(echo $RANDOM | md5sum  | cut -c 2-10)
       
       # 判断用户是否存在,如果存在则不创建
       id $user_name &>/dev/null
       if [ $? -eq 0 ];then
        continue
       else
        # 创建用户
        useradd $user_name
        # 设定密码
        echo "$pass" | passwd --stdin $user_name &>/dev/null  # 设定密码,将结尾打到空
        echo "Username: $user_name  Password: $pass ok.."   # 将用户名和密码输出到面板
        echo "Username: $user_name  Password: $pass ok.." >> user_password.txt  #将用户名和密码输出到文件中
       fi
      done

    交互式创建用户和密码

      [root@oldboy-pythonedu ~]# cat useradd_2.sh
      #!/usr/bin/bash

      read -p "请输入你要创建的用户名称: " User
      read -p "请输入你要创建的用户数量: " Number

      #1.如何批量创建用户
      for i in $(seq $Number)
      do
       user_name=$User-$i
       pass=$(echo $RANDOM | md5sum  | cut -c 2-10)
       
       # 判断用户是否存在,如果存在则不创建
       id $user_name &>/dev/null
       if [ $? -eq 0 ];then
        continue
       else
        # 创建用户
        useradd $user_name
        # 设定密码
        echo "$pass" | passwd --stdin $user_name &>/dev/null
        echo "Username: $user_name  Password: $pass ok.."
        echo "Username: $user_name  Password: $pass ok.." >> user_password.txt
       fi
      done

    用户组

    组基本概念:  便于管理

    组的分类:   所属组: 当创建一个用户时,如果不指定主组,会自动创建一个同名的组

           附加组:  创建用户时可以指定我们新加入的附属组.此时用户就可以具有附加的组的权限

      (主组只能有一个.附属组可以有多个)

    创建组

      -g 指定gid (默认不指定.则从1000+开始)

      groupaddu -个5001 devops

    删除组

      groupdel decops

      

      groupdel  devops

      groupdel:不能移动用户 'liuun' 的主组

      userdel -r liuun

      groupdel students

    用户提权相关

      su  切换身份

      sudo  提权

     

    权限管理

      1. 什么是权限? 

        权限主要用来约束用户能对系统所做的操作

      2. 为什么要使用权限?

        因为系统中不可能只存在一个人root用户,一定还有其他的户, 为了保护每个登录的用户的隐私和工作环境,所以就有了权限

      3.权限和用户之间的关系?

        1) 系统给每个文件定义了三个身份   属性  属组  其它

        2) 每个身份分别对应了三种权限   r读4  w写2  x执行1

      4. 为什么要设置权限?

        进程运行需要一个用户,而进程在完成上传的操作时.需要条用对应的用户来执行,能否执行成功,取决于给用户对该文件是否拥有权限

      5. 怎么修改权限?  (chmod)

        chmod 640 文件名

      6. 变更一个文件属主和属组/

        chown  -R  www.www  文档-demo/

      7 通过一个文件 文件上传和下载的demo?

        1)安装PHP环境

          setenforce 0    #关闭selinux

          systenctl stopfirewalld    #关闭fireewalld防火请

          yum install httpd php -y

          systenctl start httpd

          wget http://fj.xuliangwei.com/public/kaoshi.zip

          unzip kaoshi.zip -d /var/www/html/

        2) 如果不调整权限,前台会提示成功,但实际是失败的

          tail -f /var/log/ httpd/error_log 

        3) 变更写入目录的属主和属组(不要修改为777,权限太大不好)

           1检查进程运行的用户身份是什么: apache

            ps -ef | grep httpd | head -2

                 root      24130      1  0 10:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND  #Master进程
                 apache    24132  24130  0 10:13 ?        00:00:00 /usr/sbin/httpd -DFOREGROUND  #Worker进程

           2 检查进程要写入的目录是什么权限:

              ll -d /var/www/html/

                drwxr-xr-x. 2 root root 77 9月  29 10:21 /var/www/html/

              总结: 写布景区的原因:   进程会调用apache用户往 /var/www/html目录写, 而apache用户对/var/www/html目录仅拥有 读和执行,所以会失败.

    .       3 调整/var/www/html 属主和属组
                 [root@oldboy-pythonedu ~]# chown apache.apache /var/www/html/
                 [root@oldboy-pythonedu ~]# ll -d /var/www/html/
                 drwxr-xr-x. 2 apache apache 77 9月  29 10:21 /var/www/html/
      
             3.4) 最后验证程序是否能正常上传文件至/var/www/html/中
                [root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/ -d
                drwxr-xr-x. 2 apache apache 25 9月  29 10:27 /var/www/html/2020-09-29/
      
                [root@oldboy-pythonedu ~]# ll /var/www/html/2020-09-29/
                -rw-r--r--. 1 apache apache 438 9月  29 10:27 2_oldxu.txt

    rpm软件包管理

      1.什么是rpm ?  redhat package mananger 红帽包管理工具, xxx.rpm  主要用来安装软件包.

      

     1.rpm包    可以通过rpm工具  yum工具管理
     2.二进制包 解压即用
     3.源码包  编译   ---> 二进制可执行文件
     rpm工具安装会牵扯到依赖关系:
      A包  -> B包  -> C包
         --> D包  --> E包
           ---> F包

    安装

    [root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/centos/7/os/x86_64/Packages/vsftpd-3.0.2-27.el7.x86_64.rpm

    卸载

    [root@oldboy-pythonedu ~]# rpm -e vsftpd

    升级:Uvh

    [root@oldboy-pythonedu ~]# rpm -ivh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.0/x86_64/RPMS/mongodb-org-shell-3.0.0-1.el7.x86_64.rpm

    查询结果

    [root@oldboy-pythonedu ~]# rpm -qa  | grep mongodb
     mongodb-org-shell-3.0.0-1.el7.x86_64

    升级版本

    [root@oldboy-pythonedu ~]# rpm -Uvh https://mirrors.aliyun.com/mongodb/yum/redhat/7/mongodb-org/3.2/x86_64/RPMS/mongodb-org-shell-3.2.0-1.el7.x86_64.rpm

    再次检查

    [root@oldboy-pythonedu ~]# rpm -qa | grep mongodb
     mongodb-org-shell-3.2.0-1.el7.x86_64

    查询命令:
     [root@oldboy-pythonedu ~]# rpm -q httpd     #查询安装或者没有安装
     [root@oldboy-pythonedu ~]# rpm -qa      #显示系统中所有已安装的软件包
     [root@oldboy-pythonedu ~]# rpm -qa | grep httpd   #查询所有系统已安装的软件包,过滤指定的包名
     [root@oldboy-pythonedu ~]# rpm -qc httpd    #仅查看httpd这个包的配置在哪里
     [root@oldboy-pythonedu ~]# rpm -ql httpd    #查看httpd这个包所有的文件存储的路径
     
    痛点:   rpm工具还是无法解决依赖间关系, 所有就有了  yum工具.

    3.yum工具  ( 联网 ) 1) 什么是yum rpm包管理工具,主要用安装软件, 通过互联网安装软件.    并能解决依赖间关系.

    2) 什么是源,什么是仓库
     源:  存储在服务器中的一个repo文件, 文件中存储的是仓库的地址
     仓库:   一推软件包的集合,源如果指向这个仓库,那么服务器就可以直接获取该仓库中的软件包
    3) 如何配置源  | 仓库 ?
     wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
    4) 使用yum
     安装
      [root@oldboy-pythonedu ~]# yum install samba -y
      
     更新
      [root@oldboy-pythonedu ~]# yum update samba -y
      
     卸载
      [root@oldboy-pythonedu ~]# yum remove samba -y
     
     查询
      知道命令,但是不知道安装哪个软件包, 
      知道配置文件的路径,但是不知道是哪个软件包生成出来的.
      
      [root@oldboy-pythonedu ~]# yum provides ifconfig
      [root@oldboy-pythonedu ~]# yum provides /etc/my.cnf
     清理缓存:
      [root@oldboy-pythonedu ~]# yum clean all  #清理所有的缓存
      [root@oldboy-pythonedu ~]# yum makecache  #生成缓存
      [root@oldboy-pythonedu ~]# yum repolist   #查看仓库中的软件包
    好好学习,天天向上。
  • 相关阅读:
    基于socket.io的实时消息推送
    mysql_use_result & mysql_store_result & MYSQLI_ASYNC
    深入浅出讲解:php的socket通信
    Mysql时间存储类型优缺点?DATETIME?TIMESTAMP?INT?
    PHP垃圾回收机制引用计数器概念
    php调试函数
    Docker生产环境实践指南
    11 个 Linux 上最佳的图形化 Git 客户端
    浅谈TCP/IP网络编程中socket的行为
    highcharts 使用实例
  • 原文地址:https://www.cnblogs.com/f211/p/13741747.html
Copyright © 2020-2023  润新知