玩命加载中 . . .

测试中常用的Linux命令汇总


概述

在日常测试工作中,产品是部署在Ubuntu上的,本文罗列一些在测试过程中,常用到的一些指令。

批量生成文件

方法1:

seq 1 10 | xargs -i{} -P 10 touch file_{}

10个并发来touch file

方法2:

for i in {1..100}; do dd if=/dev/zero of=file_$i bs=1M count=1; done

这个没有并发哦~

方法3:

touch file{0..9}.txt

相应的,创建目录、删除目录/文件(夹),都可以以此类推:

rm -rf file{0..9}

mkdir dir{0..9}

rm -rf dir{0..9}

查找僵尸进程

ps -A -ostat,ppid,pid,cmd | grep -e '^[zZ]'

查看进程运行时间

ps -A -opid,stime,etime,args | grep XXX

查看某进程什么时候启动、运行时间

启动时间

ps -eo lstart

运行多长时间

ps -eo etime 

示例:

ps -eo pid,lstart,etime | grep 5176

或者

ps -p `pidof ceph-mon` -o etime,pid,cmd

查看网卡读写信息

方法1:

nfsiostat 2

方法2:

iftop

或者:

iftop -I ethX

方法3:

sar -n DEV 2

查看cpu信息

查看物理CPU的个数

cat /proc/cpuinfo |grep "physical id"|sort |uniq|wc -l

查看逻辑CPU的个数

cat /proc/cpuinfo |grep "processor"|wc -l

或者使用nproc命令查看:

root@host245:~# nproc
32

查看CPU是几核

cat /proc/cpuinfo |grep "cores"|uniq

查看CPU的主频

cat /proc/cpuinfo |grep MHz|uniq

查看内存的插槽数,已经使用多少插槽。每条内存多大,已使用内存多大

dmidecode|grep -P -A5 "Memory\s+Device"|grep Size|grep -v Range

查看内存支持的最大内存容量

dmidecode|grep -P 'Maximum\s+Capacity'

查看内存的频率

dmidecode|grep -A16 "Memory Device"

dmidecode|grep -A16 "Memory Device"|grep 'Speed'

VM热加盘

虚拟机添加硬盘,无需重启,识别新硬盘

echo '- - -' > /sys/class/scsi_host/host*/scan

查看sector size

cat /sys/block/sdX/queue/*block_size

如何确定盘是SSD类型的磁盘

方法1:

cat /sys/block/sdX/queue/rotational

方法2:

lsblk -d -o name,rota

输出示例如下:

root@host245:~/tmp# lsblk -d -o name,rota
NAME ROTA
sda     0
sdb     0
sdc     1
sdd     1
sde     1
sdf     1
sdg     1
sdh     1
sdi     1
sdj     1
sdk     1
sdl     1

说明:

  • 0 表示是SSD

  • 1 表示是HDD或者SAS盘

  • 如SSD是在RAID卡上,此方法不适用,需要借助Megacli(e.g:MegaCli ldpdinfo aall)来确认

查看分区的uuid信息

[root@nwos ~]# blkid  /dev/sdb1
/dev/sdb1: UUID="9d7790c6-4fd9-47db-ad16-24d1025d4518" TYPE="ext4" 

或者直接使用blkid指令列出所有分区的uuid

快速创建大文件

fallocate -l 10G bigfile

上面这个,只能骗过ls -s, du和df

truncate -s 10G bigfile

上面这个,只能骗过ls -l

dd of=bigfile bs=1 seek=10G count=0

上面这个,只能骗过ls -l

调出后台运行的命令

比如vi 一个文件,ctrl+z之后,进入后台, 或者在vi期间,session中断了(没有tmux)

root@node01:/home/stability_testing/src/testCase/_03_ctdb/testcasebase# vi ctdbManagerTestcaseBase.py 

[1]+  Stopped  

ps查看:

root@node01:/home/stability_testing/src/testCase/_03_ctdb/testcasebase# ps -ef | grep -i vii
root      393866  399030  0 11:35 pts/2    00:00:00 grep --color=auto -i vii
root@node01:/home/stability_testing/src/testCase/_03_ctdb/testcasebase# ps -ef | grep -i vi
root        1085       2  0 Jun21 ?        00:00:00 [dbu_evict]
root        1111       2  0 Jun21 ?        00:00:12 [arc_user_evicts]
root      394119  399030  0 11:35 pts/2    00:00:00 grep --color=auto -i vi
root      412813  399030  0 10:58 pts/2    00:00:02 vi ctdbManagerTestcaseBase.py

如何调出这个vi命令,继续进行vi编辑?

Step1、使用jobs命令

`

root@node01:/home/stability_testing/src/testCase/_03_ctdb/testcasebase# jobs
[1]+  Stopped                 vi ctdbManagerTestcaseBase.py

这里看到[1]+,如果有多个后台运行,展示类似如下:

[root@pcmxexweb etc]# jobs

[1]-  Stopped                 find / -name xml

[2]+  Stopped                 vi /etc/hosts

Step2、执行fs X,调出来

X表示中括号里的数值,比如:

fg 1

则调出find命令

查看所有网口的Link Detected 状态

ifconfig -a | grep 'Link encap:' | grep -v lo | awk '{{print $1}}' | xargs -I{} -t ethtool {} | grep 'Link detected'

输出示例:

ethtool bond0 
	Link detected: yes
ethtool bond1 
	Link detected: yes
ethtool enp129s0f0 
	Link detected: yes
ethtool enp129s0f1 
	Link detected: no
ethtool enp130s0f0 
	Link detected: yes
ethtool enp130s0f1 
	Link detected: no
ethtool eth0 
	Link detected: yes
ethtool eth1 
	Link detected: no

格式化对齐输出

对于cat的一些内容,显示总是不对齐

解决方法

使用|column -t, 如:

cat dev | column -

输出示例:

查看top 10 CPU、内存的占用

CPU占用最多的前10个进程:

ps auxw|head -1;ps auxw|sort -rn -k3|head -10

内存消耗最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k4|head -10

虚拟内存使用最多的前10个进程

ps auxw|head -1;ps auxw|sort -rn -k5|head -10

统计代码行数

find 加 wc

find . -type f -iname "*.py" -print0 | xargs -0 wc -l

这个指令比较原始,会含有注释、空格等的总计行数.

使用cloc进行统计

示例如下:

cloc /bigtera/nose_framework/src/

pylint

pylint /home/xxx/src

列出目录的4种方法

方法1:

ls -d */

方法2:

ls -F | grep '/$'

方法3:

ls -l | grep '^d'

方法4:

find . -type d -maxdepth 1 -print

查看时区

方法1 date

输出示例:

root@host245:~/tmp# date +"%Z %z"
CST +0800

或者 date -R

root@host245:~/tmp# date -R
Wed, 27 Nov 2019 16:59:38 +0800
root@host245:~/tmp# 

说明:

  • 重点在+0800,表示时区是东八区

方法2 timedatectl

输出示例:

root@host245:~/tmp# timedatectl | grep 'Timezone'
        Timezone: Asia/Shanghai (CST, +0800)

修改时区

当系统安装好后,发现系统时区不对,如何修改呢?

方法1

tzselect

方法2

timeconfig

说明:

  • 仅限于RedHat Linux 和 CentOS

方法3

dpkg-reconfigure tzdata

说明:

  • 适用于Debian

根据提示,选择不同的时区信息,设置成功后,需要复制文件:

cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime

清空cache

在跑fio进行读测试之前,一定要进行一次cache的清空,否则会影响fio性能测试结果的。
cache分3种:
1: pagecache; 2:dentries 和 inodes; 3:所有cache

清空内存缓存

echo 1 > /proc/sys/vm/drop_caches

清空 pagecache

sync
echo 1 > /proc/sys/vm/drop_caches

或者

sync
sysctl -w vm.drop_caches=1

清空 dentries 和 inodes

sync
echo 2 > /proc/sys/vm/drop_caches

或者

sync
sysctl -w vm.drop_caches=2

清空所有缓存(pagecache、dentries 和 inodes)

sync
echo 3 > /proc/sys/vm/drop_caches

或者

sync
sysctl -w vm.drop_caches=3

清空arp表

arp -n|awk '/^[1-9]/{print "arp -d " $1}'|sh -x

然后 off 和 on 对应的网卡

[root@localhost sbull]# ip link set arp off dev eth0
[root@localhost sbull]# ip link set arp on dev eth0

最后再查看下arp表信息

[root@localhost sbull]# arp -n

查看当前主机是物理机还是虚拟机

dmidecode -s system-product-name

示例:

物理服务器

[root@JX-P-L-KVM-231 ~]# dmidecode -s system-product-name
# SMBIOS implementations newer than version 2.7 are not
# fully supported by this version of dmidecode.
PowerEdge R930

KVM 虚拟主机

[root@JX-V-L-PHP-237 ~]# dmidecode -s system-product-name
KVM

VMware vSphere 虚拟主机

[root@ZE-T1 ~]# dmidecode -s system-product-name
VMware Virtual Platform

阿里云主机

[root@zdc ~]# dmidecode -s system-product-name
HVM domU

文章作者: Gavin Wang
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 Gavin Wang !
  目录