linux命令相关

第三天:

1 常用命令

  1 tree /home/  树状形式显示文件夹目录,需要安装包

     yum install tree

  2 cat :查看文本内容,cat text2.txt     #这是查看文本内容

    给文本写内容,此时ads,adf就是写入的内容,内容输入完后以EOF结尾
        cat >> test2.txt <<EOF
        > ads
        > adf
        > EOF

  3 less,more:文本查看,分页
              less /etc/services

  4 head -n1 /etc/services :查看该文件第一行

  5 ps aux | head -n5 :查看前5个进程

   ps aux | tail -2:查看倒数两个进程

  6 tail -f /var/log/messages   :动态查看文件变化,查看日志比较多

  7 grep:查找命令,过滤
      -grep "lqz" test2.txt   查找文件中有lqz的行
      -ps aux | grep ssh    查看sshd进程是否在运行,ssh是你想过滤的条件

  8 less打开文件:ctrl+b:下翻页       ctrl+f:上翻页

  9 wget:下载

    先安装包:yum install wget

        wget 文件url路径            此时文件默认下载在当前路径

        修改下载路径:wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo #此时-O后面是你的想保存的下载路径,后面再跟                                              url。

  10 curl:连通性(curl www.baidu.com)
      你的django项目运行在:127.0.0.1:8080端口,然后加入外界出问题连不进来。解决方法:

      先在本地curl一下,看看能不能通,可能是防火墙,阿里云的安全组

      curl -o /home/a.png https:72743-20190.png

  11 上传下载 (4g以内,比如你想从电脑上上传文件到Linux上)
        先安装包:yum install lrzsz -y

        rz:上传,选择文件直接上传(直接输入rz,会出现窗口)

        sz:sz 文件路径(sz a.png),可以下载到当前主机

  12 which 命令:查询命令在哪
    去/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/root/bin 路径找有没有你需要查询的命令。

  13 whereis -b ls  查找ls命令,只找二进制(可执行文件)

  14 sort
       sort file.txt  对内容进行排序
       sort -t ":" -k2 file.txt    :此时是按照:分割后,第二部分内容排序,比如a:2,此时就按照2代表的数字进行排序,但是是按照ascll码排序的
       sort -t ":" -n -k2 file.txt:同上,但是加了n,此时就是单纯按照数字排序。

  15 uniq 去重,连续挨着的才能去,所以要跟sort连用(先排序再去重,所以要连用)
       sort file2.txt | uniq

  16 cut 截取字段

    echo "it's my qq" >file.txt             #相当于把"it's my qq" 存储到了文件file.txt  
         cut -d " " -f2,5 file.txt                   #把字符串按“ ” 分割,取出第2和第5个

  17 wc:统计查询
       wc -l /etc/services                       #查看文件夹内容的行数
       ls | wc -l                                      # 统计当前路径下有多少文件和文件夹
       ps aux |grep ssh | wc -l              # 统计有多少个ssh相关的进程


2 文件属性文件类型

  命令:ls -l -rw-r--r--. 1 root root 43856 Aug 19 11:54 a.png

    ls -l
    ls -lh  以人性化显示,文件显示出是多少kb,gb的大小
    -:文件类型       
    rw-r--r--.:权限 
    1:硬链接的
    root:属主(属于哪个用户)
    root:属组(属于哪个组)
    43856 :大小
    Aug 19 11:54 :修改时间
    a.png:文件名字

  
文件类型:(前两个重要)
    -   #普通文件(文本, 二进制, 压缩, 图片, 日志等) 
    d   #目录文件


    b   #设备文件(块设备)存储设备硬盘 /dev/sda1, /dev/sda2
    c   #设备文件(字符设备),终端 /dev/tty1, /dev/zero
    s   #套接字文件, 进程间通信(socket)
    p   #管道文件
    l   #链接文件

  
通过file来查看详细的类型
     file a.txt 
     file /bin/ls
        
3 软连接,硬连接

  1 软链接和硬链接:软链接新建inode,硬链接指向同一个inode,inode指文件原信息,存放到硬盘上的原信息。

  2 软链接---》相当于快捷方式
      -ln -s a.png /home/jack/a.png(建立软连接,将-ln -s 真正文件路径 软连接到的文件路径)
      -一般咱们对可执行文件建立软链接(删除不会删除原来)

      -软链接目录: (常用)
          redis-3.2.1---->编译安装
          redis-3.2.1/bin  路径配到环境变量

          软件升级
            redis-4.2.1

          -建立软链接redis---》redis-3.2.1
            redis/bin  路径配到环境变量

          再次软件升级,就只需要升级,以前这个redis/bin环境变量就可以不变,所以在配置环境变量时,不需要配版本号。
            redis软链接到---》redis-4.2.1

  3 ln  /root/file /tmp/file_hard  (了解)(ln 需要硬链接的文件名字 硬链接到哪里的文件地址

第四天:

 1 vim
  # yum install vim -y     #安装包

  vim 文件夹名 (此时创建了这个文件夹,然后此文件夹你进去就有下面三种模式,你选择)

  vim有三种模式: 普通模式、编辑模式、命令模式

    # 普通模式(刚进入就是普通模式,不能输入,只能查看):
        -上下翻:ctrl+f:向下翻页  ctrl+b:向上翻页
        -yy 复制一行
        -p   粘贴
        -dd  剪切
        -p   把上面剪切的粘贴上

    # 编辑模式(按i就进入编辑模式)
        -i:insert插入
        -a:append追加
        -o:换行
        -正常写就可以了
        -esc回到普通模式

    # 命令模式(不能从普通模式直接进入,先进入编辑模式,在进入命令模式。输入冒号,就进入命令模式):

         -w  表示保存
         -q   退出
         -!  强制退出
         -修改了文件后保存:  wq    wq!
         -修改了不想保存退出: q     q!
         -:set nu 显示行号
         -:set nonu 不显示行号
         -/字符串    搜索这个字符串
         -:%s#sbin#test#g #替换整个文本文件中包含sbin的替换为test

  2 用户相关
    #1  id  查看当前用户信息
      uid=0(root):用户的id号                  gid=0(root) :用户组id号                        groups=0(root):用户属于哪一个组

    #2  用户信息保存在 cat /etc/passwd
      root:x:0:0:root:/root:/bin/bash     #按照冒号分隔,依次为用户名,密码占位符,用户uid,组gid,注释信息,用户家目录,登录shell

    #3  密码存放路径 cat /etc/shadow

    #4 约定不同用户的uid属于某个范围(了解)

    # 5 用户的增,删,改
        -useradd(增加)(一个用户只能属于一个主组,属于多个附加组)
             -groupadd sa  新增一个组
             -groupadd sa1  新增一个组
             -groupadd students 新增一个组
             -useradd -u 5001 -g students -G sa,sa1 -c "2020 new student" -s /bin/bash wmt1

         -u:指定uid,-g:指定主组,-G:指定附加组,-c:备注信息,-s:指定登陆的shell,wmt1:这个是名字,自己设定

          -创建mysql系统用户,-M:不建立用户家目录,-s:指定nologin使其用户无法登陆系统 
               useradd mysql -M -s /sbin/nologin          #此时用MySQL这个用户就无法登录上去。

        -usermod(修改)
             -usermod -c "2019 new student" -md /bgx -s /bin/sh -l change_bgx bgx

        此句话表示修改bgx用户的注释信息,-md把原来的数据(环境变量)移动,-l:表示修改名字。

             -usermod -L change_bgx             #表示锁定用户,然后锁定后会无法登陆系统
             -usermod -U change_bgx            #解锁用户

        -userdel(删除)
             -userdel egon                               # 删除用户,不删家目录
             -userdel -r egon1                          # 删除用户,删家目录
        
    #6  改密码
        -passwd root             #passwd 用户名  就可以修改名字

    #7 组增删改

        -groupadd no_gid                                         新增组
        -groupmod -g 1111 student                          改组id号
        -groupmod student -n new_student             改组名字
        -groupdel new_student                                删除组(组下没有人,把人删除,再删)
 
    # 8 su 和sudo(重要)

        -su:切换用户
             -su - jack:             打开新的shell,会加载自己的环境变量(一般用这个)
             -su jack:               不打开新的shell,不会加载它的环境变量

        -sudo:普通用户可以有一些超级用户的权限,不需要输入密码

             usermod jack -G wheel       # 把jack用户加入到了wheel组,这个组里面分配了相关权限,如果创建相关东西需要输入密码就是自己的密码,而不是管理员密码

             -你这个用户没有权限,你尝试 sudo mkdir ll试一下,不行,超级管理员没有给你配这个权限

     特殊权限:权限属性chattr
       #方式表示:+ 增加权限 -减少权限 =等于某个权限
       # a:让文件或目录仅可追加内容
       # i:不得任意更动文件或目录
       # 给某个文件或者文件夹加特殊权限
           -chattr +i lqz.text         #此时这个文件就不能删除了,因为加了 i 这个权限
           -chattr -i lqz.text          #执行此命令后就可以删除了,因为减了 i 这个权限

     压缩解压
       #1  Windows的压缩包与Linux的压缩包能否互通
           windwods:rar,zip  
           linux:tar.gz,zip互通,不支持rar

       # 2 gzip (只能压一个文件,不能压文件夹,会把原来的删除)
           -gzip file                       #压缩文件:gzip 文件名
           -gzip -d file                   #解压文件:gzip -d 文件名
           -有什么用?
           -cd /etc/yum.repos.d/

       #3 zip的压缩和解压

            -yum install zip unzip -y                  #先安装压缩包
            -zip  filename.zip  filename             #压单个文件
            -zip -r home.zip /home/                   #把home文件夹压缩
            -unzip  home.zip                             #解压
            -unzip -l  home.zip                          #不解压,看内容
            -unzip home.zip  -d /opt/                 #把当前路径下的home.zip 解压到opt
    
       # 4 tar打包与压缩
            -tar -czf 文件                 打包 tar.gz 格式
            -tar -xf  xx.tar.gz            解压xx.tar.gz
   
            tar -xzvf  xx.tar.gz          解压tar.gz,详细过程列出来
   
            -tar -czf home.tar.gz dd/ lqz1 lqz2 /home/         

            #此时代表跨文件夹压缩,此时代表把dd文件夹,lqz1,lqz2文件,以及home文件夹压缩在一个压缩包home.tar.gz里面

            -tar czf etc.tar.gz --exclude=etc/services etc/                   # --exclude=后面加要排除文件或文件夹,这样排除的就不会被打包
            -tar xf /etc/local.tar.gz  -C /tmp                                         # -C指定解压到哪个路径

       5 软件管理:rpm
          #1  红帽的软件安装包(相当于windows的:exe,mis)
          #2  mount /dev/cdrom /mnt                  把光盘挂在到 /mnt文件夹
          #3  Linux中除了rpm安装软件,还有安装软件方式
              -源码安装-->官网下源码--》编译安装---》最新
              -rpm包,预先编译打包,安装简单,yum安装,本质就是rmp安装--》稍微老一些
              -二进制包:绿色包
    
            -安装rpm的软件:rpm -ivh tree-1.6.0-10.el7.x86_64.rpm                 #rpm -ivh 安装的软件完整名
            -强制安装:rpm -ivh --force /mnt/Packages/tree-1.5.3-3.el6.x86_64.rpm
    
            -rpm -q :                                       查看这个软件是否安装********
            -rpm -qa |grep tr  :                       列出所有安装的软件
            -rpm -ql :                                         查询指定软件包所安装的目录、文件列表rpm -ql unzip *****
            -rpm -qc unzip:                               查看这个软件的配置文件位置
            -rpm -qf /etc/pam.d/vsftpd  :       查看配置文件属于哪个软件
            -rpm -qlp trace-cmd-2.6.0-10.el7.x86_64.rpm :                       查看该软件包安装后会释放哪些文件
    
            -使用远程地址安装:rpm -ivh https://mirrors.aliyun.com/zabbix/zabbix/3.0/rhel/7/x86_64/zabbix-agent-3.0.8-2.el7.x86_64.rpm
              -rpm -Uivh 需要安装的软件远程地址                            升级软件需要用  U
              -rpm -e zabbix-agent           卸载软件,-rpm -e 软件名
    
       6 yum仓库,源(默认是国外源,需要替换为国内源)

        # 1 Yum是RedHat以及CentOS中的软件包管理器。能够通过互联网下载 .rpm 包并且安装,并可以自动处理依赖性关系,无须繁琐地一次次下载、安装

        # 2 cd /etc/yum.repos.d/  路径下有xx.repo 文件---》yum源

        # 3 换阿里云的源
            wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo(换源后的地址)
        
        # 4 配置其他源(安装epel扩展源)
            -wget -O /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
              -yum install nginx                 #换源后在安装
              -yum provides ipconfig         #通过命令查软件,这个命令属于哪个软件
              -rpm -qf `which ifconfig       #查命令属于哪个软件,前提是该软件安装了
补充
# psutils
# django channels
# websocket:https://www.cnblogs.com/liuqingzheng/p/10151572.html

# paramiko
import paramiko



ssh = paramiko.SSHClient()
# 允许连接不在know_hosts文件中的主机
ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
# 连接服务器
ssh.connect(hostname='10.0.0.100', port=22, username='root', password='123')

# 执行命令
stdin, stdout, stderr = ssh.exec_command('yum install vim -y')
# 获取命令结果
result = stdout.read()
print(result.decode('utf-8'))
# 关闭连接
ssh.close()

 

第五天:

windows不支持epoll模型,redis是io多路复用,使用epoll模型,所以redis不支持windows。扩展io模型之select,poll,epoll

1 基本权限chmod
   1 rwxr-xr-x
       rwx:属主(文件所有者)      r-x:属组权限      r-x:其他人权限

      r:可读           w:可写          x:可执行

   2 权限详解

        r:read写权限 对应权限4

        w: write写权限 对应权限2

        x:可执行  对应权限1

     3 修改权限(可以是root用户,或者创建这个组的用户)
        7=4(r)+2(w)+1(x),就是将可读,可写,可执行的对应权限加起来,有什么权限就加什么权限对应的数值

        chmod 777 文件夹/文件

      #第一个7代表属主有全部权限,第二个7代表属组有全部权限,第三个7代表其他人有全部权限


2 软件管理之二进制安装

  1 会了yum安装,为什么还要会二进制安装(编译安装)
      -官方不提供yum安装
      -二进制安装是最新的
  

  2 向服务器传递文件的几种方式 (从电脑向Linux服务器传文件)

      -scp nginx-1.18.0.tar.gz root@101.133.225.166:/home/jack           #将电脑文件nginx-1.18.0.tar.gz以root权限 root传递到101.133.225.166地址的文夹:/home/jack
      -sz,rz
      -xftp软件来传
    
    
3 源码安装nginx
      -1 下载:下载软件源码
      -2 解压:对源码压缩包进行解压
        -2.1 安装依赖
            -yum install -y pcre-devel gcc gcc-c++ make zlib-devel openssl-devel

      -3 通过configure 生成配置信息,配置相关的选项,并生成Makefile,软件安装的信息
            ./configure --prefix=/usr/local/nginx(必须执行)

   要切换到ngix文件路径下执行

      -4 make                     按照Makefile生成的安装软件
      -5 make install           将二进制文件拷贝至对应的目录中
      -6 目录介绍
            conf :配置文件都放在这
            html :静态文件存放路径,index.html
            logs :日志
            sbin :可执行文件

      -7 命令介绍
            nginx  # 启动
            nginx -s reload # 重新加载,修改配置文件
            nginx -s restart  # 重启
            nginx -s stop # 停止

      -8 在任意路径敲nginx都能执行
            -建立软链接  ln -s /usr/loacl/nginx/sbin/nginx /sbin/nginx
            -把/usr/loacl/nginx/sbin/路径加入环境变量
            -想使用systemctl 管理(制作系统服务)


4 进程管理(相当于Windows上的任务管理器)
  #1  ps -aux                                      #查看系统进程。用这个。[] 中括号里面的代表系统进程
  #2  ps -ef                                         #同上,但更详细
  #3  ps -aux|grep id,进程名字           #查看过滤进程,后面可以加你查看进程的id号或者名字
  # 4 top                                             #实时看状态
  # 5 kill -1                                          #代表重新加载配置文件,不是强行关闭,重新读取配置文件,使用方法和kill - 9一样。
  # 6 kill -9 进程id号                           #强行关闭,kill -9:代表强行关闭,后面加你关闭进程的进程id号
  # 7 pkill -9 nginx                              #关闭nginx所有进程
  # 8 killall nginx                                 #关闭nginx所有进程

执行耗时任务:

  当执行耗时任务时,界面不能操作其他,此时就可以将任务挂在后台,然后就可以进行其他操作了。

  

5 系统服务

  #1  centos6 上启动服务service start network
  #2  centos7 启动服务:systemctl start network

  #3  cd /usr/lib/systemd/system/                       #在这个路径下配置,比如安装以二进制安装ngix,此时不支持systemtctl管理,而yum安装的支持,所以需要在这里设置

  ###第三步的解决:设置制作系统服务
      先创建自己的设置文件: vim mynginx.service
   然后在此文件夹下写入以下配置
    [Unit]
    Description=my nginx
    After=network.target             #在哪个服务启动后再启动,此时代表再network.target启动后再启动。这里可以自己设置文件服务
    [Service]
    Type=forking
    ExecStart=/usr/local/nginx/sbin/nginx
    ExecStop=/usr/local/nginx/sbin/nginx -s stop
    ExecRestart=/usr/local/nginx/sbin/nginx -s restart
    ExecReload=/usr/local/nginx/sbin/nginx -s reload
    [Install]
    WantedBy=multi-user.target                 #在哪个运行级别下

   #配置保存退出后。以后就支持使用 systemctl start mynginx.service

   # 查看服务状态:
        systemctl status mynginx.service
          # disabled表示没有开机自启动
          Loaded: loaded (/usr/lib/systemd/system/mynginx.service; disabled; vendor preset: disabled)
   # 开机自启动
        systemctl enable mynginx
   # 取消开机自启动
     systemctl disable mynginx.service

posted @ 2022-03-18 11:05  新入世界的小白  阅读(49)  评论(0编辑  收藏  举报