0. 本blog 简单说明一下 Linux测试环境尤其是 CentOS测试环境的开发测试使用, 教程可能不会很长, 主要是入门.

0.1 Linux简介:Linux 的历史基本上不用阐述, linus作为自己的兴趣爱好进行编码实现的一种开源的操作系统. Linux很好的切合了GNU里面一直没有可用的开源操作系统的窘境, 所以Linux+GNU结合实现了开源操作系统以及工具的大发展.

大部分linux的工具其实都是GNU来实现的, linus自己主要是维护linux的core 内核部分. 很多发行版再加进去很多GNU的工具 发布成为一个开箱即用的Linux发行版.

主要的发行版: CentOS, Ubuntu, SUSE等.

其中 Redhat 作为红帽企业版的开源linux环境, 他的源码重新编译的CentOS操作系统很受广大linux服务器维护人员的喜欢.

最新版本 8.1 基于 linux 4.18 内核发布.

但是现阶段最流行的操作系统还是 CentOS7.X 系列, 基于Linux 3.10内核(可以自行升级内核) 国产化的中标麒麟是基于CentOS7.x系列研发的.

Ubuntu 是基于 debian 的发行版, 一个很大的优势是现阶段国产化很火的UOS也是基于debian操作系统来研发的, 以及银河麒麟也是基于ubuntu1x.04的LTS版本研发的.

0.2 Linux发行版的发布频率以及选择.CentOS基本上每一年至少发布一个版本,CentOS7.0 是2014年发布的. 2019年基本上就发布到了 CentOS7.7第一位大版本号基本上Linux的内核不会发生变化, 但是会基于这个内核,红帽一直进行安全更新, 以及添加一下新的GNU工具的升级版本进行提高.

Ubuntu每半年发布一个版本, 版本号使用年月进行表示,比如 1404,1810等,其中除了 1404,1604,1804,2004等类似规律的版本,使用支持期限不超过一年, 一般没半年就需要手动进行升级.  这些LTS长期支持版本的 支持期限大约有5年时间. 可以作为服务器使用.

Ubuntu和CentOS现在都采用了 systemd 作为启动和服务启动监控等核心进程. 所以使用起来基本上无特别大的区别.

关于发行版的选择.

ubuntu 的桌面非常炫酷, 发布频率也非常高, 很适合作为客户端来使用, 作为服务器也可以, 但是使用的人群稍微少一些,因为运维人员更在意的是稳定性.

红帽现在是docker以及k8s基金会的核心成员, 也是openstack的很大的发行商, 很多文档也非常细致.

两个很大的区别在于包管理

CentOS使用 yum  rpm包管理, ubuntu 使用 apt-get  dkpg的包管理, 两者不通用(虽然有工具可以进行转换)

1. Windows远程管理linux 环境.

现阶段大部分开发测试人员使用Windows环境进行研发测试(MacOS 基于BSD内核, 可以理解为linux的表兄弟 这里暂且不谈)

1.1 常用的工具有:xshell  命令行连接管理 linux

xftp     基于22端口的xftp实现, 文件上传以及文件下载

上面两个工具是xmanager的工具包所包含的 很大的优点是 可以通过xshell 直接打开 xftp 进行文件传输 不需要再次输入一遍用户密码等复杂操作了.

麒麟系统 yum安装 PostgreSQL11客户端_linux

winscp 同 xftp

putty    同xshell

以及一些其他的工具比如 cmder 等. 不做详细描述

1.2 win10 比较新的版本 还可以搭建WSL 来使用bash直接连接(git命令行也可以)

麒麟系统 yum安装 PostgreSQL11客户端_linux_02

直接在命令行里面就能打开 bash了

这个工具最大好处可以直接将本机的文件通过scp的命令传输到linux的服务器里面,

麒麟系统 yum安装 PostgreSQL11客户端_linux_03

1.3 通过GUI方式远程管理linux

1.3.1 很常见的方式有两种 一种是使用 windows 使用vnc客户端, 以及linux服务器安装tigerVNC, 使用vncserver的命令创建 ip:5901的访问地址 在客户端进行访问.

麒麟系统 yum安装 PostgreSQL11客户端_linux_04

1.3.2 还一种方式是安装 xrdp 直接使用windows的mstsc命令进行连结

但是这种方式容易让人产生误解,所以这一块放到最后来讲.

2. linux命令行操作简介.

linux使用命令行管理很高校,并且占用带宽很少, 在网络不好的情况下很能够很好的完成各种工作.

2.1 linux的目录./ 根目录是linux所有文件目录挂载的起点

注意 / 根目录与 /root root用户的家目录是不一样的. 初学的时候很容易将这两个目录搞混.

/etc 目录里面主要是存储一些配置文件信息/usr/bin /usr/local/bin  等目录主要是存储可执行文件.

/lib /lib64  /usr/lib  /usr/lib64  等目录主要是存放应用程序库文件.

/opt  主要是存放一些 第三方软件, 国产的数据库 比如 达梦 瀚高 人大金仓 以及360浏览器等都喜欢往这个目录安装/var  主要是存放一些运行时会变动的文件, 比如/var/log 作为存放程序日志的文件.

/temp 临时文件./proc 虚拟文件夹 linux里面 everything is file 所以通过他能够查看一些进程信息的二进制文件等的信息.  (ll /proc/pid 的方式)/home 非 root用户的家目录

2.2 linux的文件权限与环境变量以及内核参数限制等.

2.2.1 文件权限, 测试环境可以使用 777 的方式进行处理, 但是生产环境一定不可以.

命令为  如下命令可以将所有的文件权限全部设置为 777

cd /yourapp

chmod 777 * -R

2.2.2 环境变量.

linux里面的环境变量与windows里面的环境变量类似. 在bash里面可以通过环境变量的方式去寻找具体的命令来实现, 想对应的 还有lib目录信息, 都程序需要使用库文件时 也能够进行查询.

linux的环境变量有多个文件可以存放. 主要有:1. /etc/profile

这个文件是所有的用户都从头开始执行的 不建议修改 出了错误比较难处理.2. ~/.bashrc  以及 ~/.bash_profile

注意 ~ 指代当前用户的家目录. 这两个文件是针对不同用户设置的环境变量.

只适应当前用户信息 无法影响其他的用户环境变量3. /etc/profiled.d/something.sh

这里面的文件可以手动执行, 用户bash登录时会自动获取该环境变量内的内容进行生效, 比如:

export PATH=$PATH:/usr/local/nginx:/gscloud/jstack/runtime/java/x86_64-linux/bin

就可以直接执行 PATH相关目录的命令了

注意 linux 里面使用 $作为变量操作符号.

2.2.3 内核参数以及用户限制

主要命令有 ulimit -a 当前bash有效果的设置为 ulimit -s 但是不建议使用

建议直接修改内核的参数设置:vim /etc/security/limits.conf

产品测试过程中 需要添加的参数主要为:

比较核心的一个是 nofile 一个进程可以打开的文件描述符数量 还有 nproc一个进程能够打开的子进程数量#

2.3 基本命令操作说明基本命令:

ls 列出所有文件

ll 列出相信文件信息与ls -l 命令相同.

cd 切换目录

mkdir 创建文件夹

find 查找文件.| 管道命令

df 显示磁盘使用情况

du 显示当前目录文件大小信息.

tar 压缩和解压缩命令

zip/unzip  进行zip文件的压缩/解压缩操作

# 注意如果压缩包里面包含中文 必须使用 如下命令才能够正常解压缩 unzip -O CP936 xxxx.zip

# 问题原因在zip 软件的bug 对utf8编码有问题.

chmod 修改文件权限

chown 修改文件属主

ps 展示存在的进程信息

lsof 查看打开的文件后者是端口

scp   复制文件, 如果使用 user@ip:/ 的目的地址 可以远程复制.

rsync 同步文件,已经存在的相同文件不进行复制,提供同步效率.

文本编辑

vi/vim 最常见的编辑器之一,主要是分为三个模式  命令模式-编辑模式-底线命令模式

最常用的用法: vim filename 打开文件进入命令模式->输入"i" 小写键盘字符i符号进入编辑模式->编辑完成使用键盘上面的 "esc"按键 退出到命令模式->输入":" 键盘符号 进入底线命令模式,输入wq (write and quit)保存文件.

三剑客

sed 流编辑命令

awk 能够根据规则打印部分文件内容.

grep 进行过滤操作

文件重定向

> 将命令结果重定向其他方式.

>> 增量的方式添加文件 而不是全量覆盖.

后台运行命令

nohup yourcommand &

服务操作命令

systemctl systemd的控制命令.

systemctl restart  重启服务

systemctl status   查看服务状态

systemctl enable   将服务设置为开机启动.

安装包命令:

yum install  在线安装

yum localinstall  安装下载到本地目录的rpm包.

yum remove 删除已经安装的包

yum makecache 创建缓存.

注意 yum 安装能够使用 repo仓库直接下载依赖的rpm包同步进行安装. 类似于k8s里面的 helm 也类似于nuget和maven的依赖管理处理.

rpm -ivh xxxx.rpm 安装具体目录下面的 rpm包

挂载命令

mount -t cifs -o username=username,password=yourpasswords //linuxip/patches/已测补丁/Cloud3.0/ /已测补丁/

注意

1). 需要先mkdir 创建 /已测补丁 目录才可行.

2). 注意如果服务器是2003 以及比较早的操作系统, 需要添加 vers=1.0 的参数才可以. 因为win2003的cifs服务版本比较低.部分组合命令:

1. 查看所有的dotnet进程,并且将dotnet进程杀死

ps -ef |grep dotnet  |grep -v grep |awk '{print $2}'|xargs kill -9

等效于 killall  dotnet

2. 比较两个文件夹的不同,并且将不通的文件包含文件目录信息也保存下来

第一个:/add 是包含新文件的

第二个: /yourapp 是未更新新文件的

第三个: /add 是获取新文件的基准目录

第三个: /addup 是两个文件夹对比出来的新文件.

rsync --dry-run -rcnC --out-format="%n"  /add/  /yourapp/ |grep -v "/$"|xargs -I{} rsync -R /add/./{} /addup/

3. 后台方式运行服务,并且将输出重定向到其他目录

cd /yourcommandpath

nohup ./yourcommand.sh >/yourpath/yourlog.log 2>&1 &

3. 测试环境管理防火墙等操作1. CentOS 使用的是 iptables 防火墙 6时代 直接使用 iptables 命令进行防火墙的设置 7时代 使用了 firewalld的操作.

可以讲端口进行设置,添加白名单等操作.

测试环境比较简单  可以直接关闭处理

设置开机不启动以及管理防火墙的命令

systemctl disable firewalld && systemctl  stop firewalld

2. 关闭selinux Security enhance linux是redhat给linux增加的安全增强处理.测试环境可以直接关闭掉

方法:

可以使用 sed -i 的方式处理 比如:

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/sysconfig/selinux

但是建议可以使用 vim 进行一次简单的联系, 来提高熟练程度.

这里要说明一下, 一定要注意 windows的编码格式与linux的不同 有时候会导致提示文件加载失败,或者是命令无法启动. 可以使用vim 的命令来修改文件的编码格式.

比如文档左下方为:

"startup-nstack.cmd" [noeol][dos] 13L, 275C

可以使用命令来修改一下格式

在vim的命令模式下面输入

:set ff=unix

输入完成之后再输入

:wq 保存退出就会发现文件有了变化

"startup-nstack.cmd" 13L, 264C

4. 可以使用windows 远程 linux的xrdp的简介与安装

首先使用一张图表示一个效果:

麒麟系统 yum安装 PostgreSQL11客户端_linux_05

简单说明Linux 是可以使用 xrdp 协议进行远程访问的, 前提是 linux服务器里面有GUI界面. 如果没有安装的话 可以网上搜一下命令安装上就可以了.

#备注 最小化安装是没有 GUI界面的.

1. 首先安装epel包, 这个包是一个redhat维护的extension包, 有很多很有用的工具都在里面, 比如非常出名的htop

yum install epel-release # 只要机器能够上网就能够拉取

yum makecache   # 有时候需要make cache一下才能够获取到一些安装包

安装完之后就可以进行安装xrdp

2. 安装xrdp

yun install xrdp

# 如果安装失败 可以使用如下进行安装

yum --disablerepo "*" --enablerepo epel install xrdp

3. 启动并且设置开机自动启动命令

systemctl enable xrdp && systemctl restart xrdp

4. 使用mstsc 用 root以及密码 就可以直接登录了.

enjoy it

#虽然这样非常简单,但是很不建议这样操作. cli虽然一开始入门比较晦涩,但是后续使用起来非常便捷, 在远程办公以及其他低网络带宽的情况下非常有优势.