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   #查看仓库中的软件包
好好学习,天天向上。
原文地址:https://www.cnblogs.com/f211/p/13741747.html