测试工程师必会的 Linux 技能
前言:自从柠檬班自动化课程升级加入了Docker技术之后,Docker相关操作都在Linux上,很多同学自己在操作的时候导致各种问题,有些命令不存在,环境变量不会配,容器访问不了,启动报错等等一些列问题。导致这些问题的根源还是大家对Linux操作系统不熟悉,接下来我们就讲一下作为测试工程师应该掌握哪些Linux技能。
一、什么是Linux
Linux,全称GNU/Linux,是一种免费使用和自由传播的类UNIX操作系统,其内核由林纳斯·本纳第克特·托瓦兹于1991年10月5日首次发布,它主要受到Minix和Unix思想的启发,是一个基于POSIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的Unix工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。Linux有上百种不同的发行版,如基于社区开发的debian、archlinux,和基于商业开发的Red Hat Enterprise Linux、SUSE、Oracle Linux等。简单来说Linux和windows一样也是一个操作系统,但是又区别与windows。
二、Linux与windows区别
- 源:Linux是开源的,windows是闭源的。
- 内核:Linux操作系统使用Linux内核,Windows操作系统使用NT内核。
- 软件支持:Linux软件支持很少,Windows软件支持丰富,目前大部分硬件驱动厂商都支持Windows少部分支持Linux
- 人机交互:Linux使用命令行模式为主要交互方式,有一定的门槛。windows通过图形界面使用鼠标点击为主要交互方式,易用性更好。
- 市场定位:Linux市场主攻服务器市场,Windows系统主打桌面市场。所以企业服务器都是用的Linux系统,而日常办公都是实用的Windows系统。
三、Linux目录介绍
在学习Linux之前,了解Linux文件系统的目录结构,是学好Linux的至关重要的一步,深入了解linux文件目录结构的标准和每个目录的详细功能,对于我们用好linux系统至关重要。
- /bin/: 用来贮存用户命令。目录 /usr/bin 也被用来贮存用户命令。
- /boot/: 开机引导目录,包括Linux内核文件与开机所需要的文件。
- dev (devices):设备目录,所有的硬件设备及周边均放置在这个设备目录中。
- /etc/: 系统配置文件。
- /home/: 用户主目录的默认位置。
- /lib/: 开机时常用的动态链接库,bin及sbin指令也会调用对应的lib库。
- /lib64/: 开机时常用的动态链接库64位,bin及sbin指令也会调用对应的lib库。
- /media/: 可移除设备挂载目录,类似软盘 U盘 光盘等临时挂放目录。
- /mnt/: 用户临时挂载其他的文件系统,额外的设备可挂载在这里。
- /opt/: 第三方软件安装目录,现在习惯性的放置在/usr/local中。
- /proc/: 虚拟文件系统,通常是内存中的映射。
- /root/: 超级用户的主目录。
- /run/: 保存系统运行时需要的内容,系统下次启动时会重新生成。
- /sbin/: 许多系统命令(例如 shutdown)的贮存位置。目录 /usr/sbin 中也包括了许多系统命令。
- /srv/: 服务启动后需要访问的数据目录。
- /sys/: 跟proc一样虚拟文件系统,记录核心系统硬件信息。
- /var (variable) :用于存放运行时需要不断改变数据的文件,例如日志文件和打印机假脱机文件。
- /tmp/: 用户和程序的临时目录,所有用户对该目录均可读写。
- /usr/: 包括与系统用户直接有关的文件和目录,例如应用程序及支持它们的库文件。
- /var/log/
/var/log/message :系统启动后的信息和错误日志,是Linux中最常用的日志之一
/var/log/secure :与安全相关的日志信息
/var/log/maillog :与邮件相关的日志信息
/var/log/cron :与定时任务相关的日志信息
/var/log/spooler :与UUCP和news设备相关的日志信息
/var/log/boot.log :守护进程启动和停止相关的日志消息
四、基本命令
- 查看系统信息
lsb_release -a - 如果lsb_release命令不存在,则需要先安装再使用
yum -y install lsb_release-lsb - 环境变量配置
vim /etc/profile - 修改配置文件后重新加载配置文件
source /etc/profile - 显示当前系统中资源消耗情况
top - 显示当前内存和交换空间使用情况
free -m
free -h - 显示文件系统磁盘空间的使用情况
df - 显示网卡
ifconfig - 检查网络或者项目是否可访问
ping www.baidu.com
curl -I 172.40.1.142:18001/lemnon-base - 查看进程
ps -ef | grep 进程名称 - 结束进程
kill -9 PID - 查看端口
netstat: netstat -an |grep 8080
lsof -i :8080
五、服务器时间相关命令
- 查看当前时间
date - 修改时间时分秒
data -s "11:30:30" - 修改完整时间
data -s "2021-12-12 11:30:30" - 同步网络时间
如果没有ntpdate命令要先安装,-u参数可以越过防火墙与主机同步
ntpdate -u ntp.api.bz - 查看硬件时间
hwclock --show - 将系统时间写入到硬件
hwclock -w - 设置系统时间和硬件时间同步
hwclock --hctosys - 注意点
修改服务器时间修改的是系统时间,如果不写入硬件,服务器重启后设置的时间会失效。
六、防火墙相关命令
- 查看firewall服务状态
systemctl status firewalld - 查看firewall的状态
firewall-cmd --state - 查看防火墙规则
firewall-cmd --list-all - 开启防火墙
service firewalld start - 重启防火墙
service firewalld restart - 关闭防火墙
service firewalld stop - 查询端口是否开放
firewall-cmd --query-port=8080/tcp
返回no表示未开放,yes表示已开放 - 开放指定端口
firewall-cmd --permanent --add-port=8080/tcp - 从防火墙规则中移除指定端口
firewall-cmd --permanent --remove-port=8080/tcp - 重启防火墙
firewall-cmd --reload
修改配置后要重启防火墙才会生效
七、文件与目录操作
-
跨服务器拷贝命令
scp -r testdir root@172.21.0.132:/mnt/test -
分页显示文本文件内容,可前后翻页,空格向前,b向后,q退出,回车:查看行,空格:翻页
more test1.txt -
分页显示文本文件内容,可前后翻页,空格向前,b向后,支持底行模式,q退出,回车在:模式下/输入查找的字符
less test1.txt -
文字过滤:在指定文件中查找包含指定内容的行,在test1.log中查找包含aaa的所有行
grep aaa test1.log -
动态查看文件
tail -200f test.log -
读取标准输入的数据,并将其内容输出成文件,追加写入
grep Linux boot.log | tee -a 2022.txt
tail -200 test1.log | grep 'test' | tee -a test2.log -
查找包含 name 或者 age 的行(两个条件)
sed -n '/name/,/age/p' aaa.txt -
查看文件的创建、修改时间
stat text.txt
Access:文件最近访问时间
Modify:文件内容最近修改时间
Change:文件属性最近修改时间 -
覆盖写入文件
>:echo "test"> test.txt
-
追加写入文件
>>: echo "test" >> test.txt
-
vim常用操作
:set nu 显示行号。 :set nonu 取消显示行号。 i 在光标签插入。 :wq 强制性写入文件并退出。即使文件没有被修改也强制写入,并更新文件的修改时间。 :x 写入文件并退出。仅当文件被修改时才写入,并更新文件修改时间,否则不会更新文件修改时间。
八、压缩与解压
tar命令
- 将test.txt 压缩成test.tar文件,被压缩文件可以是多个文件或者文件夹
tar -cvf test.tar test.txt - 解压缩.tar文件
tar -xvf test.tar - 是否需要使用gzip压缩和解压(压缩/解压 .gz 和 .tar)
tar -zcvf test.tar.gz test.txt
tar -zxvf test.tar.gz
zip命令
- 压缩递归处理,将test1.txt 压缩成 test.zip文件,被压缩文件可以是多个文件或者文件夹
zip -r test.zip test.txt - 解压缩.zip文件
unzip test.zip
gzip命令
- 压缩命令后面的文件,原文件会消失,直接变成压缩后的文件
gzip test.txt - 解压test.txt.gz
gzip -d test.txt.gz - 递归解压
gzip -dr test.txt.gz
九、文件与目录权限相关
文件或目录权限
u:表示文件所属者;
g:表示用户组;
o:表示其他用户
r:4可读权限;
w:2可写权限;
x:1可执行权限;
-:0表示无权限
+:表示添加权限;
-:表示去掉权限
chmod u+x test.txt: 给当前用户添加可执行权限
chown user:group test.txt 修改文件所属用户和所属组
chown -R user:group test.txt 修改指定目录以及其子目录下所有文件所属用户和所属组
十、用户相关
useradd testUser: 添加用户
passwd testUser: 修改用户密码
userdel testUser: 删除用户