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  阅读(153)  评论(0)    收藏  举报