Linux常用命令_软件测试精选
在线linux模拟器
在线linux手册
http://linux.51yip.com/ (例子比较多)
https://www.linux-man.cn/ (例子比较多)
精选软件测试linux常用命令
参考:软件测试工程师linux十大场景命令使用 Linux常用命令运维手册
应用目标:
1.需要看日志,分析bug原因。
2.在linux环境搭建各种测试环境,包括各种应用程序,应用依赖的中间件,以及测试工具软件等。
3.优化系统架构,编写提升测试效率。
目录管理 cd,ls,pwd,mkdir,rmdir
文件管理 touch、rename、In、stat
文件和目录通用管理 cp mv rm scp
文件内容查看 和 编辑echo,
cat,head,tail,more,less,vi,grep文件查找命令which,whereis,locate,find
性能相关命令top,free,vmstat,iostat
网络命令curl,wget, ifconfig, route, ping, netstat,sar
系统管理shutdown,reboot,exit,date,kill,service,crontab(定时任务),su/sudo
软件管理RPM、yum、apt-get 或 apt
主要包括CPU(top、mpstat)、内存(vmstat、free)、I/O(iostat)、网络性能(sar)、系统日志信息(demsg)、查看进程状态(pidstat)。见Linux常用命令之性能命令
【】常用技巧
clear、ctrl + l清屏
ctrl+z、ctrl+c 、exit、Q 退出查看
history查看历史命令
Tab 热键
上下翻页键
【】目录管理 cd,ls,pwd,mkdir,rmdir
cd命令用来切换工作目录
cd # 切换到用户主目录
cd ~ # 切换到用户主目录
cd - # 切换到上一个工作目录
cd ./ # 就是指的当前目录
cd .. # 切换到上级目录
cd ../ # 切换到上级目录(与上一个一样)
cd ../.. # 切换到上两级目录
ls命令用来显示目录信息
ls # 列出当前目录可见文件
ls -l # 列出当前目录可见文件详细信息
ls -la # 列出所有文件(包括隐藏)的详细信息
ls -lh # 列出详细信息并以可读大小显示文件大小
ls -lt # 按时间列出文件和文件夹详细信息
ls -ltr # 按修改时间列出文件和文件夹详细信息
ls --color=auto # 列出文件并标记颜色分类
pwd 命令用来显示当前目录的绝对路径
mkdir 命令用来创建目录
- -p 确保目录名称存在,不存在的就建一个。
# 在当前目录中创建 zp 和 zp 的子目录 test mkdir -p zp/test # 在当前目录中创建 zp 和 zp 的子目录 test;权限设置为文件主可读、写、执行,同组用户可读和执行,其他用户无权访问 mkdir -p -m 750 zp/test
rmdir 命令用来删除空目录
删除子目录 test 和其父目录 zp
rmdir -p zp/test
【】文件管理 touch、rename、In、stat
touch创建文件
touch testfile #创建一个名为“testfile”的新的空白文件
touch testfile #文件存在,修改文件时间属性为当前系统时间
ls -l testfile #查看文件的时间属性
rename 命令用字符串替换的方式批量重命名
# 将 main1.c 重命名为 main.c
rename main1.c main.c main1.c
rename "s/AA/aa/" * # 把文件名中的 AA 替换成 aa
rename "s//.html//.php/" * # 把 .html 后缀的改成 .php 后缀
rename "s/$//.txt/" * # 把所有的文件名都以 txt 结尾
rename "s//.txt//" * # 把所有以 .txt 结尾的文件名的.txt 删掉
In建立类快捷方式
ln -s source dist #建立软连接 (文件、目录)
ln source dist #建立硬连接(仅文件)
硬链接可认为是一个文件拥有两个文件名;而软链接则是系统新建一个链接文件,此文件指向其所要指的文件。此外,软链接可对文件和文件夹,而硬链接仅针对文件。
stat 命令用于显示文件的状态信息。
stat 命令的输出信息比 ls 命令的输出信息要更详细。
stat myfile 显示文件的权限,创建、修改记录信息
【】文件和目录通用管理 cp mv rm scp wc
cp 复制到指定的目的文件或目录
# 将文件 file 复制到目录 /usr/men/tmp 下,并改名为 file1
cp file /usr/men/tmp/file1
# 将目录 /usr/men下的所有文件及其子目录复制到目录 /usr/zh 中
cp -r /usr/men /usr/zh
# 强行将 /usr/men下的所有文件复制到目录 /usr/zh 中,无论是否有文件重复
cp -rf /usr/men/* /usr/zh
# 将目录 /usr/men 中的以 m 打头的所有 .c 文件复制到目录 /usr/zh 中
cp -i /usr/men m*.c /usr/zh
mv 重新命名、移动文件/目录
mv file1.txt /home/office/ # 移动单个文件
mv file2.txt file3.txt file4.txt /home/office/ # 移动多个文件
mv *.txt /home/office/ # 移动所有 txt 文件
mv dir1/ /home/office/ # 移动目录
mv /usr/men/* . # 将指定目录中的所有文件移到当前目录中
mv file1.txt file2.txt # 重命名文件
mv dir1/ dir2/ # 重命名目录
mv -v *.txt /home/office # 打印移动信息
mv -i file1.txt /home/office # 提示是否覆盖文件
mv -uv *.txt /home/office # 源文件比目标文件新时才执行更新
mv -vn *.txt /home/office # 不要覆盖任何已存在的文件
mv -f *.txt /home/office # 无条件覆盖已经存在的文件
mv -bv *.txt /home/office # 复制时创建备份
rm删除文件/目录
rm test.txt # 删除文件
rm -i test.txt test2.txt # 交互式删除文件
rm -r * # 删除当前目录下的所有文件和目录
rm -r testdir # 删除目录下的所有文件和目录
rm -rf testdir # 强制删除目录下的所有文件和目录
rm -v testdir # 显示当前删除操作的详情
scp 远程复制
拷贝文件到远程服务器的指定目录
scp@ :
scp test.txt root@192.168.0.1:/opt拷贝目录到远程服务器的指定目录
scp -r@ :
scp -r test root@192.168.0.1:/opt
wc 统计并显示指定文件中的行数、字数、字节数
统计main.py文件中的行数、字数、字节数
wc main.py
统计main.py文件中的行数
wc -l main.py
统计main.py文件中的字数
wc -w mian.py
统计main.py文件中的字节数
wc -c mian.py
【】文件内容查看 和 编辑echo,cat, head, tail, more, less, vi, grep
echo:显示输入的内容 追加文件echo "liuyazhuang" >> liuyazhuang.txt
cat 查看短文件,命令用于连接文件并打印到标准输出设备上
cat m1 # 在屏幕上显示文件 ml 的内容
cat m1 m2 # 同时显示文件 ml 和 m2 的内容
cat m1 m2 > file # 将文件 ml 和 m2 合并后放入文件 file 中
head -n查看一个文本文件前n行内容
head example.txt :显示文件 example.txt 的前十行内容
head -n 11 passwd.txt 查看头11条内容
tail -n 查看一个文本文件倒数n行内容
tail -n 11 passwd.txt 查看倒数11条内容
tail -c 10 file # 显示文件file的最后10个字符
tail -f -n 查看滚动日志
tail -f -n 11 myApp.log tail -f -n 查看滚动日志
more-c -10 file Enter(向下翻滚一行),空格(向下滚动一屏),Q(退出命令)
# 显示文件 file 的内容,每 10 行显示一次,而且在显示之前先清屏。
more -c -10 file
less file 命令的作用与 more 十分相似
more 命令只能向前浏览。用 less 命令显示文件时,用 PageUp 键向上翻页,用 PageDown 键向下翻页。要退出 less 程序,应按 Q 键。
less 1.txt 查看1.txt
less -N 1.txt 查看1.txt (显示行号)
vi 命令查看或编辑并编辑一个文本文件内容
打开password.txt 文本文件
vi password.txt
按下键盘上的ESC,然后按下键盘上的 i 进入修改模式
修改完成后,再次按下键盘上的ESC
退出编辑并保存更改输入如下命令
:wq
:q! 不保存文件,强制退出vi命令
:w 保存文件,不退出vi命令
:wq 保存文件,退出vi命令
:wq!(保存编辑强制退出)
grep 全面搜索正则表达式并把行打印出来
在多级目录中对文本递归搜索(程序员搜代码的最爱):
$ grep "class" . -R -n忽略匹配样式中的字符大小写
$ echo "hello world" | grep -i "HELLO"匹配多个模式:
$ grep -e "class" -e "vitural" file只在目录中所有的.php和.html文件中递归搜索字符"main()"
$ grep "main()" . -r --include *.{php,html}在搜索结果中排除所有README文件
$ grep "main()" . -r --exclude "README"在搜索结果中排除filelist文件列表里的文件
$ grep "main()" . -r --exclude-from filelist
【】文件查找命令which,whereis,locate,find
which 命令,搜索的范围来自环境变量 PATH。
which python
which cd (内建命令不在范围)
也可以用 find / -type f -name "命令" 查找,但要自己判断命令(程序)和配置文件的区别。
whereis 命令用于搜索二进制程序,包括未把路径存进环境变量的程序。
whereis python
locate(需安装)搜索文件
yum -y install mlocate
安装完毕后就可以使用了
updatedb
locate 文件名
ocate 命令其实是 find -name 的另一种写法,但是要比后者快得多,原因在于它不搜索具体目录,而是搜索一个数据库/var/lib/locatedb,这个数据库中含有本地所有文件信息。Linux 系统自动创建这个数据库,并且每天自动更新一次,所以使用 locate 命令查不到最新变动过的文件。为了避免这种情况,可以在使用 locate 之前,先使用 updatedb 命令,手动更新数据库。
find文件和内容
当前目录搜索所有文件,文件内容 包含 “140.206.111.111” 的内容
find . -type f -name "*" | xargs grep "140.206.111.111"列出当前目录及子目录下所有文件和文件夹
find .在 /home 目录下查找以 .txt 结尾的文件名
find /home -name ".txt"
同上,但忽略大小写
find /home -iname ".txt"当前目录及子目录下查找所有以 .txt 和 .pdf 结尾的文件
find . -name ".txt" -o -name ".pdf"匹配文件路径或者文件
find /usr/ -path "local"基于正则表达式匹配文件路径
find . -regex ".(.txt|.pdf)$"
同上,但忽略大小写
find . -iregex ".(.txt|.pdf)$"找出 /home 下不是以 .txt 结尾的文件
find /home ! -name "*.txt"
【】文件压缩和解压tar, gzip, zip, unzip
tar 打包压缩和解压文件
tar -cvf a.tar a.txt #仅仅打包,不会压缩,后缀名名字最好是.tar,也为了方便解压。
tar -zcvf a.tar.gz a.txt # 打包后,以 gzip 压缩,后缀名最好是.tar.gz。
tar -jcvf a.tar.bz2 a.txt # 打包后,以 bzip2 压缩
tar -ztvf log.tar.gz # 查阅上述 tar 包内有哪些文件
tar -zxvf log.tar.gz # 将 tar 包解压缩
tar -zxvf log30.tar.gz log2013.log # 只将 tar 内的部分文件解压出来
gzip经常使用的一个对文件进行压缩和解压缩的命令
gzip * # 将所有文件压缩成 .gz 文件
gzip -l * # 详细显示压缩文件的信息,并不解压
gzip -dv * # 解压上例中的所有压缩文件,并列出详细的信息
gzip -r log.tar # 压缩一个 tar 备份文件,此时压缩文件的扩展名为.tar.gz
gzip -rv test/ # 递归的压缩目录
gzip -dr test/ # 递归地解压目录
zip 命令用于压缩文件
将 /home/Blinux/html/ 这个目录下所有文件和文件夹打包为当前目录下的 html.zip
zip -q -r html.zip /home/Blinux/html
unzip 命令用于解压缩由 zip 命令压缩的“.zip”压缩包
unzip test.zip # 解压 zip 文件
unzip -n test.zip -d /tmp/ # 在指定目录下解压缩
unzip -o test.zip -d /tmp/ # 在指定目录下解压缩,如果有相同文件存在则覆盖
unzip -v test.zip # 查看压缩文件目录,但不解压
文件权限设置chmod,chown,chgrp
chmod 命令用来变更文件或目录的权限
r=读取属性 //值= 4
w=写入属性 //值= 2
x=执行属性 //值= 1chmod u+x *.sh #给脚本添加可执行文件权限
chmod 777 data # 将文件夹data的权限设置为所有人都可以读、写和执行
chmod -R 777 data # 对data目录下的所有文件与子目录进行相同的权限变更
chmod 751 file
给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
chmod -R 755 /home/wwwroot/*
- 在所有命令中,大多数
-r 参数命令就可以理解为递归,文件夹的递归,文件夹下的文件或者文件夹,这样好记,方便理解。
chown通过chown改变文件的拥有者和群组
普通用户不能将自己的文件改变成其他的拥有者。其操作权限一般为管理员。
chown mail:mail log2012.log 改变拥有者和群组
chown root: log2012.log 改变拥有者
chown :mail log2012.log 改变群组
chown -R -v root:mail test6 改变指定目录以及其子目录下的所有文件的拥有者和群组
chgrp改变文件或目录的所属群组
使用权限是超级用户.
chgrp -v bin log2012.log 将log2012.log文件由root群组改为bin群组
chgrp --reference=log2012.log log2013.log 根据指定文件改变文件的群组属性
chgrp -R 100 test6 通过群组识别码改变文件群组属性
【】磁盘存储相关 df,du
df 命令(disk)用于显示磁盘分区上的可使用的磁盘空间。
du 命令是对文件和目录磁盘使用的空间的查看。
【】性能相关命令top,ps,free,vmstat,iostat
top 命令,就可以理解为linux系统的任务管理器。
实时动态地查看系统的整体运行情况,是一个综合了多方信息监测系统性能和运行信息的实用工具。主要显示系统中各个进程的资源使用情况,如cpu、内存、负载等。
- 按进程的CPU使用率排序:运行top命令后,键入大写P。
- 进程的内存使用率排序:运行top命令后,键入大写M。
iotop(需安装) 命令是一个用来监视磁盘 I/O 使用状况的 top 类工具。
ps 命令用于报告当前系统的进程状态。
# 按内存资源的使用量对进程进行排序 ps aux | sort -rnk 4
# 按 CPU 资源的使用量对进程进行排序 ps aux | sort -nk 3
free:查看服务器内存使用情况,包括物理内存、交换内存和内核缓冲区内存的空闲和剩余统计。
free -t # 以总和的形式显示内存的使用信息
free -s 10 # 周期性的查询内存使用信息,每10s 执行一次命令显示内存使用情况
free -m
total used free shared buffers cached
Mem: 2016 1973 42 0 163 1497
-/+ buffers/cache: 312 1703
Swap: 4094 0 4094
vmstat对操作系统的虚拟内存、进程、CPU活动进行监控。
iostat(需安装)工具将对系统的磁盘操作活动进行监视。
【】网络命令curl,wget, ifconfig, route, ping, host,netstat,sar
关键词:curl,wget, telnet, ip, hostname, ifconfig, route, ssh, ssh-keygen, firewalld, iptables, host, nslookup, nc/netcat, ping, traceroute, netstat。
curl、wget 下载
curl 命令是一个利用 URL 规则在命令行下工作的文件传输工具。它支持文件的上传和下载,所以是综合传输工具,但按传统,习惯称 curl 为下载工具。
下载文件
$ curl http://man.linuxde.net/text.iso --silent下载文件,指定下载路径,并查看进度
$ curl http://man.linuxde.net/test.iso -o filename.iso --progress
########################################## 100.0%
wget 命令用来从指定的 URL 下载文件。
使用 wget 下载单个文件 wget http://www.linuxde.net/testfile.zip
telnet 远程连接
telnet 192.168.2.10
ip,ifconfig,route,ping
ip link show # 查看网络接口信息
ifconfig # 显示网络设备信息(激活状态的)
route # 查看当前路由
route add -net 224.0.0.0 netmask 240.0.0.0 dev eth0 # 添加网关/设置网关
route add -net 224.0.0.0 netmask 240.0.0.0 reject # 屏蔽一条路由
route del -net 224.0.0.0 netmask 240.0.0.0 # 删除路由记录
route add default gw 192.168.120.240 # 添加默认网关
route del default gw 192.168.120.240 # 删除默认网关
ping www.runoob.com # ping主机
ping -c 5 www.runoob.com # 指定接收包的次数
host,netstat显示网络连接,路由表,接口状态,伪装连接,网络链路信息
yum install host
host g.cn #查询谷歌中国的DNS host -a g.cn #查询详细信息
yum install netstat
netstat -a | more #列出所有端口 (包括监听和未监听的) netstat -r #显示核心路由信息 netstat -i #显示网络接口列表
sar--System Activity Reporter系统活动情况报告
目前 Linux 上最为全面的系统性能分析工具之一,可以从多方面对系统的活动进行报告,包括:文件的读写情况、系统调用的使用情况、磁盘I/O、CPU效率、内存使用状况、进程活动及IPC有关的活动等。
要判断系统瓶颈问题,有时需几个 sar 命令选项结合起来
怀疑CPU存在瓶颈,可用 sar -u 和 sar -q 等来查看怀疑内存存在瓶颈,可用 sar -B、sar -r 和 sar -W 等来查看
怀疑I/O存在瓶颈,可用 sar -b、sar -u 和 sar -d 等来查看
1.查看CPU使用情况 sar -u
2.将统计结果保存到文件 sar -o & sar -f
3.查看平均负载 sar -q
4.查看内存使用情况 sar -r
5.查看系统swap分区统计情况 sar -W
6.查看IO和传递速率 sar -b
7.查看磁盘使用情况 sar -d
- 统计网络信息 sar -n
8.1 网络接口信息 sar -n DEV
8.2 网络设备通信失败信息 sar -n EDVE
8.3统计socket连接信息 sar -n SOCK
8.4 TCP连接的统计 sar -n TCP
【】系统管理shutdown,reboot,date,kill,service,crontab,su/sudo
shutdown 关机、reboot重启
shutdown -h now 立刻关机
shutdown -h 5 5分钟后关机
poweroff 立刻关机
shutdown -r now 立刻重启
shutdown -r 5 5分钟后重启
reboot 立刻重启
date- 打印或设置系统日期和时间
date +%Y%m%d #获取当前日期格式为yyyymmdd
date +%F_%H:%M:%S #显示当前年-月-日_时:分:秒
date +%s #显示系统的时间戳
date -s “20080523 01:01:01″ #这样可以设置全部时间,只有root权限才能设置,其他只能查看。
date +%Y%m%d --date="+1 day" #显示后一天的日期
date +%Y%m%d --date="-1 day" #显示前一天的日期
date +%Y%m%d --date="-1 month" #显示上一月的日期
date +%Y%m%d --date="+1 month" #显示下一月的日期
date +%Y%m%d --date="-1 year" #显示前一年的日期
date +%Y%m%d --date="+1 year" #显示下一年的日期
date +%j #今年已经过了多少天
kill 命令:发送指定的信号到相应进程(top -pid)。
kill -l #列出所有信号名称
kill 1908 #杀死进程(top -pid)
kill -u tank #杀死指定用户的所有进程
service命令用于对系统服务进行管理,比如启动(start)、停止(stop)、重启(restart)、重新加载配置(reload)、查看状态(status)等。
service mysqld #打印指定服务mysqld的命令行使用帮助。
service mysqld start #启动mysqld
service mysqld stop #停止mysqld
service mysqld restart #重启mysqld
service mysqld reload #重新加载my.cnf配置文件
crontab 命令被用来提交和管理用户的需要周期性执行的任务。
详情见:https://www.runoob.com/linux/linux-comm-crontab.html

su/sudo 切换用户
su zhangying #切换用户,原用户环境变量
sudo仅在需要时授予用户权限
sudo -u tank ls #以tank用户,来执行ls命令
sudo touch test #以root账户来建一个文件test,为空默认是root用户
参考文章:

浙公网安备 33010602011771号