系列文章目录
Linux笔记——进程管理Linux笔记——进程管理与网络监控技术讲解Linux笔记——进程管理
Linux笔记——管道相关命令以及shell编程
Linux笔记——磁盘进行分区与挂载介绍
文章目录
系列文章目录
前言
一 RPM介绍
1.1 RPM简单介绍
1.2 RPM命令语法
1.2.1 rpm安装
1.2.2 RPM升级
1.2.3 卸载
1.2.4 查询是否安装
1.2.5 查询包中文件的安装位置
1.2.6 查询系统文件属于哪一个RPM包
1.2.7 查询安装包的依赖性
1.3 RPM实战(MySQL安装)
1.3.1 第一步骤:MySQL的下载与安装
可能会出现的错误信息
1.3.2 第二步骤:启动mysql服务并且重新设置密码
1.3.3 第三步骤:使用新密码登录并使用windows终端工具进行远程登录
二 yum介绍
2.1 yum简介
2.2 常见总结
2.3 命令详解
1 yum清空缓存列表
2 yum显示信息
3 yum安装
4 yum删除
5 yum包的升级
6 yum 解决依赖的原理
7 yum 组的管理
2.4 其它
1 安装
2 更新和升级
3 查找和显示
4 删除程序
5 清除缓存
三 一些常用的SHELL
3.1 Dos 攻击防范(自动屏蔽攻击 IP)
3.2 MySQL 数据库备份单循环
3.3 MySQL 数据库备份多循环
3.4 服务器系统配置初始化脚本
3.5 监控 100 台服务器磁盘利用率脚本
总结
前言
本文主要介绍rpm与yum安装软件包的命令以及相关的案例演示。
一 RPM介绍
1.1 RPM简单介绍
1.2 RPM命令语法
RPM包管理常用命令:
在学习常用命令之前我们一定要知道全包名和包名的区别,如下:
- 包全名︰操作的包是没有安装的包时,使用包全名。
- 包名︰操作已经安装的软件包时,使用包名。
RPM有五种操作模式,分别为∶安装、卸载、升级、查询和验证。
下面是rpm命令的选项:
- -a :查询所有已经安装的包以下两个附加命令用于查询安装包的信息;
- -i: 安装软件包;
- -l︰显示安装包中的所有文件被安装到哪些目录下﹔
- -s∶显示列出文件的状态﹔
- -p︰查询/验证一个软件包;
- -f :查询/验证文件属于的软件包;
- -V:提供更多的详细信息输出﹔
- -U:升级一个rpm包;
- -e :卸载一个rpm包;
- -h :软件包安装的时候列出哈希标记(和-v一起使用效果更好);
1.2.1 rpm安装
示例1:安装一个xxxx.rpm包,并在安装过程中显示正在安装的文件信息及安装进度。
rpm -ivh xxxx.rpm
1.2.2 RPM升级
1.2.3 卸载
1.2.4 查询是否安装
案例举例:
查看所有安装的mysql包
rpm -qa | grep mysql
1.2.5 查询包中文件的安装位置
查看mysql-server安装的位置
rpm -ql mysql-community-server-5.7.42-1.el7.x86_64
1.2.6 查询系统文件属于哪一个RPM包
查看ect下面的passwd文件属于哪一个包
rpm -qf /etc/passwd
1.2.7 查询安装包的依赖性
查看mysql-server的依赖性
rpm -qR mysql-community-server
这些依赖包一个没有就安装不了。
一些指令示例,如下:
1.3 RPM实战(MySQL安装)
mysql四个包的百度网盘链接
链接:https://pan.baidu.com/s/1HegAQi-Hu9aUzAyUk1sRaw?pwd=eagh
提取码:eagh
1.3.1 第一步骤:MySQL的下载与安装
需要下载四个rpm包,如下:
官方下载地址:https://downloads.mysql.com/archives/community/
将下载的上传到我们的Linux机器上,此处可以用远程软件将软件上传到Linux机器上面,如下:
在安装时software是我自己创建的软件包存放目录。
补充内容:
MariaDB数据库管理系统是MySQL的一个分支,主要由开源社区在维护,采用GPL授权许可 MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能轻松成为MySQL的代替品。在存储引擎方面,使用XtraDB来代替MySQL的InnoDB。 MariaDB由MySQL的创始人Michael Widenius主导开发,他早前曾以10亿美元的价格,将自己创建的公司MySQL AB卖给了SUN,此后,随着SUN被甲骨文收购,MySQL的所有权也落入Oracle的手中。MariaDB名称来自Michael Widenius的女儿Maria的名字。
MariaDB基于事务的Maria存储引擎,替换了MySQL的MyISAM存储引擎,它使用了Percona的 XtraDB,InnoDB的变体,分支的开发者希望提供访问即将到来的MySQL 5.4 InnoDB性能。这个版本还包括了 PrimeBase XT (PBXT) 和 FederatedX存储引擎。
MYISAM和INNODB是Mysql数据库提供的两种存储引擎。两者的优劣可谓是各有千秋。INNODB会支持一些关系数据库的高级功能,如事务功能和行级锁,MYISAM不支持。MYISAM的性能更优,占用的存储空间少。所以,选择何种存储引擎,视具体应用而定。
- 一、InnoDB支持事务,MyISAM不支持,这一点是非常之重要。事务是一种高级的处理方式,如在一些列增删改中只要哪个出错还可以回滚还原,而MyISAM就不可以了。
- 二、MyISAM适合查询以及插入为主的应用,InnoDB适合频繁修改以及涉及到安全性较高的应用
- 三、InnoDB支持外键,MyISAM不支持
- 四、MySQL 在 5.1 之前版本默认存储引擎是 MyISAM,5.1 之后版本默认存储引擎是 InnoDB
- 五、InnoDB不支持FULLTEXT类型的索引
- 六、InnoDB中不保存表的行数,如select count(*) from table时,InnoDB需要扫描一遍整个表来计算有多少行,但是MyISAM只要简单的读出保存好的行数即可。注意的是,当count(*)语句包含where条件时MyISAM也需要扫描整个表
- 七、对于自增长的字段,InnoDB中必须包含只有该字段的索引,但是在MyISAM表中可以和其他字段一起建立联合索引
- 八、清空整个表时,InnoDB是一行一行的删除,效率非常慢。MyISAM则会重建表
- 九、InnoDB支持行锁(某些情况下还是锁整表,如 update table set a=1 where user like '%lee%'
在安装之前我们需要卸载mariadb-libs,具体命令如下:
rpm -q mariadb-libs
需要卸载mariadb-libs
先安装
yum remove postfix
再卸载rpm -e mariadb-libs
先查询一下mariadb-libs的全包名,如下指令:
rpm -e mariadb-libs-5.5.56-2.el7.x86_64
接着我们按照顺序进行安装,顺序为:mysql-community-common-5.7.42-1.el7.x86_64.rpm,
mysql-community-libs-5.7.42-1.el7.x86_64.rpm,
mysql-community-client-5.7.42-1.el7.x86_64.rpm
mysql-community-server-5.7.42-1.el7.x86_64.rpm
具体的命令如下:
rpm -ivh 全包名即可。
安装四个MySQL的包【顺序不可乱,乱了将会出现依赖错误的情况】
rpm -ivh mysql-community-common-5.7.42-1.el7.x86_64.rpmrpm -ivh mysql-community-libs-5.7.42-1.el7.x86_64.rpmrpm -ivh mysql-community-client-5.7.42-1.el7.x86_64.rpmrpm -ivh mysql-community-server-5.7.42-1.el7.x86_64.rpm
可能会出现的错误信息
如果第四个server没有就安装这个包
yum install libaio
1.3.2 第二步骤:启动mysql服务并且重新设置密码
service mysqld start # 启动服务
service mysqld status # 查看服务状态
查看mysql状态
之后进入启动mysql
查看临时密码:
grep password /var/log/mysqld.log
使用临时密码登录:
mysql -u root -h localhost -p 回车后输入上面的临时密码
之后将root的密码修改成固定的密码,修改密码:
alter user 'root'@'localhost' identified by 'Admin2023!';
再次进入mysql里面,此时的密码是刚才修改的密码。
为了方便后续连接外接工具,需要关闭centos的防火墙,将防火墙永久关闭。
查看防火墙,并且永久关闭防火墙。
可以看到原来的用户只是属于localhost的,下面将密码加入到所有人可以使用的情况。
grant all on *.* to root@'%' identified by 'Admin2023!' with grant option;
此处的grant表示授权,on是在所有数据库的所有表(对象等等)上授予权限,root 为用户名,@表示前面是用户名后面是主机,%代表任意主机, 此处也可以写特定的IP【如:192.168.1.10】或者特定的网段【如:192.168.1.*】
mysql可以提供user和host决定特定的网段或者IP地址登录
配置完成之后重启服务即可。
1.3.3 第三步骤:使用新密码登录并使用windows终端工具进行远程登录
此处可以参考以下链接内容进行远程登录,此处不再赘述。
MySQL笔记——MySQL数据库介绍以及在Linux里面安装MySQL数据库,对MySQL数据库的简单操作,MySQL的外接应用程序使用说明
内容在第四小节
二 yum介绍
2.1 yum简介
yum ( Yellow dog Updater, Modified )是一个在Fedora和RedHat 以及 SUSE中的Shell前端软件包管理器。基于RPM包管理,能够从指定的服务器自动下载RPM包并且安装,可以自动处理依赖性关系,并且一次安装所有依赖的软件包,无须繁琐地一次次下载、安装。yum提供了查找、安装、删除某一个、一组甚至全部软件包的命令,而且命令简洁而又好记。
yum的命令形式一般是如下:yum [options] [command] [package ...]
其中的[options]是可选的,选项包括-h(帮助),-y(当安装过程提示选择全部为"yes"),-q(不显示安装的过程)等等。[command]为所要进行的操作,[package ...]是操作的对象。
概括了部分常用的命令包括:
自动搜索最快镜像插件: yum install yum-fastestmirror
安装yum图形窗口插件: yum install yumex
查看可能批量安装的列表: yum grouplist
yum 会自动识别包的依赖问题,在安装包时,会将包的依赖也安装好。
常用命令如下:
2.2 常见总结
yum的命令形式一般是如下:
yum –选项命令包
yum.reops.d 配置介绍
yum的一切信息都存储在一个叫yum.reops.d目录下的配置文件中,通常位于/etc/yum.reops.d目录下。
在这个目录下面有很多文件,都是.repo结尾的,repo文件是yum源(也就是软件仓库)的配置文件,通常一个repo文件定义了一个或者多个软件仓库的细节内容
例:进入/etc/yum.repo.d目录下,可以修改这个文件 CentOS-Base.repo
2.3 命令详解
1 yum清空缓存列表
yum clean packages 清除缓存目录下的软件包,清空的是(/var/cache/yum)下的缓存
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的headers
2 yum显示信息
yum list # yum list显示所有已经安装和可以安装的程序包这些列表里面的包的来源就是/etc/yum.repo.d。 base docker-ce-stable epel/x86_64/metalink epel extras rpmforge updates yum list rpm 显示安装包信息rpm显示installed ,这里是包名,版本和仓库名yum list httpd这里是可获得包,说明还没有安装。yum info rpm 显示安装包rpm的详细信息
3 yum安装
yum -y install httpd如果你不加-y他会问你要不要安装。如果你想自己来控制有些包是否安装,这里不要加-y,如果你想自动安装,不进行交互,这里加入-y。这个就是yum 的安装了,非常简单。安装完之后查询一下yum list httpd,Installed 说明已经安装好了
4 yum删除
yum remove httpd 删除程序包httpd ,也就是卸载。yum deplist rpm 查看程序rpm依赖情况
5 yum包的升级
yum check-update 检查可更新的程序yum update 全部更新,升级所有包,以及升级软件和系统内核,这就是一键升级。他可以更新CentOS的内核到最新版本。yum update package1 更新指定程序包package1, yum upgrade package1 升级指定程序包package1
6 yum 解决依赖的原理
YUM 解决依赖关系问题,自动下载软件包。yum是基于C/S架构。C指的是客户端, S指的是服务器,想ftp,http,file、关于yum为什么能解决依赖关系:所有的Yum 源里面都有repodata,它里面是有XML格式文件,里面有说明需要什么包。例如上堂课实验的:mysql-server rpm 需要:perl-DBI ,python,或者是php等等包。
7 yum 组的管理
yum进行安装的时候可以一组一组的进行安装,先来看看有那些组yumgrouplist。可用的组有这么多。Available Environment Groups:首先是可用的环境分组。Compute Node 计算节点Infrastructure Server 基础设施服务器File and Print Server 文件和打印服务Cinnamon Desktop Cinnamon桌面Installed Groups:已安装的组,开发工具Development ToolsAvailable Groups:可用的组。如果我们想以组的方式来安装,加入我想安装安全工具:输入:yumgroupinstall "Security Tools"看到这里询问是否要安装,当然是N不安装了。如果想直接安装,不询问的话,这里也在后面加上选项 –y。yum groupremove group1 删除程序组group1
2.4 其它
1 安装
yum install 全部安装
yum install package1 安装指定的安装包package1
yum groupinsall group1 安装程序组group1
2 更新和升级
yum update 全部更新
yum update package1 更新指定程序包package1
yum check-update 检查可更新的程序
yum upgrade package1 升级指定程序包package1
yum groupupdate group1 升级程序组group1
3 查找和显示
yum info package1 显示安装包信息package1
yum list 显示所有已经安装和可以安装的程序包
yum list package1 显示指定程序包安装情况package1
yum groupinfo group1 显示程序组group1信息yum search string 根据关键字string查找安装包
4 删除程序
yum remove | erase package1 删除程序包package1
yum groupremove group1 删除程序组group1
yum deplist package1 查看程序package1依赖情况
5 清除缓存
yum clean packages 清除缓存目录下的软件包
yum clean headers 清除缓存目录下的 headers
yum clean oldheaders 清除缓存目录下旧的 headers
yum clean, yum clean all (= yum clean packages; yum clean oldheaders) 清除缓存目录下的软件包及旧的header
三 一些常用的SHELL
3.1 Dos 攻击防范(自动屏蔽攻击 IP)
#!/bin/bash
DATE=$(date +%d/%b/%Y:%H:%M)
LOG_FILE=/usr/local/nginx/logs/demo2.access.log
ABNORMAL_IP=$(tail -n5000 $LOG_FILE |grep $DATE |awk '{a[$1]++}END{for(i in a)if(a[i]>10)print
i}')
for IP in $ABNORMAL_IP; do
if [ $(iptables -vnL |grep -c "$IP") -eq 0 ]; then
iptables -I INPUT -s $IP -j DROP
echo "$(date +'%F_%T') $IP" >> /tmp/drop_ip.log
fi
done
3.2 MySQL 数据库备份单循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_NAME=$BACKUP_DIR/${DB}_${DATE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS -B $DB > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
3.3 MySQL 数据库备份多循环
#!/bin/bash
DATE=$(date +%F_%H-%M-%S)
HOST=localhost
USER=backup
PASS=123.com
BACKUP_DIR=/data/db_backup
DB_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "show databases;" 2>/dev/null |egrep -v
"Database|information_schema|mysql|performance_schema|sys")
for DB in $DB_LIST; do
BACKUP_DB_DIR=$BACKUP_DIR/${DB}_${DATE}
[ ! -d $BACKUP_DB_DIR ] && mkdir -p $BACKUP_DB_DIR &>/dev/null
TABLE_LIST=$(mysql -h$HOST -u$USER -p$PASS -s -e "use $DB;show tables;" 2>/dev/null)
for TABLE in $TABLE_LIST; do
BACKUP_NAME=$BACKUP_DB_DIR/${TABLE}.sql
if ! mysqldump -h$HOST -u$USER -p$PASS $DB $TABLE > $BACKUP_NAME 2>/dev/null; then
echo "$BACKUP_NAME 备份失败!"
fi
done
done
3.4 服务器系统配置初始化脚本
#/bin/bash
设置时区并同步时间
ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
if ! crontab -l |grep ntpdate &>/dev/null ; then
(echo "* 1 * * * ntpdate time.windows.com >/dev/null 2>&1";crontab -l) |crontab
fi
禁用selinux
sed -i '/SELINUX/{s/permissive/disabled/}' /etc/selinux/config
关闭防火墙
if egrep "7.[0-9]" /etc/redhat-release &>/dev/null; then
systemctl stop firewalld
systemctl disable firewalld
elif egrep "6.[0-9]" /etc/redhat-release &>/dev/null; then
service iptables stop
chkconfig iptables off
fi
历史命令显示操作时间
if ! grep HISTTIMEFORMAT /etc/bashrc; then
echo 'export HISTTIMEFORMAT="%F %T whoami "' >> /etc/bashrc
fi
SSH超时时间
if ! grep "TMOUT=600" /etc/profile &>/dev/null; then
echo "export TMOUT=600" >> /etc/profile
fi
禁止root远程登录
sed -i 's/#PermitRootLogin yes/PermitRootLogin no/' /etc/ssh/sshd_config
禁止定时任务向发送邮件
sed -i 's/^MAILTO=root/MAILTO=""/' /etc/crontab
设置最大打开文件数
if ! grep "* soft nofile 65535" /etc/security/limits.conf &>/dev/null; then
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
fi
系统内核优化
cat >> /etc/sysctl.conf << EOF
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_tw_buckets = 20480
net.ipv4.tcp_max_syn_backlog = 20480
net.core.netdev_max_backlog = 262144
net.ipv4.tcp_fin_timeout = 20
EOF
减少SWAP使用
echo "0" > /proc/sys/vm/swappiness
安装系统性能分析工具及其他
yum install gcc make autoconf vim sysstat net-tools iostat if
3.5 监控 100 台服务器磁盘利用率脚本
#!/bin/bash
HOST_INFO=host.info
for IP in $(awk '/^[^#]/{print $1}' $HOST_INFO); do
USER=$(awk -v ip=$IP 'ip==$1{print $2}' $HOST_INFO)
PORT=$(awk -v ip=$IP 'ip==$1{print $3}' $HOST_INFO)
TMP_FILE=/tmp/disk.tmp
ssh -p $PORT $USER@$IP 'df -h' > $TMP_FILE
USE_RATE_LIST=$(awk 'BEGIN{OFS="="}/^\/dev/{print $NF,int($5)}' $TMP_FILE)
for USE_RATE in $USE_RATE_LIST; do
PART_NAME=${USE_RATE%=}
USE_RATE=${USE_RATE#=}
if [ $USE_RATE -ge 80 ]; then
echo "Warning: $PART_NAME Partition usage $USE_RATE%!"
fi
done
done
总结
以上就是今天的内容~
欢迎大家点赞👍,收藏⭐,转发🚀,
如有问题、建议,请您在评论区留言💬哦。
最后:转载请注明出处!!!