Linux 常用指令学习

一、vim

  1. 复制、粘贴

     yy
     p
    
  2. 删除

     dd
    
  3. 行号,跳转指定行

     set nu
     set nonu
    
  4. 跳转

     # 行首
     gg
     # 行末
     shift + g
    
  5. 全选

  6. 替换

     :%s/源字符串/目的字符串/g
    
  7. 修改ssh连接超时时间

  • vim /etc/ssh/sshd_config

      # 服务器端间隔 30 秒向客户端发送心跳
      ClientAliveInterval 30
      # 120 次后关闭
      ClientAliveCountMax 120
      120 * 30 = 3600 秒
    
  • vim /etc/ssh/ssh_config

      # 每隔多少秒客户端向服务端发送一次心跳(alive 检测)
      ServerAliveInterval:30
      # 服务端多少次心跳无响应之后,客户端才会认为与服务器的 SSH 连接已经断开,然后断开连接
      ServerAliveCountMax:120
    

二、用户管理

1.添加用户

    useradd 用户名

2.设置密码【需要登录到至该用户下】

    passwd  自定义密码

3.删除用户

    # 删除用户目录
    userdel -r 用户名
    # 不删除用户目录
    userdel 用户名

4.用户组

    # 创建组
    groupadd 组名
    # 指定组名创建用户
    useradd -g 组名         用户名
    # 用户切换组
    usermod -g 组名        用户名
    # 为已存在用户添加新的权限组
    usermod -a -G 组名 用户名
  1. 相关文件

     /etc/passwd
     /etc/shadow
     /etc/group
    
     vim /etc/sudoers
     # 切换用户不需要密码  [username ALL=(ALL) ALL]
    
     vim /etc/pam.d/su
     # 去掉注释: auth            sufficient      pam_wheel.so trust use_uid
     # 将用户加入 wheel组[管理组] ,此后用户 su root 不需要密码
    

六、运行级别

    init [级别]
  • 0 停机,默认值不能设为0 无法正常启动
  • 1 单用户工作状态
  • 2 多用户无网络
  • 3 无界面,完全体多用户(有网络)
  • 4 未使用,保留状态
  • 5 图形化GUI模式
  • 6 正常关闭并重启重启,默认值不能设为6 无法正常启动

七、文件目录指令

  1. 创建目录

     # 创建单个目录
     mkdir -p /dir1
     # 创建多级目录
     mkdir -p /dir1/dir2/dir3
    
  2. 删除

     rmdir 和 rm -rf 
    
  3. 创建空文件

     touch  fileName.fileType
    
  4. 文件查看

     echo  cat less more  head tail
     # echo $JAVA_HOME
     # tail -f 实时
     # tail -n 100 filename.xxx
    
  5. 输出重定向

     # 覆盖
     echo "内容" > fileName.xxx
     # 追加
     echo "内容" >> fileName.xxx
    
  6. 文件查找

     # 文件查找 find
     find / -name xxx
     find / -user xxx
     
     # 指令查找 which 
     which netstat
     which reboot
    
     # grep  过滤查找,一般与 管道符 " | " 一起使用   常用搭配 wc:(word count 计数)
     cat fileName.xxx | grep "love you" | wc  
    
  7. 目录大小统计

    du -h --max-depth=0 *
    

八、rpm以及yum

rpm 用于从互联网下载以及安装包,它包含在某些linux分发版本中,它生成具有rpm拓展名的文件。

  1. 信息查询

     # 过滤查找rpm 软件包
     rpm -qa | grep python 
     # 查找软件是否安装
     rpm -q python
     # 详细信息
     rpm -qi python
     # 查询rpm 包中的文件
     rpm -ql python
     # 查询文件所属的软件包
     rpm -qf /etc/my.cnf
    
  2. 删除

     rpm -e firefox-91.4.0-1.el7.centos.x86_64
    
  3. 安装

     rpm -ivh rpm包全路径名称        
     # i:install
     # v:verbose
     # h:hash 进度条
    
  4. yum

  • yum 是shell 前端软件包管理器,基于rpm包管理,能从指定服务器自动下载rpm包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包

              # 查看yum服务器是否有安装包
              yum list|grep python
              # yum 安装
              yum install python
              # 基础组件安装
              yum groupinstall base 
    

九、文件目录权限管理

  1. chmod 修改权限

     4 + 2 + 1 = 7 (r + w + x)
     # u:user        g:group o:other a:all
     chmod g+wx /home/any_file_or_directory
     chmod 724        /home/any_file_or_directory
    
  2. chown change owner

     chown root:root  /any_file_or_directory 
    
  3. chgrp

     chgrp root /any_file_or_directory
    

十、磁盘挂载

  1. 显示磁盘分区:

     fdisk -l         
     fdisk -f
    
  2. 磁盘分区:fdisk /dev/sdb

  3. 格式化:mkfs -t ext4 /dev/sdb2

  4. 磁盘挂载: mount /dev/sdb2/ /ranchen [重启会失效]

  5. 永久挂载,修改:/etc/fstab 文件

     # 通过UUID 挂载
     UUID=b35480fb-0cf8-45b5-a449-70277f85200b   /ranchen                ext4    defaults        0 0
     # 通过名称挂载
     /dev/sdb2                                   /ranchen                ext4    defaults        0 0
    
  6. 卸载(取消挂载),重启生效: umount /dev/sdb2

  7. 磁盘容量

     # 总览 
     df -h
     # 特定目录
     df -h /home
     # du  h:计量单位    a(all):含文件  c(count):怎加汇总  --max-depth=x:深度
     du -h
     du -h --max-depth=1 /home
     du -hac --max-depth=1 /home
     tree /opt
    

十一、网卡编辑

  1. 查看网卡

       ifconfig
    
  2. 编辑网卡

       vim /etc/sysconfig/network-scripts/ifcfg-ens33
    
  3. 网卡信息

     TYPE=Ethernet
     PROXY_METHOD=none
     BROWSER_ONLY=no
     BOOTPROTO=dhcp                dhcp-动态分配        static-静态IP
     DEFROUTE=yes                                                 
     IPV4_FAILURE_FATAL=no
     IPV6INIT=yes
     IPV6_AUTOCONF=yes
     IPV6_DEFROUTE=yes
     IPV6_FAILURE_FATAL=no
     IPV6_ADDR_GEN_MODE=stable-privacy
     NAME=ens33
     UUID=30fc8be6-7ebd-420d-baa6-6880c196d039
     DEVICE=ens33                                                                 # 网卡名
     ONBOOT=yes
     IPADDR=192.168.126.132                         # IPv4 地址
     PREFIX=24
     GATEWAY=192.168.126.2                                # 网关
     DNS1=8.8.8.8                                                                 # DNS
     IPV6_PRIVACY=no
    
  4. 重启网络服务

             systemctl restart network
    
  5. 主机名

             # 显示
             hostname
             # 修改
             vim /etc/hostname
    
  6. hosts 映射,支持通过主机名进行网络交互

      vim /etc/hosts
    
  7. dns 解析顺序

     浏览器缓存  >>  dns解析缓存  >>  hosts文件映射   >> 查询网段上的dns服务器
    

十二、进程管理

  1. 查看进程

     # 进程全格式信息
     ps -ef        
     # -a:所有进程        -u:显示用户信息         -x:进程运行参数
    
  2. 进程树 pstree,yum安装:

  • yum install psmisc

      # 进程树 -p: 进程PID        -u:用户
      pstree -u root
      pstree -p 1
    

十三、服务管理

概念: 系统服务 (守护进程)

  1. 服务管理 systemctl

     # 常用
     systemctl  start|stop|restart|reload|status  服务名
     # 重启mysql
     systemctl restart mysqld
     # 查看mysql服务开启启动状态
     systemctl list-unit-files grep | mysqld
     # 设置mysql开启自启
     systemctl enable mysqld 
     # 关闭开机自启
     systemctl disable mysqld
     # 查看是否自动启动
     systemctl is-enbaled mysqld
    
  2. 防火墙服务:firewalld

     # 查看端口是否开放
     firewall-cmd --query-port=8080/tcp
     firewall-cmd --query-port=8080/udp  
     # 开放端口
     firewall-cmd --permanent --add-port=8080/tcp
     firewall-cmd --permanent --add-port=8080/udp
     # 关闭端口
     firewall-cmd --permanent --remove-port=8080/tcp
     firewall-cmd --permanent --remove-port=8080/udp
     # 重新加载
     firewall-cmd --reload
    
  3. 动态监控:top

     # shift + P         cpu排序
     # shift + M         内存排序
     # shift + N         进程号排序
    
  4. 系统网络状况:netstat

     # -an  按序排列输出  -p:输出进程信息
     netstat -anp | grep 3306
    

十四、shell 脚本编写

  • vim love_you.sh

      #!/bin/bash
      echo "I love you"
    
  • sh love_you

  1. shell 变量:系统变量、用户自定义变量

     #!/bin/bash
     # 定义变量
     BOKERR_HOME=/home/bokerr
     # 撤销变量
     unset BOKERR_HOME
     # 静态变量,不能撤销
     readonly BOKERR_HOME=/home/bokerr
    
  2. 变量赋值

  • vim bokerr.sh

      #!/bin/bash
      IDATA="2022-01-05"
      echo $IDATA
      IDATA=`date`    # 命名执行结果赋值变量
      echo $IDATA
      IDATA=$('pwd')  # 命名执行结果赋值变量
      echo $IDATA
    
  • sh bokerr

  1. 环境变量
  • export 将shell 变量输出为环境变量[全局变量]

      export IDATA=/home/bokerr  
    
  • source 刷新配置文件,让其立即生效

      source  /etc/profile
    
  • echo 将变量输出的控制台

      echo $JAVA_HOME
    
  1. 位置参数变量

     #!/bin/bash
     echo $0         # 命令本身:bokerr.sh
     echo $1         # 参数-1:  2 
     echo $2         # 参数-2:  1
     echo $*         # 全部参数视为整体
     echo $@         # 代表全部参数,但是每个参数区分对待
     echo $#         # 代表参数个数
    
  • sh bokerr.sh 2 1
  1. 预定义变量,shell 本真自带变量

     echo $$     # 进程号
     echo $!     # 后台运行的最后一个进程号
     echo $?     # 最后一次执行的命令的返回状态
    
  2. 运算符

     IDATA=$((3 + 8))
     echo $IDATA
     IDATA=$[3+9]
     echo $IDATA
     IDATA=`expr 3 + 10`    # 支持 \* (乘:转义加星号)   / (除)   % (取余)  
     echo $IDATA       
    
  3. 条件判断&流程控制

     VA=2
     VB=3
     if [ $VA -lt $VB ]
     then
       echo "aaaa"
     elif [ $VA -le $VB ]
     then
        echo "bbbb"
     elif [ $VA -eq $VB ]
     then
        echo "cccc"
     fi
    
     a.整数比较
     lt  -little
     le  -little equal
     # eq  -equal
     # gt  -大于
     # ge  -大于等于
     # ne  -不等于
     # b.文件权限
     -r
     -w
     -x
     # c.判断文件类型
     -f   # 常规文件
     -e   # 文件存在
     -d   # 是一个目录
    
  4. read获取输入

     #!/bin/bash
     # -t 10: 等待10秒
     read -t 10 -p "input some words:"  IDATA
     echo $IDATA
    
  5. 系统函数

  • basename 返回完整路径中最后一个 / 之后的内容[文件名]

      IDATA=`basename /home/rsy/love.md`
      echo $IDATA
      --- 输出:  love.md
      IDATA=`basename /home/rsy/love.md  .md`
      echo $IDATA
      --- 输出:  love
    
  • dirname 返回完整路径中最后一个 / 之前的内容[文件路径]

  1. 自定义函数

    function addNumber(){
            SUM=$[$n1+$n2]
            echo "SUM=$SUM"
    }
    read -p "n1=" n1
    read -p "n2=" n2
    addNumber $n1 $n2
    
  2. 执行 mysqldump 备份mysql库

    #!/bin/bash
    BACKUP=/home/uData/bak_home
    DATENOW=$(date +%Y-%m-%d_%H%M%S)
    echo $DATENOW
    HOST=localhost
    DB_USER=root
    DB_PASS=bokerr.com
    DB_SCHEMA=supervise
    
    # create backHome
    [ ! -d "${BACKUP}/${DATENOW}" ] && mkdir -p "${BACKUP}/${DATENOW}"
    
    # back up the mysql  database name of `$DB_SCHEMA`
    mysqldump -u${DB_USER} -p${DB_PASS} --host=${host} -q -R --databases ${DB_SCHEMA} | gzip > ${BACKUP}/${DATENOW}/$DATENOW.sql.gz
    
    # move to tar.gz then delete directory
    cd ${BACKUP}
    tar -czvf $DATENOW.tar.gz ${DATENOW}/
    rm -rf ${DATENOW}/
    
    # finally delete back over ten days
    find ${BACKUP} -atime +10 -name "*.tar.gz" -exec rm -rf {} \;
    echo "back database $DB_SCHEMA success!"
    

十五、定时任务

  • crontab -e

      # 定时每天23点30分执行脚本
      30 23 * * * ./home/uData/rsy.sh
    
  • crontab -l 显示所有任务

  • crontab -r 删除所有任务

十六、ssh

1.生成ssh秘钥

ssh-keygen

  1. 发送公钥配置ssh免密:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@xx.xx.xx.xxx

posted @ 2022-01-06 00:00  bokerr  阅读(83)  评论(0编辑  收藏  举报