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 进行文件传输 不需要再次输入一遍用户密码等复杂操作了.
winscp 同 xftp
putty 同 xshell
以及一些其他的工具比如 cmder 等. 不做详细描述
1.2 win10 比较新的版本 还可以搭建 WSL 来使用 bash 直接连接 (Git 命令行也可以)
直接在命令行里面就能打开 bash 了
这个工具最大好处可以直接将本机的文件通过 scp 的命令传输到 Linux 的服务器里面,
1.3 通过 GUI 方式远程管理 Linux
1.3.1 很常见的方式有两种 一种是使用 Windows 使用 vnc 客户端, 以及 Linux 服务器安装 tigerVNC, 使用 vncserver 的命令创建 ip:5901 的访问地址 在客户端进行访问.
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 一个进程能够打开的子进程数量
- #<domain> <type> <item> <value>
- * hard nproc 666666
- * hard nofile 666666
- * soft nproc 666666
- * soft nofile 666666
注意 value 值 其实可以自定义, 不用非得设置 2 的整数倍即可.
2.3 基本命令操作说明
基本命令:
ls 列出所有文件
ll 列出相信文件信息与 ls -l 命令相同.
cd 切换目录
mkdir 创建文件夹
find 查找文件.
| 管道命令
df 显示磁盘使用情况
du 显示当前目录文件大小信息.
tar 压缩和解压缩命令
zip/unzip 进行 zip 文件的压缩 / 解压缩操作
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 &
来源: https://www.cnblogs.com/jinanxiaolaohu/p/12262487.html