linux
刘先生我在呀
加油加油加油
展开
-
Linux实现对IP地址实现去重排序(sort+uniq)
最近这两天凌晨都被电话告警弄起来了,今天排查了一下,是因为业务凌晨被刷了,nginx日志已经导出了当时所有的请求日志,需要手动通过Linux来进行一个去重排序。原创 2023-06-01 13:12:08 · 1706 阅读 · 0 评论 -
解决 crontab iptables command not found (iptables 无法使用)的问题
结果发现报错:iptables command not found其实看到了这个错误老王就想到应该是 bash 和 sh 的问题,因为之前老王出现过crontab 任务中 Shell 脚本 for 循环不生效的问题原因与解决。转载 2022-10-27 12:05:36 · 4823 阅读 · 5 评论 -
彻底搞懂HTTP协议---持久连接
比如使用浏览器浏览一个包含多张图片的HTML页面时,在发送请求访问HTML页面资源的同时,也会请求该HTML页面里包含的其他资源。持久连接的好处在于减少了TCP连接的重复建立和断开所造成的额外开销,减轻了服务器端的负载。比如,当请求一个包含10张图片的HTML Web页面,与挨个连接相比,用持久连接可以让请求更快结束。可随着HTTP的普及,文档中包含大量图片的情况多了起来。在HTTP/1.1中,所有的连接默认都是持久连接,但在HTTP/1.0内并未标准化,除了服务器端,客户端也需要支持持久连接。原创 2022-10-08 07:00:00 · 1100 阅读 · 2 评论 -
docker搭建nginx+php环境
【代码】docker搭建nginx+php环境。原创 2022-09-30 07:00:00 · 4479 阅读 · 0 评论 -
Shell脚本限制除了SSH的所有流量
虽然已经创建了自定义链,链中也有具体的防火墙规则,但是实际上没有任何作用,因为发过来的请求依旧会进入到INPUT链,还需要在Iptables中应用一下自定义的链,使请求转发到自定义的链上。如果在主机层面把端口转发到容器的22端口,是不是可以达到直接进入到容器的效果,如果可以这样的话,那就好玩了。生产上裁撤服务器的时候考虑到有可能还有现网流量,直接关机的话,回滚起来非常麻烦,所以可以对入流量进行封禁,这样就可以达到快速恢复的效果。此时禁用了所有的协议(包括icmp),开放ping协议。原创 2022-09-29 23:00:00 · 956 阅读 · 0 评论 -
iptables常用命令
iptables -A INPUT -p tcp -m time --timestart 00:00 --timestop 02:00 -j DROP #这里的时间是指UTC时间记得换算。iptables -I INPUT 1 -i lo -j ACCPET #在第一条的位置插入一条记录,接受所有来自lo网口的访问。iptables -nL --line-numbers --verbose #可以查看到包过滤的流量统计,访问次数等。iptables -D INPUT 7 #删除第7条记录。原创 2022-09-29 11:13:30 · 9102 阅读 · 0 评论 -
使用shell脚本分批删除mysql大表数据(一主三从)---优化版本
最近在工作中遇到了一个需求,需要对一个8亿数据量的大表使用pt工具修改表结构,因为在业务侧这个确实也没有用到这个表这么久的数据,所以顺便优化一下大表,想的是只保留7天数据即可,所以这里使用shell脚本来进行对表删除数据,这个mysql的架构是一主三从,所以删除的时候要考虑到主从同步延迟问题。PS:删除的时候一定要注意观察CPU利用率和主从同步延迟问题。原创 2022-09-24 21:55:29 · 689 阅读 · 0 评论 -
常用的 Linux 服务器性能查看命令有哪些
可以通过执行 ps auxww|grep PID,ps -ef,lsof -p PID,top -p PID 命令进行查看。可以通过执行 w,top,uptime,procinfo 命令,或者访问 /proc/loadavg 文件进行查看。可以通过执行 netstat -tunlp,netstat -antup,lsof -i:PORT 命令进行查看。(1)linux常用操作及命令。原创 2022-09-24 11:14:37 · 916 阅读 · 0 评论 -
使用shell脚本分批删除mysql大表数据(一主三从)
最近在工作中遇到了一个需求,需要对一个8亿数据量的大表使用pt工具修改表结构,因为在业务侧这个确实也没有用到这个表这么久的数据,所以顺便优化一下大表,想的是只保留7天数据即可,所以这里使用shell脚本来进行对表删除数据,这个mysql的架构是一主三从,所以删除的时候要考虑到主从同步延迟问题。PS:删除的时候一定要注意观察CPU利用率和主从同步延迟问题。原创 2022-09-20 23:37:09 · 833 阅读 · 0 评论 -
Linux中sed 和<<EOF的用法
sed是一种在线编辑器,它一次处理一行内容。处理时,把当前处理的行存储在临时缓冲区中,称为“模式空间”(pattern space),接着用sed命令处理缓冲区中的内容,处理完成后,把缓冲区的内容送往屏幕。接着处理下一行,这样不断重复,直到文件末尾。文件内容并没有改变,除非你使用重定向存储输出。可以看到,sed命令会对每一行文本都进行处理!原创 2022-09-19 22:05:35 · 685 阅读 · 0 评论 -
使用 CURL 的“--resolve“选项将请求固定到 IP 地址
此选项指定的值(可以在单个命令中多次调用,以将多个域/端口组合路由到各种 IP 地址)将应用于初始请求,以及 CURL 在命令过程中遵循的任何重定向。这种将 Web 请求直接“固定”到服务器的做法可以通过 更改您的 /etc/hosts 文件来完成,这将导致对指定域名(例如:“ www.example.com ”)的请求从您的本地计算机到指定的 IP 地址(例如:127.0.0.1),直到您对 /etc/hosts 所做的更改被还原。原创 2022-09-07 19:25:44 · 9095 阅读 · 2 评论 -
nginx日志报错 443 failed (101: Network is unreachable) while connecting to upstream
为了能看到IPv6在你的Linux中是否被激活,可以使用ifconfig或ip命令。如果你在输入这些命令之后看到"inet6"字样的输出,那就意味着你的Linux系统启用了IPv6。1.3.1之后支持IPV6,且默认同时开启了IPV4和IPV6,所以,这里需要关闭IPV6才能避免连接到IPV6。具体resolver配置类似如下。今天遇到一个nginx日志报错,定位到原因是nginx做代理的时候转发解析的是ipv6,想要解决的话,有几种方法,如下所示。第二种,系统层面禁用ipv6,大家可以参考以下文章。...原创 2022-08-29 20:54:55 · 6444 阅读 · 0 评论 -
新增一块新磁盘后,扩充逻辑卷lv大小
二、检查当前的逻辑卷、卷组、物理卷容量和lv文件系统类型从上面可以看到卷组大小不够,PV也不够,此处需要自行添加PV,扩展逻辑卷组(如果/dev/sda磁盘大小充足,就不要去其它磁盘上新建分区来作为PV,并且尽量需要多大容量就给接近的容量,不要一次性分配过大)。挂载点:三、创建新的PV,并扩展卷组、逻辑卷以及针对XFS文件系统扩容成功后如下图所示:注意:此处扩展文件系统可以用上述命令一次性搞定,也可以采用传统方法,如果是XFS,先lvextend -L 40GiB /dev/rhel/root,原创 2022-07-05 07:49:51 · 588 阅读 · 0 评论 -
MySQL在存储过程中使用while批量插入数据(批量提交和单个提交的性能差异)
MySQL在存储过程中使用while批量插入数据(批量提交和单个提交的性能差异)原创 2022-06-02 18:09:59 · 669 阅读 · 0 评论 -
Shell脚本批量对157台服务器打通网络、配置免密、重置root密码
一、背景机房搬迁项目,需要把157台服务器搬迁到新的机房(Hadoop集群),因为项目比较紧急,客户着急使用,我负责的是对157服务器做系统层面的配置,直到交付给重庆移动的4A部门。记录一下在此期间使用的脚本,以及当时的思路。二、思路1、操作系统:因为原有服务器的系统大部分都是redhat7.4,所以系统的话,只需要对个别服务器进行重装。2、网络配置:网络配置的话,分为管理IP地址以及业务IP地址,因为已经重新规划了IP地址,所以每一台服务器都会做更改,在这里我想的是先把管理IP地址打通,这样的话,原创 2022-05-26 23:05:31 · 719 阅读 · 0 评论 -
redhat7 破解(重置)root密码
破解(重置)root密码重置系统root账户密码为thuctive,确保能够使用root登录。1.开机(或重启)出现grub菜单时按任意键终止启动过程,在内存中编辑GRUB加载的条目 ,使其在内核刚挂载所有文件系统后,但在将控制权移交给systemd前终止启动过程。2.按e键编辑GRUB当前条目,找到Linux这一行,按End键到行尾,将rd.break附加到行尾,然后按Ctrl+x引导系统,若存在下图中被黄色框选中的内容,请务必删除掉。3.重置root密码①mount -o remoun原创 2022-05-26 22:48:58 · 2415 阅读 · 0 评论 -
lftp上传文件以及使用pipe把文件入库到redis
环境:两台云服务器,124.221.164.83是redis服务端,113.31.104.71是客户端,这里我做了防火墙策略,所以不用担心云服务器端口暴露被黑的问题。思路:刚开始想的是把文件上传到对端服务器然后再执行入库命令,但是其实没有必要这样,其实直接在本地也可以用命令入库到对端redis,只需要端口通了即可。配置防火墙策略,指定ip访问redis:iptables -I INPUT -s 113.31.104.71 -p tcp --dport=6379 -j ACCEPTiptables -原创 2022-05-20 00:20:39 · 446 阅读 · 0 评论 -
redhat7.2升级到redhat7.4
需求:应客户要求需要操作系统版本为redhat7.4,但是目前生产上面操作系统版本为redhat7.2,思路:如果重装系统的话,需要花费大量时间来做基线配置以及安全扫描,因为是小版本升级,所以直接采用的是挂载redhat7.4 yum源,直接升级所有软件和内核,具体操作如下所示:一、挂载本地yum源先把iso文件拷贝到 /opt/ 目录下1、vim /etc/yum.repos.d/rhel74.repo2、执行命令挂载mount -o loop /opt/RHEL74.iso /mnt二原创 2022-04-12 18:40:25 · 2460 阅读 · 0 评论 -
用Shell实现对所有进程所占内存大小进行排序(冒泡算法)
下面通过冒泡算法编写一个根据当前系统所有进程所占物理内存大小的排序脚本#!/bin/bashtmpfile="/tmp/procs_mem_$$.txt"ps --no-headers -eo comm,rss > $tmpfile#定义函数实现冒泡排序#使用i控制进行几轮的比较,使用j控制每轮比较的次数#使用变量len读取数组的个数,根据内存大小进程排序,并且调整对应的进程名称的顺序proc_order () {local i jlocal len=$1for ((原创 2021-08-03 08:52:35 · 624 阅读 · 1 评论 -
shell 实现冒泡排序算法
思路:冒泡排序不断地比较相邻两个数据的大小,根据大小进行排序(升序或者降序),如果顺序不对则彼此交换位置,以此类推,当所有数据比较完成后,肯定能找出一个最大值或者最小值。...原创 2021-07-29 10:26:05 · 785 阅读 · 0 评论 -
shell实现机选双色球
文章目录一、双色球规则二、shell脚本实现一、双色球规则双色球彩票投注分为红色球和蓝色球,每注投注号码由6个红色球号码和1个蓝色球号码组成,红色球号码从1~33中选择,蓝色球号码从1-16中选择,投注时不管是红色球还是蓝色球都不允许出现重复的号码。二、shell脚本实现#!/bin/bashred_ball="" #红球变量blue_ball="" #蓝球变量while :do clear echo "--------机选双色球--------" tmp=$[RANDOM原创 2021-07-20 23:57:21 · 797 阅读 · 0 评论 -
shell脚本实现查看主机telnet是否开启
脚本如下:[root@localhost ~]# #!/sbin/sh [root@localhost ~]# export LANG=C #解决乱码问题[root@localhost ~]# FTPSTATUS=`netstat -ant|grep -i "listen"|grep ":21\>"|wc -l`[root@localhost ~]# function Check_ftpusers() > { > if [ -f /etc/vsftpd.ftpusers ]&原创 2021-06-21 20:20:35 · 677 阅读 · 0 评论 -
RHEL8.3升级openssh8.6(shell脚本)
由于公司有漏洞要求,需要升级到openssh8.6,因为不止一台,所以这里用脚本的方式来实现。要是生产环境的话,升级前最好安装下telnet,确保telnet能够登陆。脚本如下所示:#!/bin/bash# 使用前提 : # 1. 配置好yum源# 2. 防止断连,开启telnet服务# 3. 上传最新版的软件包# #需要手动修改的变量version="ssh_8.6" #定义版本号soft_dir="opt" # 上传安装介质的目录ssh_media="openssh-8.6p原创 2021-06-19 18:14:57 · 743 阅读 · 0 评论 -
Redhat 8修改系统语言为英文
临时修改export LANG="en_US.UTF-8"不过这样一重新启动就没有,所以要加到/etc/profile里面,这样一开机就会运行这个变量了,也可以达到永久修改的效果:LANG="en_US.UTF-8"export LANG原创 2021-06-17 23:02:46 · 3968 阅读 · 0 评论 -
Redhat 8修改根目录的VG(vgrename)、LV(lvrename)名称,系统起不来的解决方法(亲测有效)
文章目录一、情况描述二、具体实现1.查看当前VG以及LV名称2.修改VG名称以及LV名称3.修改配置文件4.重启系统三、总结一、情况描述安装系统的时候用的是Redhat系统自带的VG名称以及LV名称,因为种种原因,现在需要修改根目录下的VG名称以及LV名称。系统:Redhat 8.3启动模式:efi二、具体实现1.查看当前VG以及LV名称[root@localhost ~]# lsblk NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINTs原创 2021-06-06 23:57:58 · 3384 阅读 · 6 评论 -
Windows无法访问虚拟机的Apache(httpd)服务,但是可以ping通
背景:Windows可以ping通虚拟机的IP,并且可以用CRT登录连接。但是访问不了httpd。虚拟机地址:192.168.233.101Windows地址:192.168.233.1首先确认防火墙和selinux都已经关闭:什么是iptables? 1、IPTABLES 是与最新的 3.5 版本 Linux 内核集成的 IP 信息包过滤系统 2、如果 Linux 系统连接到因特网或 LAN、服务器或连接 LAN 和因特网的代理服务器 3、则该系统有利于在 Linux 系统上更好地控制 I原创 2021-04-27 00:12:29 · 2082 阅读 · 0 评论 -
RedHat 7.4升级openssh8.4教程(附带脚本、资源下载)
资源下载:openssl-1.1.0h.tar.gzopenssh-8.4p1.tar.gz这里公司没有要求要升级openssl,所以脚本里面对openssl升级的地方都已经注释,需要的小伙伴可以根据需要自行下载。要是生产环境的话,升级前最好安装下telnet,确保telnet能够登陆。#!/bin/bash# 使用前提 : # 1. 配置好yum源# 2. 防止断连,开启telnet服务# 3. 上传最新版的软件包##需要手动修改的变量version="ssh_8.4" #定义版原创 2021-04-12 20:30:53 · 456 阅读 · 0 评论 -
shell脚本实现用ftp批量上传文件
shell脚本如下所示:#!/bin/bashfor i in `ls /ftp`;do ftp -n -i 172.29.155.250 <<EOF user userftp1 gbase put /ftp/$i $i.tmp rename $i.tmp $i quitEOFdone效果如下:客户端:[root@hadoop2 /]# ls -lrt /ftp/total 0-rw-r--r-- 1 root root 0 Mar 5 10:45 5原创 2021-03-05 16:51:46 · 1258 阅读 · 0 评论 -
shell脚本实现自动判断文件个数以及批量拷贝接口文件和检验文件到指定目录
interface.txt 内容如下:root@hadoop:/opt/dfp/bak_interface# cat interface.txt I180013I180012I180011A300003A100003脚本如下:#!/bin/bash time=$(date -d "-2 day" +%Y%m%d)while read linedo cd /opt/dfp/bak_interface/20210301 line1=$(ls -l | grep "原创 2021-03-03 14:01:57 · 447 阅读 · 0 评论 -
yum list 报错 libssl.so.10 not found (required by /use/lib64/python2.7/lib-dynload/_hashli
yum list 报错:libssl.so.10 not found (required by /use/lib64/python2.7/lib-dynload/_hashli报错如图所示:解决如下:原创 2021-01-27 14:48:18 · 1723 阅读 · 0 评论 -
记录一次阿里云服务器被黑挖矿的事件(top不显示占用CPU进程)
大家好,今天一大早起来一看3台阿里云服务器被吓了一跳,CPU占用高达100%,运行的hadoop服务被卡死,当时完全是懵逼的状态,结果在网上找了下资料,定位到原因为被黑客攻击了,用来当矿机了,当时我懵了,我这垃圾配置,也拿来挖矿,这不是浪费时间么,不过说归说,毕竟还是很影响我使用的,下面是我处理3台服务器的一些步骤。第一台服务器:首先我们top一下,看top命令有没有被篡改,如果没有的话,就能一下子定位到是哪个进程占用CPU,如下图所示:从这张图可以看到,PID为25415的进程占用了大量的CPU。原创 2020-12-29 16:08:19 · 4763 阅读 · 12 评论 -
500多个接口未加载,报错sshd[27766]: error: no more sessions
今天例行检查发现500多个接口未成功加载入库,第一反应就是接口服务器挂了,但是检查后发现服务器没有问题。然后查看系统日志:tail -200f messages发现大量报错error: no more sessions。然后查看了ssh端口有哪些:netstat -atunp | more通过端口以及业务定位到了向接口服务器ssh的某个服务器,最后重启了这台服务器的一个jar包,问题解决。(估计这个jar包里面封装了ssh,接口服务器凌晨可能网络闪断了以下,导致 session 失效,然原创 2020-11-13 15:44:00 · 2746 阅读 · 0 评论 -
ubuntu18.04安装hadoop、mysql、hive
一、配置环境变量export HADOOP_HOME=/opt/hadoop/hadoop-2.8.5export HADOOP_MAPRED_HOME=$HADOOP_HOMEexport HADOOP_COMMON_HOME=$HADOOP_HOMEexport HADOOP_HDFS_HOME=$HADOOP_HOMEexport HADOOP_CONF_DIR=$HADOOP_HOME/etc/hadoopexport YARN_HOME=$HADOOP_HOMEexport YADR原创 2020-11-12 22:14:10 · 232 阅读 · 1 评论 -
Ubuntu 18.04下用户的创建、修改权限及删除用户的方法
1. 创建用户useradd命令#命令一:这种命令会在登录界面显示用户名sudo useradd -m XXX -d /home/XXX -s /bin/bash#命令二:这种命令会在登录界面隐藏用户名sudo useradd -r -m -s /bin/bash XXX //XX指代创建的用户名useradd命令参数意义:·-r:建立系统账号·-m:自动建立用户的登入目录·-s:指定用户登入后所使用的shell为创建的用户设置密码在Ubuntu18.04系统中,如需要设置用户密转载 2020-11-12 15:44:30 · 1198 阅读 · 0 评论 -
scp向阿里云服务器上传文件
命令:scp /Users/liuyuqiang/Downloads/Hadoop/* root@47.108.130.87:/share/结果:原创 2020-11-12 09:40:47 · 684 阅读 · 1 评论 -
解决ubuntu18.04中文乱码问题
解决方法首先,安装中文支持包language-pack-zh-hans:sudo apt-get install language-pack-zh-hans然后,修改/etc/environment(在文件的末尾追加):LANG="zh_CN.UTF-8"LANGUAGE="zh_CN:zh:en_US:en"再修改/var/lib/locales/supported.d/local(没有这个文件就新建,同样在末尾追加):en_US.UTF-8 UTF-8zh_CN.UTF-8 UTF-原创 2020-11-12 09:21:29 · 4615 阅读 · 2 评论 -
ubuntu18.04 安装heirloom-mailx 通过外部SMTP服务器发送邮件
配置软件源unbuntu 18.04移除了heirloom-mailx,需要另外配置软件源sudo vim /etc/apt/sources.list加入:deb http://cz.archive.ubuntu.com/ubuntu xenial main universe安装heirloom-mailxsudo apt-get updatesudo apt install heirloom-mailx配置外部SMTPUbuntu18.04的配置文件为/etc/s-nail.rc,原创 2020-11-11 13:23:03 · 1593 阅读 · 2 评论 -
Kafka集群与Flume整合应用实战--Flume采集日志写入Kafka
一、Flume的安装配置去Flume官网下载Flume安装包,我下载的版本为apache-flume-1.9.0-bin.tar.gz,解压。(1)修改flume-env.sh。Flume运行在JVM之上,因此安装之前要确保系统安装了JDK,编辑环境配置文件,执行命令如下:mv flume-env.sh.template ./flume-env.shvim flume-env.shexport JAVA_HOME=/opt/java/jdk1.8.0_144(2)设置系统环境变量。将flume原创 2020-11-06 16:40:03 · 732 阅读 · 0 评论 -
9行代码实现ssh多个服务器执行相同命令
在工作中大家肯定遇到过要进入不同的服务器执行命令,这个脚本实现了进入不同服务器执行相同命令,节省了大量的时间。脚本如下所示:#!/bin/bashFILE_LIST=/opt/myshell/listCMD=$1NAME=$2for IP in `cat $FILE_LIST|grep -v '^#'|grep "|$NAME" |awk -F'|' '{print $1}'`do echo "--------------------$IP------------------ "原创 2020-11-04 16:55:06 · 794 阅读 · 0 评论 -
Kafka还能这样玩!Kafka集群分区迁移(节点下线)操作实战
分区迁移1、节点下线分区迁移首先,执行以下命令创建一个主题。kafka-topics.sh --create --zookeeper 172.20.10.3:2181,172.20.10.4:2181,172.20.10.5:2181 --replication-factor 1 --partitions 3 --topic reassign-partitionsCreated topic "reassign-partitions".该主题分区副本分布情况如下:kafka-topics.sh原创 2020-11-02 13:30:44 · 1764 阅读 · 1 评论