• 进程、虚拟环境、mysql


    ICMP协议 ---> ping使用的

    查看进程 ps

     ps [options]

    支持的命令格式

    • unix格式,如:-h -e
    • BSD格式,如:a,x,u
    • GNU长格式,如: --help

    选项

    #ps
    PID   TTY         TIME         CMD
    28019 pts/4     00:00:00       ps
    83674 pts/4     00:00:00       bash
    pid   终端  当前命令占用cpu的时间  命令

    a 所有的终端
    x 包括不连接终端的进程(系统自动开启的)
    u 显示进程详细信息
    f 显示进程树
    k 指定排序方式 ,默认是递增,如果想递减,则需要在排序的字段上加上-
    ps aux -k%cpu
    o 指定显示的属性,不能跟u同时使用,多个属性用,分隔
    L 获取支持的选项,

    -L 显示线程
    -e 相当于 ax
    -f 显示详细信息,相当于u
    -F 显示更详细信息
    -H 显示树状结构
    -U username 获取指定的用户信息
    常用选项: aux -ef -eFH

    ps输出属性

    VSZ 虚拟内存(程序认为可以获取到的)

    RSS 实际内存

    psr cpu的编号

    STAT 状态

    %cpu cpu的占用率

    %mem 内存的占用率

    根据名称来查询进程

    pidof name

    #
    pidof python
    1169 825

    系统工具

    uptime

    #uptime 
    09:17:40   up 1 day, 22:19,    5 users,     load average: 2.14, 1.59, 0.84
    当前时间    当前服务器运行时长  当前的在线用户数    cpu的负载 1分钟 5分钟 15分钟

    cpu平均负载:在特定时间之内cpu运行的平均进程数,不超过cpu核心数的2倍认为为良好

    top

    选项:

    -d 刷新时间

    -b 显示所有的信息

    -n #指定刷新#次后退出

    首部信息

    • uptime信息。按 l:显示与隐藏
    • tasks :进程总数,运行,睡眠数,停止数,僵尸进程。 t
    • cpu信息:
    %Cpu(s): 0.3 us,  4.6 sy, 0.0 ni,  95.0 id,  0.0 wa,  0.0 hi,  0.0 si,  0.0 st

            用户空间   系统空间  nice值    空闲       等待    硬中断    软中断  虚拟机偷走时间
    • 内存信息。m
    • cpu分别显示 。1(数字)

    排序:

    默认是cpu的占用率。P

    M:内存占用率

    T: cpu的占用时间

    退出:q

    修改刷新频率:s,默认是3秒

    杀死进程:k,默认是第一个

    W 保存文件

    htop

    在epel源中

    性能分析

    free

    -b 字节
    -k kb
    -m mb
    -g gb
    -h 人类易读方式
    -c # 刷新次数

    vmstat

    vmstat [options] [delay [count]]

    #
    vmstat 1 3 每秒刷新一次,刷新3次
    procs -----------memory---------- ---swap-- -----io---- -system-- ------cpu-----
     r  b   swpd   free   buff  cache   si   so    bi    bo   in   cs us sy id wa st
     1  0  37028 162708      0 808588    0    0     8     6   34   34  0  2 97  0  0

    procs:
    r:正在运行的进程个数
    b:阻塞队列的长度

    memory:
    swap: 虚拟内容大小
    free: 空闲物理内存的大小
    buff:用于buff的大小
    cache:用户cache的大小

    swap:
    si:从磁盘交换到内存的数据速率(kb/s)
    so: 从内存交换到磁盘的数据速率(kb/s)

    io:
    bi: 从磁盘读取到系统的速率(kb/s)
    bo: 从系统写入到磁盘的速率(kb/s)

    system:
    in:中断频率
    cs:进程之前切换的频率

    cpu:
    us
    sy
    id
    wa
    st

    iostat

    查看磁盘读写速度

    iostat 1 10 刷新频率与次数

    dstat 查看所有

    -c cpu
    -d 硬盘
    -m 内存
    -n 网络
    -p 进程
    -r io请求
    -s swap
    --top-cpu 显示占用cpu最多的进程
    --top-io 显示占用io最多的进程
    --top-mem 显示占用内存最多的进程
    --tcp 显示tcp的信息
    --udp 显示udp的信息

    iftop 显示网卡的流量

    进程的管理工具

    kill:向进程发送信号,实现对进程的管理,每个信号,对应不同的值,对应不同的含义,不区分大小写

    查询可用信号:kill -l

    常用信号:

    • sighub 不需要关闭程序,重新加载配置文件
    • sigint 终止进程,相当于ctrl+c
    • sigkill 强制杀死进程
    • sigterm 终止正在运行的进程
    • sigcont 继续运行
    • sigstop 后台休眠

    按照pid: kill-n pid

    按照名称:killall -n name

    按照名称:pkill -n name

    作业管理

    前台作业:一直占用终端的作业

    后台作业:不占用当前的终端

    让作业运行于后台:

    • ctrl+z 对于启动中
    • command & 也会输出到终端

    脱离终端:

    • nohup command &>/dev/null &
    • screen
    -list 查看所有的screen窗口
    -r 进入

    安全

    防火墙

    绿盟、深信服、启明星辰、飞塔、思科、华为、华三等等

    4表5链
    iptables -L 查看 防火墙策略
    iptables -F 清空 防火墙
    systemctl disable firewalld 开机并启动
    systemctl stop firewalled
    selinux

    一般将其关闭:进入配置文件,修改SELINUX=disabled

    • 配置文件 /etc/selinux/config
    • setenforce 0 临时生效
    • getenforce 查看selinux的状态

    Linux中编译后的软件如果想删除,直接删除编译生成到目录就可以

    虚拟环境

    安装:

    pip3 install virtualenv -i https://pypi.tuna.tsinghua.edu.cn/simple

    创建虚拟环境:

    virtualenv --no-site-packages envdir_name 

    --no-site-packages 创建一个全新的python环境
    --python 指定以哪个python来创建虚拟环境

    进入虚拟环境:

    source envdir/bin/activate 

    退出虚拟环境:

    deactivate

    将Windows中的项目放在Linux中运行,确保环境一致:

    在windows上执行如下命令:
    # 将windows上安装的包做快照
    pip freeze > requirement.txt
    # 将requirement.txt发送到linux上
    # 切换虚拟机
    pip install -r requirement.txt -i https://pypi.tuna.tsinghua.edu.cn/simple

    virtualenvwrapper

    为了解决虚拟环境管理的问题,因为虚拟环境可以在任何目录下创建

    1. 安装
    pip3 install virtualenvwrapper -i https://pypi.tuna.tsinghua.edu.cn/simple

    2.修改文件
    vim ~/.bashrc
    export WORKON_HOME=/envdir    # 设置virtualenv的统一管理目录
    export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'   # 添加virtualenvwrapper的参数,生成干净隔绝的环境
    export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3      # 指定python解释器
    source /opt/python36/bin/virtualenvwrapper.sh  # 执行virtualenvwrapper安装脚本

    3. 加载~/.bashrc
    source ~/.bashrc

    4.创建环境
    mkvirtualenv django11 创建并切换
    5.进入虚拟环境
    workon name
    6.切换到当前虚拟环境的文件夹
    cdvirtualenv
    7.切换到当前虚拟环境的第三方包的文件夹
    cdsitepackages
    8.退出
    deactivate
    9.列出当前管理的虚拟环境
    lsvirtualenv
    10.列出当前虚拟环境的第三方包
    lssitepackages
    11.删除虚拟环境
    rmvirtualenv 必须要退出才能删除

    mysql

    mariadb是mysql的分支,可以直接在官方网站下载。

    下载:

    wget http://mirrors.sohu.com/mysql/MySQL-5.7/mysql-5.7.27-1.el7.x86_64.rpm-bundle.tar

    解压:

    tar xf MySQL-5.6.44-1.el7.x86_64.rpm-bundle.tar

    安装:

    yum install -y *.rpm

    默认安装位置:/var/lib/mysql,配置文件/etc/my.cnf

    为mysql系统用户增加读写权限chown mysql -R /mydata/mysql

    其中mydata目录是mysql数据存储位置,可在配置文件中查看与修改。

    启动服务systemctl start mysqld

    报错信息:

    2019-08-30T11:18:22.976635Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    2019-08-30T11:18:22.976687Z 0 [Note] /usr/sbin/mysqld (mysqld 5.7.27) starting as process 2788 ...
    2019-08-30T11:18:22.980289Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    2019-08-30T11:18:22.980338Z 0 [Warning] Can't create test file /mydata/mysql/localhost.lower-test
    原因:selinux
    解决办法:setenforce 0

    重置密码

    日志文件/var/log/mysqld.log

    默认密码:
    grep 'pass' /var/log/mysqld.log

    #
     初识化密码
    mysql_secure_installation
    输入root密码
    是否要修改密码
    是否要修改root密码(大小写、数字、特殊字符)
    是否要删除匿名用户
    是否禁止root远程登录
    是否要删除test数据库
    是否要刷新表的权限

    密码校验规则

    设置密码的校验规则
    mysql> set global validate_password_policy=0;
    0 校验级别最低,只校验密码的长度,长度可以设定
    1 必须包括大写字母、小写字母、数字、特殊字符
    2 必须满足上面两条,并追加,对于密码中任意连续的4个(或者4个以上) 字符不能是字典中的单词
    mysql> set global validate_password_length=3; 修改密码的最短长度

    创建用户

    create user 'username'@'ip' identified by 'password';
    全部ip的话则是%

    查看权限

    show grants;

    用户授权

    mysql> grant all on *.* to 'root'@'%' identified by '1234';
    Query OK, 0 rows affected, 1 warning (0.00 sec)

    mysql>
     flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    mysql主从

    主服务器上配置如下,进入配置文件/etc/my.cnf

    server-id=1 设置id
    log-bin=/mydata/log/master-bin 启动binlog日志
    sync_binlog = 1 确保主从复制事务安全

    主服务器执行如下sql

    mysql> grant replication slave on *.* to 'slave'@'192.168.21.131' identified by '1234';
    Query OK, 0 rows affected, 1 warning (0.00 sec)
    mysql> flush privileges;
    Query OK, 0 rows affected (0.01 sec)
    show master statusG

    从服务配置如下:

    server-id =12
    relay_log =/mydata/log/slave-log
    sync_binlog = 1
    read-only=ON

    从服务器执行如下sql

    CHANGE MASTER TO
      MASTER_HOST='master2.example.com',
      MASTER_USER='replication',
      MASTER_PASSWORD='password',
      MASTER_PORT=3306,
      MASTER_LOG_FILE='master2-bin.001',
      MASTER_LOG_POS=4,
      MASTER_CONNECT_RETRY=10; #监控主服务器的时间
    # 连接主库
    change master to master_host='192.168.21.128',master_user='slave',master_password='1234';
    # 启动进程
    start slave;
    # 查看状态
    show slave statusG       

    问题:

    Last_IO_Error: Fatal error: The slave I/O thread stops because master and slave have equal MySQL server UUIDs; these UUIDs must be different for replication to work.
    解决办法:
    rm -rf /mydata/mysql/auto.cnf
    systemctl restart mysqld

    mysql备份与恢复

    备份

    mysqldump

    • 锁表
    • 备份特别慢,适用于数据量较小
    • 不可以做增量备份
    • 单线程
     -A, --all-databases 所有的库
     -B 指定备份的库
     —F 备份前刷新日志
     --flush-privileges 刷新授权表
     -p 密码
     -u 用户
     -P 端口
     触发器
     存储过程和存储函数
     ## 备份
     mysqldump -uroot -S /mydata/mysql/mysql.sock -A -p > mysql.sql
     ## 恢复一
     直接在数据库里面source mysql.sql文件
     ## 恢复二
     mysql -uroot -p < mysql.sql

    xtrabackup

    • 多进程
    • 支持增量备份
    • 锁行
    安装
    yum install https://repo.percona.com/yum/percona-release-latest.noarch.rpm # 安装yum仓库
    yum install -y percona-xtrabackup-24
    --target-dir=name # 指定备份生成的目录
    --backup 备份
    --prepare 准备
    --databases=name    filtering by list of databases.
    --databases-file=name 配置文件

    创建一个用户

    mysql> create user 'backup'@'localhost' identified by 'backup';
    Query OK, 0 rows affected (0.00 sec)

    mysql>
     grant reload,lock tables,process,replication client on *.* to 'backup'@'localhost';
    Query OK, 0 rows affected (0.00 sec)

    mysql>
     flush privileges;
    Query OK, 0 rows affected (0.00 sec)

    备份

    xtrabackup --backup --target-dir=/mydata/backup/base -ubackup -pbackup --socket=/mydata/mysql/mysql.sock
    ### 看得如下信息,代表成功
    xtrabackup: Transaction log of lsn (5480853) to (5480862) was copied.
    190902 09:25:09 completed OK!

    恢复

    准备文件

    xtrabackup --prepare --target-dir=/mydata/backup/base
    InnoDB: Starting shutdown...
    InnoDB: Shutdown completed; log sequence number 5482536
    190902 09:28:12 completed OK!

    恢复文件

    cd /mydata/backup/base
    cp -rf hello /mydata/mysql/
    chown mysql.mysql /mydata/mysql/hello/ -R

    恢复全部文件

    xtrabackup --copy-back --target-dir=/mydata/backup/base
    chown mysql.mysql * -R

    增量备份

    xtrabackup --backup --target-dir=/mydata/backup/t1 --incremental-basedir=/mydata/backup/base -uroot -p --socket=/mydata/mysql/mysql.sock
    --incremental-dir 全备的路径
    xtrabackup --backup --target-dir=/mydata/backup/t2 --incremental-basedir=/mydata/backup/t1 -uroot -p --socket=/mydata/mysql/mysql.sock
    --incremental-basedir应该是上一次的增量备份目录
    xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base

    恢复(只能全部删除以后再恢复)

    xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base
    xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base --incremental-dir=/mydata/backup/t1
    xtrabackup --prepare --apply-log-only --target-dir=/mydata/backup/base --incremental-dir=/mydata/backup/t2
    xtrabackup --copy-back --target-dir=/mydata/backup/base
    chown mysql.mysql * -R
    systemctl restart mysqld
  • 相关阅读:
    复习面向对象--继承,重写,重载,抽象详解
    复习面向对象---员工案例
    连接池介绍 + 示意图 + 手写连接池pool
    statement 和 preparedStatement 优缺点
    软件测试(二十三)
    软件测试(二十二)
    软件测试(二十一)
    软件测试(二十)
    软件测试(十九)
    软件测试(十八)
  • 原文地址:https://www.cnblogs.com/wby-110/p/13474995.html
Copyright © 2020-2023  润新知