Linux(七)进程管理及MySQL配置

补充内容

1.crontab的日志

/var/log/cron

2.命令最好写绝对路径

3.ping

```SHELL
-c 指定次数
ICMP 协议 ---> 自行百度
```

# 进程

## 查看进程 ps

```shell
ps [options]
```

支持的命令格式

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

选项

```SHELL
[root@s22 ~]#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 获取指定的用户信息
ps -U zzj
常用选项: aux -ef -eFH
```
ps ax opid,cmd,%cpu,user,tt
ps -p pid
ps输出属性

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

RSS 实际内存

psr cpu编号

STAT 状态

%cpu cpu的占用率

%mem 内存的占用率

## 根据名称来查询进程

```SHELL
pidof name
[root@s22 ~]#pidof python
1169 825
```

# 系统工具

## uptime

```shell
[root@s22 ~]#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

首部信息

- 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 保存文件

选项:

​ -d 刷新时间

​ -b 显示所有的信息

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

## htop

- epel源

# 性能分析

## free

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

## vmstat

```SHELL
vmstat [options] [delay [count]]
[root@s22 ~]#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
0 0 37028 162560 0 808588 0 0 0 0 4535 6893 1 5 95 0 0
0 0 37028 162544 0 808588 0 0 0 0 4463 6772 0 5 95 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 查看所有

```SHELL
-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

常用信号:

1) sighub 不需要关闭程序,重新加载配置文件

2) sigint 终止进程,相当于ctrl+c

9) sigkill 强制杀死进程

15) sigterm 终止正在运行的进程

18)sigcont 继续运行

19)sigstop 后台休眠

按照pid: kill-n pid

按照名称:killall -n name

按照名称:pkill -n name

# 作业管理

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

让作业运行于后台:

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

脱离终端:

- nohup command &>/dev/null &

- screen

```SHELLL
-list 查看所有的screen窗口
-r 进入
```

# 安全

## 防火墙

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

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

## selinux

美国国家安全局

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

rhcea

rhce

rhca

ccnp

ccie

ccia

ocp

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

# 虚拟环境

## 安装

```shell
pip3 install virtualenv -i https://pypi.douban.com/simple
```

## 创建虚拟环境

```shell
virtualenv --system-site-packages django11(名字)
--no-site-packages 创建一个全新的python环境
--python 指定以哪个python来创建虚拟环境
```

## 进入虚拟环境

```shell
source django11/bin/activate
```

## 退出虚拟环境

```shell
deactivate
```

## 确保环境一致

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

## virtualenvwrapper

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

```SHELL
1. 安装
pip3 install virtualenvwrapper -i https://pypi.douban.com/simple
2.修改文件
vim ~/.bashrc
export WORKON_HOME=/envdir
export VIRTUALENVWRAPPER_VIRTUALENV_ARGS='--no-site-packages'
export VIRTUALENVWRAPPER_PYTHON=/opt/python36/bin/python3
source /opt/python36/bin/virtualenvwrapper.sh
3. 加载~/.bashrc
source ~/.bashrc
4.创建环境
mkvirtualenv django11 创建并切换
5.进入虚拟环境
workon name
6.切换到当前虚拟环境的文件夹
cdvirtualenv
7.切换到当前虚拟环境的第三方包的文件夹
cdsitepackages
8.退出
deactivate
9.列出当前管理的虚拟环境
lsvirtualenv
10.列出当前虚拟环境的第三方包
lssitepackages
11.删除虚拟环境
rmvirtualenv 必须要退出才能删除
```


python3 -m venv django11
cd django11
source bin/activate
deactivate



# mysql

mariadb 是mysql的分支

可以直接在官方网站下载

## 下载

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

## 解压

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

## 安装

```shell
yum install -y *.rpm
```
vim /etc/my.cnf
datadir=/mydata/mysql
socket=/mydata/mysql/mysql.sock

[mysql]
socket=/mydata/mysql/mysql.sock

mkdir -p /mydata/mysql
chown mysql -R /mydata/mysql
systemctl start mysqld

默认安装位置:/var/lib/mysql

报错信息:

```shell
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
解决办法:setenforce 0

```

## 重置密码

```shell
默认密码:
grep 'pass' /var/log/mysqld.log
mysql_secure_installation
输入root密码
是否要修改密码
Zzj102024!
是否要修改root密码(大小写、数字、特殊字符)
是否要删除匿名用户
是否禁止root远程登录
是否要删除test数据库
是否要刷新表的权限
```
use mysql

## 密码校验规则

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

## 创建用户

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

## 查看权限

```shell
show grants;
```

## 用户授权

```SHELL
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主从

主服务器上配置如下
vim /etc/my.cnf

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

主服务器执行如下sql

```shell
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 status\G
```

从服务配置如下:

```shell
server-id =12 不能和主一样
relay_log =/mydata/log/slave-log
sync_binlog = 1
read-only=ON
```

show master status \G
.....................
File: master-bin.000001
Position: 154
Binlog_Do_DB:
Binlog_Ignore_DB:
Executed_Gtid_Set:
1 row in set (0.00 sec)
.....................

从服务器执行如下sql

```SHELL

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 status\G
```



问题:

```shell
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备份与恢复

posted @ 2021-05-10 11:06  Full-Stack~  阅读(190)  评论(0)    收藏  举报