abp vnext2.0之核心组件模块加载系统源码解析与简单应用
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
DNS隧道工具:iodine使用
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 &
程序员做外包有前途吗?谈谈外包的利与弊