测试工程师必知必会的linux
2023-02-27 15:52:10 4 举报
AI智能生成
作为一名测试工程师,掌握Linux操作系统是必备的技能之一。Linux是一种开源的、可定制的操作系统,广泛应用于服务器、嵌入式设备等领域。熟悉Linux命令行操作,能够编写Shell脚本,是测试工程师提高工作效率的关键。此外,了解Linux内核原理、进程管理、内存管理等基本概念,也有助于深入理解软件运行机制,从而更好地进行性能测试和故障排查。总之,掌握Linux对于测试工程师来说具有重要意义,是提升自身专业素养的必经之路。
作者其他创作
大纲/内容
linux安装
vmware 14安装
centos7.8
网路
桥接:相当于直接连接物理网路
文件系统
ext4:第四代扩展文件系统
分区
swap:实现虚拟内存,内存交换空间。物理内存的1-2倍
/:根目录 ,所有目录都挂着这个目录下,建议5G以上
/boot:操作系统的内核和在启动系统过程中所要用到的文件。100M
/usr:存放系统中的应用程序
/home:存放普通用户的数据,普通用户的宿主目录
/var:存放系统中经常变化的的数据以及日志文件
/tmp:临时文件
/bin:标准系统实用程序;/dev:设备文件;/opt:可选的安装软件;/sbin:标准系统管理文件
网络配置
临时配置
ifconfig eth0 192.168.1.118
route add default gw 192.168.1.1
配置dns服务器: vim /etc/resolv.conf 增加nameserver 114.114.114.114
永久配置
修改/etc/sysconfig/network-scripts/ifcfg-eth0
linux命令
help
查看帮助文档。或者增加参数:-h
service
控制系统服务的重启等 service iptables status|service iptables restart
自己注册系统服务。/etc/rc.d/init.d/{service-name}。 service-name:服务名称,shell文件,start,stop,restart等等函数
网络配置
/etc/sysconfig/network-scripts/ifcfg-eth0
ssh常见错误
connection failed/refused
ssh root@172.16.1.12 -p 22,ip和端口有没有写错
ip端口是否通,如何确认telnet 172.16.1.12 22
sshd服务是否开启
防火墙禁止22端口访问。关闭防火墙
Permission denied, please try again
密码错误
确实没有权限
路径介绍
/:根目录
./:当前目录
../:上级目录
/root:root用户的主目录
/bin:存放linux常用命令的目录
/home/username:存放普通用户的个人配置信息
/boot:存放系统启动时需要用到的文件
/dev:存放系统中使用用的外部设备
/proc:存放内存中的信息
/tmp:存放临时文件
vi/vim文本编辑
三种模式
命令模式(Command mode):刚启动的状态即命令模式,
输入模式(Insert mode):命令模式下按i进入,此模式下可以编辑,esc退出
底线命令模式(Last line mode):命令模式下按:进入,执行linux其他命令,esc退出
操作命令
:w保存, :wq保存退出, :wq!强制保存退出, :q退出, :q!强制退出
dd:删除一行,gg:光标移动到首行,G:光标移动到末尾,:n:移动到第n行,set nu:设置行号,/:全文搜索,n:继续查找
linux启动级别
文件:/etc/inittab。0~6
linux系统重启与关机
重启:reboot,shutdown -r now;关机:halt,shutdown -h now
文件操作
文件创建
vi {filename}:有则编辑,没有则保存后创建
touch {filename}:创建空白文件
cat > {filename}:
文件查看
cat,more,less,head -n 10,tail -n 20,
文件操作
cp,mv,rm,scp
连接
软连接ln -s hello.txt hello。为hello.txt文件创建一个名为hello的软连接,快捷方式
硬连接ln -d hello.txt hello。为hello.txt文件创建一个名为hello的硬连接,新的文件,俩文件同步
目录操作
ls,tree,pwd,cd,mkdir,mkdir -p,rmdir,mv,cp
权限操作
group add:增加用户组;useradd:增加用户。 useradd -g test denny增加用户并添加到test组
权限:10位编码 type(1)+u(3)+g(3)+o(3)。type:类型,u文件所有者权限,g,所在组权限,o其他组权限
rwx:421,读写执行。
chmod
给所有人增加执行权限:chmod a+x hello.txt
修改文件权限:chmod 777 hello.txt
删除文件所有者的执行权限:chmod u-x hello.txt
修改目录及其下所有的权限:chmod -R 755 hello.txt
文件查找
find:查找文件和目录
find 目录 查找类型 查找的关键字
find . -type d 查找当前目录下所有的目录
find . -mtime +3 查找三天内更新过的文件
find ./ -name '2019*' -type d -mtime +8 查找2019开头并且8天内更新过的目录
grep:搜索文件内容
grep 【选项】 关键字 目标文件
grep -R "root" -r(R)递归查找当前目录以及字母下所有的文件
grep -n "root" /etc/passwd 查找并输出行号
压缩、解压
tar
参数
z:压缩成gz格式文件;c:创建压缩文件;x:解压文件;v:详细列出处理的文件;f:使用归档文件
tar -zcvf test.tar /opt/test; tar -zxvf test.tar.gz
实例
tar -zcvf test.tar /opt/test
tar -zxvf test.tar.gz
gzip
实例
gzip * 把当前目录中所有文件单独压缩
gzip -d *解压当前目录中所有的gz文件
gzip -c test > test.gz 把test文件压缩,并保留源文件
zip/unzip
实例
zip -r test.zip /opt/test 压缩
unzip test.zip -d /opt/解压到/opt/目录
高阶命令
xargs:给其他命令传递参数的一个过滤器,也是组合多个命令的一个工具
find -name 'test'|xargs rm;find -name 'test' -exec rm
find ./ -name '2019*' -type d -mtime +8|xargs rm -rf
管道“|”可将命令的结果输出给另一个命令作为输入之用
ls *|grep "test1"
awk:AWK 是一种处理文本文件的语言,是一个强大的文本分析工具
find -name "*.war"|awk -F '/' '{print $2}'
sed:文件流编辑器,根据命令批量处理
sed -i 's/192.168/172.16/g' test*
wc:计算字数
ls *.war|wc -l
其他杂项
su:切换用户
环境变量
export NAME=woniu 定义环境变量
vim /etc/profile source 增加环境变量
ifconfig:查看网卡信息
top:查看系统资源使用率,默认刷新时间5s
ps:查看系统进程
ps:查看当前终端正在运行的进程
ps -ef:查看系统正在运行的进程
clear:清屏
history:查看历史执行命令
free:查看内存使用
shell
shell简介
shell既是一种命令语言,也是一种编程语言
shell种类:Bourne Shell(/usr/bin/sh或/bin/sh);Bourne Again Shell(/bin/bash);C Shell(/usr/bin/csh)等等
cat /etc/shells查看系统中所有的shell,即支持的shell种类
第一个实例:#! /bin/sh echo "hello world"
第一行#! 告诉系统其后路径所指定的程序即是解释此脚本文件的 Shell 程序
执行shell,增加权限,./执行
shell基础
tab键:命令补齐
echo:输出,查看帮助/bin/echo --help;增加-e参数,可识别转义符
read:读取终端输入并赋值给变量
echo "what is your name?"
read Person
echo "my name is $Person"
cat:1、显示整个文件;2、从键盘输入创建文件;3、将文件合并
cat test
cat > test << end
echo "please input file name:\n"
read file1 file2 file3
cat -n $file1 $file2 $file3 1> catfile.log 2>cat.file.err
0:输入,默认是键盘
1:命令的标准输出
2:命令执行错误提示的输出
tty:查看当前终端设备编号
shell变量
变量命名:英文字母,数字和下划线。不能以数字开头。推荐英文
变量引用:$变量名;${变量名} 推荐花括号
字符串:双引号括起来
特殊变量:$+通配符
function testargs {
echo "there is $#args"
echo $10
}
testargs "$*"
testargs "$@
echo "there is $#args"
echo $10
}
testargs "$*"
testargs "$@
语句
test: 命令用于检查某个条件是否成立
test -e /etc/passwd;echo $?
if语句:
if 条件
then
命令1
else
命令2
fi
if [ $# -lt 3 ];
then
echo "sorry,it needs 3 args"
fi
then
echo "sorry,it needs 3 args"
fi
for语句:
for var in word1 word2 ... wordN
do
Statement(s) to be executed for every word.
done
do
Statement(s) to be executed for every word.
done
for var in 0 1 2 3 4 5 6 7 8 9
do
echo $var
done
do
echo $var
done
while语句:
while command
do
Statement(s) to be executed if command is true
done
do
Statement(s) to be executed if command is true
done
a=0
while [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
while [ $a -lt 10 ]
do
echo $a
a=`expr $a + 1`
done
case语句:
case word in
pattern1)
Statement(s) to be executed if pattern1 matches
;;
pattern2)
Statement(s) to be executed if pattern2 matches
;;
pattern3)
Statement(s) to be executed if pattern3 matches
;;
esac
pattern1)
Statement(s) to be executed if pattern1 matches
;;
pattern2)
Statement(s) to be executed if pattern2 matches
;;
pattern3)
Statement(s) to be executed if pattern3 matches
;;
esac
case $1 in
start)
echo "service is starting...."
;;
stop)
echo "service is stopping..."
;;
*)
echo "`basename ${0}`:usage: start | stop | restart "
exit 1 # Command to come out of the program with status 1
;;
esac
start)
echo "service is starting...."
;;
stop)
echo "service is stopping..."
;;
*)
echo "`basename ${0}`:usage: start | stop | restart "
exit 1 # Command to come out of the program with status 1
;;
esac
函数
function_name () {
list of commands
}
list of commands
}
function testargs {
echo "there is $#args"
echo $10
}
testargs "$*"
testargs "$@"
echo "there is $#args"
echo $10
}
testargs "$*"
testargs "$@"
shell扩展
crontab:定时任务的守护进程
crontab [-u user] [ -e | -l | -r ]
* * * * * command(分,时,日,月,星期,需要执行的命令或者sh)
nohup &
nohup command & 后台运行并输出到nohup.out中
sleep
等待几秒
linux软件安装
解压后直接用
jdk
环境变量配置:
vim /etc/profile
JAVA_HOME=/opt/jdk1.8.8_172
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib
重新加载环境变量,是设置生效
sourec /etc/profile
测试是否配置成功
java
javac
vim /etc/profile
JAVA_HOME=/opt/jdk1.8.8_172
PATH=$PATH:$HOME/bin:$JAVA_HOME/bin
CLASSPATH=$JAVA_HOME/lib
重新加载环境变量,是设置生效
sourec /etc/profile
测试是否配置成功
java
javac
tomcat
1、上传后解压即可用。
2、tomcat相关配置说明
bin:启动相关sh文件
conf:tomcat配置文件
logs:日志文件
webapps:部署应用存放地址
lib:第三方jar包
temp:临时文件。可清空
work:运行tomcat的工作目录。可清空
conf/server.xml:配置tomcat启动端口以及线程数
bin/catalina.sh:tomcat启动相关配置,调优相关配置,jvm等
2、tomcat相关配置说明
bin:启动相关sh文件
conf:tomcat配置文件
logs:日志文件
webapps:部署应用存放地址
lib:第三方jar包
temp:临时文件。可清空
work:运行tomcat的工作目录。可清空
conf/server.xml:配置tomcat启动端口以及线程数
bin/catalina.sh:tomcat启动相关配置,调优相关配置,jvm等
yum安装
源配置
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
yum命令
yum list|grep jdk
rpm安装
mysql
1、wget https://cdn.mysql.com/archives/mysql-5.7/mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
2、tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
注意:从下面开始,每一步都不能出错,都会提示成功或者100%
3、rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
如果没有提示成功,查找冲突包rpm -qa|grep mariadb
然后删除包yum remove mariadb-libs-5.5.65-1.el7.x86_64
4、再次执行安装
5、rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
6、rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
7、rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
8、查看mysql服务状态:systemctl status mysqld.service /service mysqld status
9、启动mysql服务:service mysqld start
10、查看root的临时密码cat /var/log/mysqld.log
11、登录mysql:mysql -uroot -plrdJu6Wd=_VL
12、修改root密码:alter user 'root'@'localhost' identified by '123456';
13、密码太简单,所以修改密码策略:vim /etc/my.cnf,增加如下两行
#添加validate_password_policy配置
validate_password_policy=0
##关闭密码策略
validate_password = off
14、修改完成后重新启动mysql服务,再次修改密码
15、使用新密进入mysql,授权远程登录mysql
#授权语句
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
#刷新权限
flush privileges;
16,安装navicate,第一次连接会报错。服务器的防火墙没有开放3306端口
解决:关闭防火墙或者防火墙中放行3306端口
1、service firewalld stop
2、firewall-cmd --zone=public --add-port=3306/tcp --permanent
注意:此种方式需要关闭selinux
vim /etc/selinux/config 设置为disabled
2、tar xvf mysql-5.7.29-1.el7.x86_64.rpm-bundle.tar
注意:从下面开始,每一步都不能出错,都会提示成功或者100%
3、rpm -ivh mysql-community-common-5.7.29-1.el7.x86_64.rpm
如果没有提示成功,查找冲突包rpm -qa|grep mariadb
然后删除包yum remove mariadb-libs-5.5.65-1.el7.x86_64
4、再次执行安装
5、rpm -ivh mysql-community-libs-5.7.29-1.el7.x86_64.rpm
6、rpm -ivh mysql-community-client-5.7.29-1.el7.x86_64.rpm
7、rpm -ivh mysql-community-server-5.7.29-1.el7.x86_64.rpm
8、查看mysql服务状态:systemctl status mysqld.service /service mysqld status
9、启动mysql服务:service mysqld start
10、查看root的临时密码cat /var/log/mysqld.log
11、登录mysql:mysql -uroot -plrdJu6Wd=_VL
12、修改root密码:alter user 'root'@'localhost' identified by '123456';
13、密码太简单,所以修改密码策略:vim /etc/my.cnf,增加如下两行
#添加validate_password_policy配置
validate_password_policy=0
##关闭密码策略
validate_password = off
14、修改完成后重新启动mysql服务,再次修改密码
15、使用新密进入mysql,授权远程登录mysql
#授权语句
grant all privileges on *.* to 'root'@'%' identified by '123456' with grant option;
#刷新权限
flush privileges;
16,安装navicate,第一次连接会报错。服务器的防火墙没有开放3306端口
解决:关闭防火墙或者防火墙中放行3306端口
1、service firewalld stop
2、firewall-cmd --zone=public --add-port=3306/tcp --permanent
注意:此种方式需要关闭selinux
vim /etc/selinux/config 设置为disabled
yum insall mysql
rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
yum install mysql-server
agileone安装
xammp安装
1、上传xmapp压缩包
2、解压,执行启动命令/opt/lammp/lammp start
3、发现报错,不支持32位
4、安装32位兼容程序
yum install glibc.i686
5、再次启动
6、访问http://ip
7、点击“phpMyAdmin”打开界面,可能报错
8、点击下方的“Open new phpMyAdmin window”进入
9、设置mysql的root密码,以及授权远程登录用户
10、修改mysql密码后,phpmyadmin访问报错,需要修改config.inc.php,修改配置文件中的密码
agileone部署
1、上传Agileone.zip到htdocs目录
2、解压
3、清空本地配置文件中数据库的配置:/opt/lampp/agileone/common/config/global.conf
4、访问http://192.168.1.138/Agileone,注意document的大小写
5、输入数据库密码,然后点击“创建数据库和表”
目录/Attachment不可写, 安装前请先设置其权限 ...。此处需要增加写权限
6、创建成功后即可admin登录
2、解压
3、清空本地配置文件中数据库的配置:/opt/lampp/agileone/common/config/global.conf
4、访问http://192.168.1.138/Agileone,注意document的大小写
5、输入数据库密码,然后点击“创建数据库和表”
目录/Attachment不可写, 安装前请先设置其权限 ...。此处需要增加写权限
6、创建成功后即可admin登录
lammp配置文件
1、/opt/lampp/etc/httpd.conf:apache的主配置文件。
my.cnf:数据库配置
2、/opt/lampp/phpmyadmin:lampp套件的配置
3、/opt/lampp/agileone/common/config/global.conf:项目配置文件
docker应用
公司常见用场景:
1、搭建docker私服,存储镜像模板
2、创建常见的镜像并上传到私服
3、容器化的部署。
例如一个java应用要部署很多台服务器,那么就可以docker,创建一个镜像模板,然后docker虚拟化出n多台服务
docker应用:使用云镜像
1、查找nginx镜像
docker search nginx
2、运行容器
docker run --name nginx docker.io/library/nginx (-d参数表示后台运行)
3、查看容器运行情况
docker ps
4、进入容器,相当于一台新电脑
docker exec -it 9d5c826e9cd2 bash (9d5c826e9cd2是ps出来的容器id)
5、docker stop [容器id]
6、后台指定端口运行docker run -d -p 28080:80 docker.io/library/nginx
访问:http://192.168.1.138:28080
docker应用:制作镜像
1、修改已有的镜像,然后docker commit
2、利用dockerfile来创建镜像
docker安装
简介:docker是一个开源的应用容器引擎,开发者可以打包自己的应用到容器里面,然后迁移到其他机器的docker应用中,可以实现快速部署。如果出现的故障,可以通过镜像,快速恢复服务。
原理:docker是利用Linux内核虚拟机化技术(LXC),提供轻量级的虚拟化,以便隔离进程和资源。LXC不是硬件的虚拟化,而是Linux内核的级别的虚拟机化,相对于传统的虚拟机,节省了很多硬件资源。
安装:
1、安装依赖
docker依赖于系统的一些必要的工具
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新yum缓存
yum makecache fast
4、安装docker-ce
yum -y install docker-ce
5、启动服务
systemctl start docker
6、查看安装版本
docker version
docker info
1、安装依赖
docker依赖于系统的一些必要的工具
yum install -y yum-utils device-mapper-persistent-data lvm2
2、添加软件源
yum-config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
3、更新yum缓存
yum makecache fast
4、安装docker-ce
yum -y install docker-ce
5、启动服务
systemctl start docker
6、查看安装版本
docker version
docker info
源码管理
svn
安装
yum install subversion
1、创建仓库的存储目录
mkdir -p /usr/local/svn
2、创建版本库
svnadmin -create /usr/local/svn/test/
3、启动svn
svnserver -d -r /usr/local/svn
4、安装TortoiseSVN客户端
5、访问svn
基本配置
1、修改配置文件,启用密码访问
vi /usr/local/svn/test/conf/svnserve.conf
anon-access = none #未认证用户不能访问
password-db = passwd #用户和密码文件
authz-db = authz #用户和组权限配置
2、编辑账号密码文件
vi /usr/local/svn/test/conf/passwd
3、编辑权限文件
vi /usr/local/svn/test/conf/authz
专家级配置
#组设置
[groups]
admin = admin
tester = dinghua
#根目录权限配置
[/]
@admin = rw
* = r
#单个目录权限配置到组,test-仓库名
[test:/woniusales/branches]
@tester = rw
客户端使用
check out
svn update
svn commit
git
安装
yum install git
配置
服务端配置
1创建仓库
mkdir -p /usr/local/git/test.git
2、初始化
git init --bare /usr/local/git/test.git/
3、增加用户
useradd dinghua
passwd dinghua
修改登录方式
vim /etc/passwd #更改刚增加的用户为git-shell方式登录
客户端配置
1、安装git和tortoisegit
2、git clone
常见软件默认端口
ftp:21
ssh:22
http、apache、nginx:80
https:443
tomcat:8080
mysql:3306
oracle:1521
sql server:1433
redis:6379
mongodb:27017
ssh:22
http、apache、nginx:80
https:443
tomcat:8080
mysql:3306
oracle:1521
sql server:1433
redis:6379
mongodb:27017
0 条评论
下一页