![](https://img-blog.csdnimg.cn/2019091813595558.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
linux大全
文章平均质量分 71
测试和运维都会常用到的linux命令,工具等。
公众号-测试生财
分享各类测试技术和资源,请关注微信公众号:测试生财。
展开
-
Linux下性能压测之系统参数调优
1. 前言在做服务端压测的时候,经常会遇到一些由于Linux系统限制导致压力上不去的情况,这里从Linux系统参数上做一些调优,减少此类因素的干扰。2. 配置2.1 Linux系统配置执行:sudo vi /etc/sysctl.conf,添加以下内容:net.ipv4.tcp_syncookies = 0fs.file-max = 12553500fs.nr_open = 12453500kernel.shmall= 1048576kernel.shmmax = 188743原创 2021-03-18 08:20:06 · 524 阅读 · 0 评论 -
shell脚本中数组常用操作
前言本文整理了一下shell脚本中关于数组的常用语法。例子1)shell中命令执行后返回的结果若为多个,可以将结果保存为数组,比如:#第一种就是返回一整个字符串list=`ls -al`#第二种就是返回多个字符串的数组listarr=(`ls -al`)2)声明一个普通数组array=(element1element2element3....elementN)3) 获取数组的长度:len=${#array[@]}4)获取整个数组:${array[...原创 2021-03-11 08:50:35 · 465 阅读 · 0 评论 -
systemd的文件描述符限制引发的问题
背景最近在测试一个MQTT的server,使用MQTT的client去连接server的时候,发现每次到1020个连接数左右的时候MQTTserver就挂了,而且MQTTserver只打印了一个退出的日志,没有打印其他信息。问题定位1)最开始我以为是该MQTT服务的日志没有打印全,于是尝试开启debug模式。打开debug开关后,仍旧没有更多的日志打印出来。2)我怀疑是系统的文件描述符的限制:ulimit -a查看打开的文件描述符的限制:远超过1000,看来也不是系统的文件描述符的限制问题.原创 2020-12-21 08:42:29 · 796 阅读 · 0 评论 -
elasticsearch索引和快照清理:es curator
前言Elasticsearch Curator是一款ES索引(或快照)的清理神器,可以帮你轻松管理ES中的索引和快照,整体实现过程如下: 从ES集群中获取索引或者快照,作为待执行列表 通过用户定义的filters(过滤器)从待执行列表中删除索引或者快照 通过待执行列表,可以为其定义各种各样的处理动作 项目官网:https://www.elastic.co/guide/en/elasticsearch/client/curator/current/index.html背景原创 2020-11-20 08:37:45 · 1077 阅读 · 0 评论 -
Linux客户端连接报错:Cannot assign requested address
前言在项目中写了一个MQTT的客户端小程序,用于测试MQTTServer的连接数上限,运行了一段时间后报错:Cannot assign requested address网上查了下"Cannot assign requested address"指的是linux系统无法继续为客户端分配端口了(已用尽),所以无法进行监理socket连接。定位问题1. 查看当前linux系统的可分配端口cat /proc/sys/net/ipv4/ip_local_port_range当前系统的原创 2020-11-18 08:20:19 · 3635 阅读 · 0 评论 -
Linux的shell下发送mail的工具
背景项目中搭建了一套集群环境,整个集群机器的网络可用性通过一个shell脚本来进行监控。该脚本在检测网络连通性失败的情况下会打印错误日志并发送邮件通知给相关人员。那如何使用linux命令来发送邮件呢?这里找到了一个好工具:mailx。简介Mailxis an intelligent mail processing system, which has a command syntax reminiscent ofed(1) with lines replaced by messages. ..原创 2020-11-04 07:37:25 · 1413 阅读 · 0 评论 -
ntpdate:设置服务器时间定期同步
背景在后端服务运行过程中,有时会遇到一个时间不同步的问题,即服务器时间对比当前时间会有滞后或超前。这种时间不同步导致某些软件服务问题,例如:1. 服务日志打印的时间不准,导致查问题比较麻烦。2. 在服务写入数据到数据库或者其他中间件的时候,时间戳不对,导致页面显示异常3. 集群化服务在不同机器节点上的时间不一致,导致集群状态异常那如何解决时间同步的问题呢?我们可以使用ntpdate定期同步服务器时间设置过程安装ntpdate#Ubuntuapt install -y原创 2020-11-02 07:55:59 · 1570 阅读 · 0 评论 -
Linux下流量监控:iftop的安装与使用
1.简介iftop does for network usage what top(1) does for CPU usage. It listens to network traffic on a named interface and displays a table of current bandwidth usage by pairs of hosts. Handy for answering the question "why is our ADSL link so slow?".ifto原创 2020-10-26 08:07:22 · 258 阅读 · 2 评论 -
yum安装冲突:Another app is currently holding the yum lock
背景由于需要在环境中用yum安装多个软件,于是通过终端在机器上打开了两个窗口,分别使用yum安装不同的软件,结果报了错:Another app is currently holding the yum lock; waiting for it to exit...解决方法1)查看yum进程:ps aux |grep yum2)处理方法:杀掉对应的进程:kill -9 28044 等待pid为28044的yum安装完成如果是无关紧要的安装就采取第一种处理方法,如果是比较原创 2020-10-15 08:26:22 · 215 阅读 · 0 评论 -
高可用测试:iptables模拟机器断网
背景具有HA(高可用)的软件服务在集群某节点出现断网的时候,整个集群依旧可以提供正常的服务。很多开源软件都有HA版本(比如rocketmq,kafka),如果现在有一个软件需要进行高可用测试,该如何模拟其中的断网场景呢?比如3台机器A,B,C组成的一个集群环境,其中A机器断网,B和C依旧能够正常工作。A:192.168.21.23B:192.168.21.24C:192.168.21.25跳板机D:192.168.21.26现在尝试模拟A机器断网,B和C机器无法访问A的情况。原创 2020-10-14 07:53:31 · 1648 阅读 · 0 评论 -
cpu压测神器:cpuburn深度指南
1. 前言最近在测试一个物联网的项目,项目里包含设备资源进行监控告警的功能。例如如下监控项:cpu负载超核、内存使用率过高、硬盘使用率过高,系统流量超速等。为了验证监控的有效性,就需要构造对应场景来进行测试。如何对cpu,内存,硬盘,流量这几类资源进行数据构造呢?我在网速搜罗了一圈发现有四个比较好用的工具,能较方便的构造对应场景:cpuburn memtester dd netperf首先我们来介绍这款烧脑神器,cpuburn2.简介项目地址:https://patri.原创 2020-09-11 07:50:33 · 3012 阅读 · 4 评论 -
小白网卡带宽限速神器:wondershaper
介绍WonderShaper是一个用于对特定网卡进行带宽限速的脚本,它封装了linux的tc命令,但是使用起来更加简单和方便,如果你对限速要求不多,可以用wondershaper满足你大部分需求。项目地址:https://github.com/magnific0/wondershaper.git使用场景像有些做流量控制的软件都会涉及到此类限速场景,比如测试一些离线上传功能,在网卡带宽较小的情况下,是否能够优雅处理完所有离线数据上报。弱网测试,比如手机连接linux机器的共享网..原创 2020-09-04 08:25:50 · 2742 阅读 · 0 评论 -
python3.6和pip3:Mac下安装与升级与踩坑之路
本文以Mac OS的64位系统为例,演示如何安装python3.6和相应环境。安装Python3的机器必须要能访问外网才能进行如下操作!说明:macOS版本信息1. 安装方式在MAC下安装python有两种方式:通过brew命令安装 (不推荐) 源码安装 (推荐)用brew安装的话,一般只能安装内置的python3.7和python3.8版本,如果是安装python3.6比较麻烦,而且安装完之后还会遇到很多坑,如果你只需要Python3.7和Python3.8,那么可以试试用...原创 2020-08-27 08:22:36 · 1737 阅读 · 0 评论 -
python3.6和pip3:Centos下安装与升级与踩坑之路
本文以Centos7系统为例,演示如何安装python3.6和相应环境。安装Python3的机器必须要能访问外网才能进行如下操作!1. 安装方式在Centos下安装python有两种方式:通过yum安装 (推荐) 源码安装这里推荐第一种方式安装,因为yum安装会帮你做很多善后工作,而源码安装可能需要配置和系统修改的地方比较多。无论是第一点还是第二点,首先要确认当前系统中Python3是否已安装。2. 确认本地Python3版本本地Python3安装一般存在三种情况...原创 2020-08-26 07:57:18 · 1896 阅读 · 0 评论 -
python3.6和pip3:Ubuntu下安装升级与踩坑之路
本文以Ubuntu16.x系统为例,演示如何安装python3.6和相应环境。安装Python3的机器必须要能访问外网才能进行如下操作!1. 安装方式在Ubuntu下安装python有两种方式:1. 通过apt安装 (推荐)2. 源码安装这里推荐第一种方式安装,因为apt安装会帮你做很多善后工作,而源码安装可能需要配置和系统修改的地方比较多,不是那么建议。无论是第一点还是第二点,首先要确认当前系统中Python3的安装情况2. 确认本地Python3版本本地Pytho原创 2020-08-25 08:48:25 · 3320 阅读 · 1 评论 -
telnet:no route to host
还是最近那个私有云项目,客户提供了几台虚机,让我搭建一套环境,这套环境涉及到postgresql的使用。我在A机器上安装好了postgresql之后,发现在B机器上依赖postgresql的服务报错,一看是无法访问postgresql的5432端口,于是我使用telnet尝试访问pg的5432端口,如下图:结果报错:No route to host在本机上使用telnet127.0.0.1 5432是可以访问的,说明端口被防火墙给拦截住了。使用centos7下的firewall-cm..原创 2020-08-21 08:05:05 · 4312 阅读 · 1 评论 -
unknown host:无法访问百度
最近做私有云的项目,客户那边提供了一台Ubuntu机器让我装环境,由于需要访问外网下载相关软件包,所以试了下wget相关的包,结果无法下载。于是我就试了下外网的连通性。首先ping了下baidu,发现不性ping www.baidu.comping: unknown host www.baidu.com接着我ping了下第三方dns,发现可以ping通ping 114.114.114.11464 bytes from 114.114.114.114: icmp_seq=0..原创 2020-08-20 08:25:23 · 525 阅读 · 0 评论 -
dd命令与性能测试
1.简介Linux dd命令用于读取、转换并输出数据。dd可从标准输入或文件中读取数据,根据指定的格式来转换数据,再输出到文件、设备或标准输出。简单来说,dd命令可以用于:磁盘数据备份与恢复 拷贝内存资料到硬盘 从光盘拷贝iso镜像 格式化磁盘数据 测试硬盘读写速度 生成一个大文件(用于测试或者模拟磁盘满的异常情况)2. 参数详解输入:dd --helpif=文件名:输入文件名,默认为标准输入。即指定源文件。of=文件名:输出文件名,默认为标准输出。...原创 2020-08-19 08:06:03 · 975 阅读 · 0 评论 -
linux下解压缩zip包:unzip命令
对应windows下的应用,一般压缩都使用zip压缩,放到linux下我们怎么解压缩呢?这里介绍一个linux下的小命令:unzip1) 安装Centosyum updateyum install -y unzipUbuntuapt updateapt install -y unzip2)小例子查看压缩文件内容unzip -lelasticsearch-analysis-ik-7.3.2.zip解压某文件,直接解压到本地目录unzip elas..原创 2020-08-18 08:09:01 · 7276 阅读 · 0 评论 -
python调用shell脚本:OSError: [Errno 8] Exec format error
最近在公司项目中遇到一个脚本调用问题,有个python的命令行工具使用subprocess模块启动了一个zookeeper的shell脚本,在执行过程中报了一个错:OSError: [Errno 8] Exec format error,如下图:此时我尝试在命令行执行红框中的shell脚本:执行成功,说明不是shell脚本的问题。然后,我怀疑是python的权限有问题,网上查了下,说是要加上python解释器(#!/usr/env/python),于是我就检查了下对应的pytho..原创 2020-08-17 20:58:59 · 2860 阅读 · 0 评论 -
Linux利用war包一键搭建Jenkins(免插件安装)
1. 安装JDK8CentOS快速安装JDK8Ubuntu快速安装JDK82.下载jenkins相关文件2.1 jenkins war下载#linux下执行wget,若提示wget命令不存在,则按照yum install -y wget或则apt install -y wgetwget http://mirrors.jenkins.io/war-stable/2.235.4/jenkins.war2.2 jenkins_home文件下载点击这里免费下载:https:/.原创 2020-08-16 21:44:57 · 381 阅读 · 0 评论 -
nginx启用域名访问,禁止ip直接访问
最近为公司客户搭建一套ToB的平台,该平台的部署机器在客户那边(无法直接登录,需要通过VPN访问)。为了方便从外部直接访问平台的web页面,我通过frps工具反向代理到我一台公有云机器,这样就可以直接通过该机器的公网IP访问私有环境的web页面。但直接使用公网IP访问可能会涉及到web安全问题,比如公网ip扫描。为了规避这个问题,我将nginx的代理配置为域名访问,隐匿了IP直接访问。如下是使用效果:1)通过IP直接访问该域名,返回403错误。2)通过域名访问,可以访问。那么是如何配置.原创 2020-08-14 07:40:37 · 805 阅读 · 0 评论 -
最流行的CI工具:Centos下搭建Jenkins方案
1. 安装JDK版本要求2.164 (2019-02) and newer: Java 8 or Java 112.54 (2017-04) and newer: Java 81.612 (2015-05) and newer: Java 72. 安装jdk8Centos快速安装JDK82.3 安装Jenkins2.1 下载jenkins的rpm包https://download.csdn.net/download/ccgshigao/127107592...原创 2020-08-14 10:44:39 · 94 阅读 · 0 评论 -
Centos下快速安装JDK并设置JAVA_HOME
更新yum源列表yum update查找jdk版本yum search jdk | grep 1.8选择这个java-1.8.0-openjdk.x86_64,即java8版本安装jdk8yum install java-1.8.0-openjdk.x86_64查看java是否安装成功java -version查找JDK安装目录update-alternatives --con...原创 2020-08-12 21:05:34 · 438 阅读 · 0 评论 -
Linux下zookeeper单节点安装
1.获取zookeeper在这里下载zookeeper:https://download.csdn.net/download/ccgshigao/127056202.拷贝zookeeper到指定目录cp zookeeper /opt/ -r3.修改zookeeper的可执行权限chmod +x /opt/zookeeper4. 编写zookeeper启动脚本cat << EOF > /etc/init.d/zookeeper#!/bin...原创 2020-08-12 21:08:31 · 118 阅读 · 0 评论 -
Windows环境下搭建虚机Ubuntu环境
Ubuntu是一款桌面版的Linux操作系统,适用于日常的Linux的开发工作,特别是没有买Mac本本的同学们,本文通过VMware安装Ubuntu操作系统,旨在帮助你搭建一套属于自己的本地开发环境。提示:本教程适用操作系统:Windows环境(7/8/10)如果地址不能下载了请在文末留言,我会更新网盘地址。1.相关软件1.1 Ubuntu镜像地址1) Ubuntu16完全安装原始镜像(搭建一个干净环境) 链接:https://pan.baidu.com/s/1-1X2SbiU..原创 2020-08-11 22:06:52 · 169 阅读 · 0 评论 -
Ubuntu下快速安装JDK并设置JAVA_HOME
更新软件源sudo apt update查找jdk版本apt search jdk选择这个openjdk-8-jdk,即java8版本安装jdk8apt install openjdk-8-jdk查看java是否安装成功java -version这样就大工告成了,但是很多软件,例如jenkins,zookeeper,sonarqube,jmeter等工具需要知道JAVA_HOME在哪里,该怎么办呢?看下是否被设置到环境变量:...原创 2020-08-11 07:36:43 · 1623 阅读 · 0 评论 -
《linux下的计算器:bc用法入门篇》
说起电脑上的计算器,可能所有人的印象都是这样的:windows的计算器有界面当然很酷,但是如果我们在黑黑的linux下面该怎么办呢?不用急,在linux下面也有一款非常棒的计算器:bc。bc是一款linux下的一款小工具,我们在linux下输入:man bc,看一下简单的介绍:bc居然是一款任意精度的计算器“语言”,看来bc真的很强大。那我们开始安装下bc工具吧。一、安装centos yum -y install bcubuntuapt ins...原创 2020-08-10 08:24:10 · 1105 阅读 · 0 评论 -
Linux下利用docker搭建elasticsearch(单节点)
1. 拉取镜像#elasticsearch 6.x和7.x版本有很多不一样需要确认docker pull docker.elastic.co/elasticsearch/elasticsearch:7.3.22. 启动容器docker run -d --name es -p 9200:9200 -p 9300:9300 -e "discovery.type=single-node" docker.elastic.co/elasticsearch/elasticsearch:7.3.2原创 2020-07-30 08:20:22 · 712 阅读 · 0 评论 -
效率提升:巧用vimdiff来替代原始的svn diff和git diff
有许多命令行选手在linux下开发的时候会经常遇到一个问题,无论是svn还是git,提供的原始diff功能太难以阅读,我们希望的是能够命令行下也能展示side by side的对比模式,而不是inline的方式,这里我们提供了一个小技巧来解决眼睛疼的问题。1.Vimdiff替代svn diff1)编写脚本执行vim diffwrap.sh,添加如下内容(输入:i,然后右键复制原文,粘接内容到终端):#!/bin/sh#过滤掉svn diff的前五个命令行参数shift 5#.原创 2020-07-26 08:09:30 · 457 阅读 · 0 评论 -
Swap常用操作与性能测试
Swap分区通常被称为交换分区,这块儿分区位于硬盘的某个位置,当系统内存(物理内存)不够用的时候,如果开启了交换分区,部分内存里面暂时不用的数据就会Swap out(换出)到这块儿分区;当系统要使用这部分数据的时候,存储在Swap分区的数据就会Swap in(换入)到内存当中。简而言之,Swap分区就类似于内存的后备内存(只是做了下缓冲)一、swap的大小设置建议(源自redhat官方):1. 内存<=2GB, Swap分区设置3倍内存大小2.2GB<=内存<...原创 2020-07-25 07:14:41 · 1287 阅读 · 0 评论 -
15分钟入门parallel
GNU Parallel是一个Linux下的工具,为了在一台或多台计算机上并行的执行计算任务,一个计算任务可以是一条shell命令或者一个以每一行做为输入的脚本程序。通常的输入是文件列表、主机列表、用户列表、URL列表或者表格列表;一个计算任务也可以是一个从管道读取的一条命令。GNU Parallel会把输入分块,然后通过管道并行的执行。如果你会使用xargs和tee命令,你会发现GNU Parallel非常易于使用,因为GNU Parallel具有与xargs一样的选项。GNU Parallel可以.翻译 2020-07-24 13:10:11 · 361 阅读 · 0 评论