windows上启动虚拟机的时候,我们在任务管理器中看不到一个占用很大内存的进程(就是虚拟机进程),但是linux上启动虚拟机是可以看到这样的虚拟机进程的。
为什么呢?
有没有工具可以查看到虚拟机分配走的这部分内存呢?
有:vmmap
参考:https://serverfault.com/questions/19935/virtual-machine-memory-usage-not-appearing-in-taskmanager
DevOps
windows上启动虚拟机的时候,我们在任务管理器中看不到一个占用很大内存的进程(就是虚拟机进程),但是linux上启动虚拟机是可以看到这样的虚拟机进程的。
为什么呢?
有没有工具可以查看到虚拟机分配走的这部分内存呢?
有:vmmap
参考:https://serverfault.com/questions/19935/virtual-machine-memory-usage-not-appearing-in-taskmanager
yarn中的资源调度:
参考: https://blog.51cto.com/14048416/2342195
nodemanager要执行的脚本如下:
1 2 3 4 5 6 7 8 9 10 |
ll /tmp/hadoop-root/nm-local-dir/usercache/root/appcache/application_1576057255094_0007/container_1576057255094_0007_01_000003/ total 132 -rw-r--r-- 1 root root 129 Dec 12 04:15 container_tokens -rwx------ 1 root root 723 Dec 12 04:15 default_container_executor.sh -rwx------ 1 root root 669 Dec 12 04:15 default_container_executor_session.sh lrwxrwxrwx 1 root root 105 Dec 12 04:15 job.jar -> /tmp/hadoop-root/nm-local-dir/usercache/root/appcache/application_1576057255094_0007/filecache/10/job.jar -rw-r----- 1 root root 117057 Dec 12 04:15 job.xml -rwx------ 1 root root 3571 Dec 12 04:15 launch_container.sh lrwxrwxrwx 1 root root 64 Dec 12 04:15 sum.sh -> /tmp/hadoop-root/nm-local-dir/usercache/root/filecache/14/sum.sh drwx--x--- 2 root root 6 Dec 12 04:15 tmp |
default_container_executor.sh ==调起===> default_container_executor_session.sh ===调起===> launch_container.sh ===> 调起 ===> org.apache.hadoop.mapred.YarnChild
这里的脚本都是临时生成的,从进程上来看,YarnChild 的父进程是 default_container_executor.sh 而不是 launch_container.sh,是因为从default_container_executor.sh 到 org.apache.hadoop.mapred.YarnChild 的中间的所有“调起”,都使用的是exec,并不fork新的进程,也没有新的进程ID,以至于 org.apache.hadoop.mapred.YarnChild 的父进程就是default_container_executor.sh
(MRAppMaster和YarnChild的诞生方式差不多,都是nodemanager直接生出来的),所以所,MRAppMaster是一个临时的进程
NameNode: 只有在name节点上存在,只有一个进程。
DataNode: 只存在于数据节点上,每个数据节点有且只有一个这样的常住进程,负责该节点上数据的存取维护操作。
NodeManger:
ResourceMange:
通常来讲,容器为了更小,是不会带编辑器的,但是,利用docker cp 命令copy出来,编辑后再copy进去显得又比较麻烦,于是:
上一个简单的脚本:docker-vim
1 2 3 4 5 6 7 8 9 10 |
#!/bin/bash cname=$1 file=${2#/} pid=$(docker inspect -f '{{.State.Pid}}' $cname) [[ $pid == "" ]] && { echo $0 only use for running container; exit; } cd /proc/$pid/root vim $file |
用法:
1 |
docker-vim $contaner-name $file-in-container |
注意:
明明服务listen了9736端口,外面访问该端口却连接失败。在服务器上tcpdump抓包发现,只有syn,并没有syn-ack,更没有rst。
难道是防火墙? Iptables都是空的;
难道有其它高级的设置?
难道网络有问题? 我已经ssh到这个机器上了(其实是从某个机器跳过来的)
灵光一闪,可能是路由问题,找不到回包路由,自然就没法回包了; ip route一下,果然没有默认路由,只有一条同网段机器的路由,我的ssh就是从同网段的其它机器上过来的。
添加默认路由后,一切ok了
nodemanager 是节点管理器,可以启动该节点上的服务器(server,包括domainAdminServer),添加节点的时候,节点类型有两种,一种是ssh类型,可以通过ssh来启动服务;另一种是java类型,说的就是nodemanager,默认listen 7730端口
UPAS的最大管理单位,是一个逻辑概念
每个domain对应一个adminServer进程,一个节点上可以部署多个adminServer进程,相当于多个domain,每个域名字可以相同,ID一定不同;
同一个域中可以包含多个不同节点上的adminServer,他们之间靠组播进行同行,靠什么标识为同一个域的?
ID?: 每个adminServer按说应该有一个唯一的ID或者名字(但是文档说名字可以不唯一)
组播地址: 组播地址=组播IP+端口号
不同节点上的同一个domain的adminServer是如何身份验证的?
domain之间靠(虚拟)组播进行通信;组播就是真实意义上的组播,虚拟组播应该是类型组播功能的自己实现的一种通信方式吧。
其实就是定义到某个节点上的一个upas进程,可以配置jvm选项、监听器等
是管理某个特定域的管理界面,upas中好像不存在一个可以创建、删除、修改domain的web控制台;创建、删除域是通过setup/ant 或upasadmin 来完成的,webadmin只用于当前域的配置。
webadmin中可以添加节点,节点设置只能在webadmin的首页找到
可以连接das和可以不连接das,二者能用的命令是不一样的,执行help时,就会只显示可用的命令的列表。
license过期只影响进程启动,不影响服务提供,只是记录证书过期日志而已。至于服务器时间不能正常,只是因为他们测试需要而已。
这个并不是一个web管理界面,而是一个命令行接口,需要制定upws 安装目录才能正常启动,因为需要找配置文件:
1 |
UPWSDIR=/home/upas/upws /home/upas/upws/bin/wswebadmin |
不带任何参数时进入交互式命令行界面,通过 -C 选项可以直接执行命令,但是,返回的是json的数据;
wsadmin 和wswebadmin类似,除了输出的不是json; strace发现,二者都是通过访问 /home/upas/upws/path/wsmd 这个socket来工作的,这个socket是wsm listen的。
/home/upas/upas7/webserver 和 /home/upas/upws 居然是相同的东西,而且不是软连接
/home/upas/upas7/domains/upas_domain/config/domain.xml 这里记录了application connector等所有的东西。
server和upws之间是通过注册号来分发请求的,类似于nginx中的upstream名字
一般的函数定义方式:
1 2 3 |
int add(int a, int b) { return a+b; } |
二般的函数定义方式:
1 2 3 4 |
int add(a,b) int a, int b; { return a+b; } |
圆括号中之写形参名,圆括号后面在定义参数类型,分号结束函数签名,然后花括号定义函数体。
显得少许麻烦,但是还真有这么写的,eg:bash源码中 lib/readline/histfile.c
https://github.com/unioslo/zabbix-cli
虽然star不算多,但是功能还不算少;
基本使用:
下载:
git clone https://github.com/unioslo/zabbix-cli.git
安装:
sudo python setup.py install
初始化:
zabbix-cli-init -z http://$zabbix-server/zabbix/api_jsonrpc.php
配置记住用户名密码:
在 ~/.zabbix-cli/zabbix-cli.conf 中添加:
1 2 |
[zabbix_config] use_auth_token_file = ON |
配置了 use_auth_token_file 后, 用户名token就会被记录在 ~/.zabbix-cli_auth_token 中,token是用户名密码登录后获取到的,是会过期的
基本用法:
查看可用的命令:
1 |
zabbix-cli -C help |
执行很多命令:
1 |
zabbix-cli -f cmds-file |
设置输出格式:
1 |
zabbix-cli -o {csv,json,table} |
https://www.daimadog.com/5335.html
mac
https://blog.csdn.net/weixin_34101784/article/details/89752872
http://cocoa.venj.me/blog/custom-url-scheme-on-mac-and-ios/
mac麻烦一些
https://superuser.com/questions/548119/how-do-i-configure-custom-url-handlers-on-os-x
这里提到了很多办法
或许可以只注入协议到chrome浏览器,也可以使用桥接app来关联任意的程序
https://www.google.com/search?safe=active&sxsrf=ACYBGNT4HhNAgZJdNPEB6XJydeY-23nhDA%3A1574986994861&source=hp&ei=8mTgXdLSMpGD0wSl7Iu4Ag&q=mac+register+url+scheme&oq=mac+registe+url&gs_l=mobile-gws-wiz-hp.1.0.0i13i30j0i8i13i30.6173.16806..19703…1.0..0.254.1779.0j2j6……0….1…….8..35i362i39j0j0i12j0i203j0i30j0i19j0i13i30i19j33i160.Hlgxoew9enQ
1 |
Encore\Admin\Actions\Action |
这个是所有action的基类
这里面定义了,如果action类存在dialog方法,则使用swal显示结果,就是弹出对话框:
response的swal()方法就是设置
1 |
Encore\Admin\Actions\SweatAlert2 |
插件,这个插件定义的太简单,只有type和title,swal原本支持html的,但是,这里定义的太简单不支持html属性的设置
该response类还不能自定义插件
Action类中的response() 函数直接new了上面的response类,所以,注入的机会都没了:
好在该response方法是public的,而且也不长,适当的时候可以重写,使用一个自定义的扩展的reponse类来增强功能
action 的form表单应该在点击完提交按钮后,提交按钮变灰才行哦
参考:
https://medium.com/binary-cabin/automatically-generating-a-uuid-on-your-laravel-models-b8b9c3599e2b
(其实UUID中应该能体现一些重要信息,如:这个UUID是用来标识什么的)