【开发日志-已归档】2020-09
【centos】关闭You have new mail in /var/spool/mail/root提示
这个提示是LINUX会定时查看LINUX各种状态做汇总,每经过一段时间会把汇总的信息发送的root的邮箱里,以供有需之时查看。
echo "unset MAILCHECK">> /etc/profile
source /etc/profile
【centos】firewalld开放端口
centos7版本对防火墙进行加强,不再使用原来的iptables,启用firewalld
1.firewalld的基本使用
启动: systemctl start firewalld
查状态:systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld
在开机时启用一个服务:systemctl enable firewalld.service
在开机时禁用一个服务:systemctl disable firewalld.service
查看服务是否开机启动:systemctl is-enabled firewalld.service
查看已启动的服务列表:systemctl list-unit-files|grep enabled
查看启动失败的服务列表:systemctl --failed
2.配置firewalld-cmd
查看版本: firewall-cmd --version
查看帮助: firewall-cmd --help
显示状态: firewall-cmd --state
查看所有打开的端口: firewall-cmd --zone=public --list-ports
更新防火墙规则: firewall-cmd --reload
查看区域信息: firewall-cmd --get-active-zones
查看指定接口所属区域: firewall-cmd --get-zone-of-interface=eth0
拒绝所有包:firewall-cmd --panic-on
取消拒绝状态: firewall-cmd --panic-off
查看是否拒绝: firewall-cmd --query-panic
3.那怎么开启一个端口呢
添加
firewall-cmd --zone=public(作用域) --add-port=80/tcp(端口和访问类型) --permanent(永久生效)
firewall-cmd --zone=public --add-service=http --permanent
firewall-cmd --reload # 重新载入,更新防火墙规则
firewall-cmd --zone= public --query-port=80/tcp #查看
firewall-cmd --zone= public --remove-port=80/tcp --permanent # 删除
firewall-cmd --list-services
firewall-cmd --get-services
firewall-cmd --add-service=<service>
firewall-cmd --delete-service=<service>
在每次修改端口和服务后/etc/firewalld/zones/public.xml文件就会被修改,所以也可以在文件中之间修改,然后重新加载
使用命令实际也是在修改文件,需要重新加载才能生效。
【zookeeper】命令行
启动zookeeper客户端:zkCli.sh
查看帮助:-h
查看根目录下的文件:ls /
查看某个目录下的数据:get 目录名
1、 ls path 查看某个路径下目录列表
ls / 查看根目录下有一个zookeeper的目录。 目录就是一个节点。
/ 根节点 zookeeper是子节点
2、ls2 / 命令
ls2 显示了数据的一些状态信息
【centos】创建软链接、硬链接
【例 1】创建硬链接:
[root@localhost ~]# touch cangls
[root@localhost ~]# ln /root/cangls /tmp
#建立硬链接文件,目标文件没有写文件名,会和原名一致
#也就是/tmp/cangls 是硬链接文件
【例 2】创建软链接:
[root@localhost ~]# touch bols
[root@localhost ~]# In -s /root/bols /tmp
#建立软链接文件
这里需要注意,软链接文件的源文件必须写成绝对路径,而不能写成相对路径(硬链接没有这样的要求);否则软链接文件会报错。这是初学者非常容易犯的错误。
【centos】查看系统版本
查看centos版本号的方法:在centos终端输入“cat /etc/centos-release”命令回车
【centos】更改linux文件目录\文件拥有者权限
更改文件拥有者 #>chown 账号名称 文件或目录
改变文件的用户组用命令 #> chgrp 组名 文件或目录
还可以通过chown命令 同时修改用户和组#> chown 所有者:所属组 文件或目录
【h2】启动异常
Database "/opt/.h2/kara" not found, and IFEXISTS=true, so we cant auto-create it [90146-199]
H2 数据库报错 Database "XXX" not found, and IFEXISTS=true, so we cant auto-create it [90146] 的解决办法
参考spring boot - Database not found, and IFEXISTS=true, so we cant auto-create it - Stack Overflow
应该是为了安全起见禁止了自动建立数据库,修改到2019年之前的版本后就可以了,2019版后的解决办法参考上述链接;
使用下面的版本可以直接使用:
- <dependency>
- <groupId>com.h2database</groupId>
- <artifactId>h2</artifactId>
- <version>1.193</version>
- </dependency>
【java】bean复制
- 从整体的表现来看,Cglib的BeanCopier的性能是最好的无论是数量较大的1万次的测试,还是数量较少10次,几乎都是趋近与零损耗,
- Spring是在次数增多的情况下,性能较好,在数据较少的时候,性能比PropertyUtils的性能差一些。
- PropertyUtils的性能相对稳定,表现是呈现线性增长的趋势。而Apache的BeanUtil的性能最差,无论是单次Copy还是大数量的多次Copy性能都不是很好。
- PropertyUtils和BeanUtils的功能基本一致,唯一的区别是:BeanUtils在对Bean赋值时会进行类型转化,而PropertyUtils不会对类型进行转化,如果类型不同则会抛出异常!,这可以解释PropertyUtils效率比BeanUtils要高的原因。
- 建议:基本类型在源目标类型一致的情况下使用: PropertyUtils效率会更高。
- Dozer框架的拷贝,万次内的效率beanutils比dozer要快, 十万次以上的效率beanutils的效率和dozer差不多, 复杂类型的拷贝可以使用: Dozer
【centos】centos下kill、killall、pkill命令区别
首先可以通过ps aux或 ps -ef查看系统有哪些进程正在运行。
1.kill,用于杀死某一个进程
#kill,加选项-9,加PID,表示杀死进程编号为PID的这个进程
#kill -9 PID
2. killall,杀死一类进程
#killall,加选项-9,加服务名, 表示杀死该服务的所有进程
#killall -9 service
3. pkill,用于杀死一个进程
Linux pkill 用于杀死一个进程,与 kill 不同的是它会杀死指定名字的所有进程,类似于 killall 命令。
kill 命令杀死指定进程 PID,需要配合 ps 使用,而 pkill 直接对进程对名字进行操作,更加方便。
另一解释:pkill是ps命令和kill命令的结合,按照进程名来杀死指定进程
# pkill -f abc 杀掉含abc的所有进程
比如我们要杀死mysql的相关进程,我们可以使用pkill -9 mysqld即可杀死所有mysql相关的进程,比较方便,不过它有可能会误删程序。
下面是常用的信号的数字及其含义:
1 表示从终端上发出的结束信号
2 表示从键盘上发出的终端信号(即Ctrl+c)
3 表示从键盘上发出的退出信号(即Ctrl+\)
8 表示浮点异常,比如被0除
9 表示结束接受信号的进程,也就是强行杀死进程
15 kill命令默认的终止信号
17 子进程终止或结束的信号
19 从键盘来执行的信号
【linux】PS -EF和PS AUX的区别及格式详解
Linux下显示系统进程的命令ps,最常用的有ps -ef 和ps aux。
这两个到底有什么区别呢?两者没太大差别,
讨论这个问题,要追溯到Unix系统中的两种风格,System V风格和BSD 风格,ps aux最初用到Unix Style中,而ps -ef被用在System V Style中,两者输出略有不同。现在的大部分Linux系统都是可以同时使用这两种方式的。
ps -ef 是用标准的格式显示进程的、其格式如下
其中各列的内容意思如下
UID //用户ID、但输出的是用户名
PID //进程的ID
PPID //父进程ID
C //进程占用CPU的百分比
STIME //进程启动到现在的时间
TTY //该进程在那个终端上运行,若与终端无关,则显示? 若为pts/0等,则表示由网络连接主机进程。
CMD //命令的名称和参数
ps aux 是用BSD的格式来显示、其格式如下
同ps -ef 不同的有列有
USER //用户名
%CPU //进程占用的CPU百分比
%MEM //占用内存的百分比
VSZ //该进程使用的虚拟內存量(KB)
RSS //该进程占用的固定內存量(KB)(驻留中页的数量)
STAT //进程的状态
START //该进程被触发启动时间
TIME //该进程实际使用CPU运行的时间
其中STAT状态位常见的状态字符有
D //无法中断的休眠状态(通常 IO 的进程);
R //正在运行可中在队列中可过行的;
S //处于休眠状态;
T //停止或被追踪;
W //进入内存交换 (从内核2.6开始无效);
X //死掉的进程 (基本很少见);
Z //僵尸进程;
< //优先级高的进程
N //优先级较低的进程
L //有些页被锁进内存;
s //进程的领导者(在它之下有子进程);
l //多线程,克隆线程(使用 CLONE_THREAD, 类似 NPTL pthreads);
+ //位于后台的进程组;
【es】data to large ES Data too large Error_Big-Brian的博客-CSDN博客
org.elasticsearch.common.breaker.CircuitBreakingException: [parent] Data too large
org.elasticsearch.common.breaker.CircuitBreakingException: [parent] Data too large, data for [<transport_request>] would be [2064285114/1.9gb], which is larger than the limit of [2040109465/1.8gb], real usage: [2064284680/1.9gb], new bytes reserved: [434/434b], usages [request=0/0b, fielddata=91192/89kb, in_flight_requests=434/434b, accounting=2921492/2.7mb]
异常原因
出现类似问题的原因在于fielddata的内存被占用完了,其他索引无法分配更多的内存
解决方案
大招1
在es参数中,可以通过设置indices.fielddata.cache.size值来修改单个索引占用缓存的大小,如果超出这个值,该数据将被逐出。这样的方式可以帮助你合理的分配你有限的内存,但是不能改变你的内存。所以终极解决办法还是增加你的内存大小。
## 编辑ES配置文件config/elasticsearch.yml,添加一下配置,然后restart集群 indices.fielddata.cache.size: 20%
如果你觉得以上方式太暴力,可以通过命令行方式修改配置
PUT _cluster/settings { "persistent" : { "indices.breaker.fielddata.limit" : "20%" } }
大招2
问题解决了吗?什么没有???OK,如果以上方式依然没有解决你的问题。第二大招来了。出现以上问题的根源就是ES的fielddata缓存空间被用完了,那么我们可以清除ES缓存
## 清除单个索引缓存POST twitter/_cache/clear## 清除多个索引缓存POST kimchy,elasticsearch/_cache/clear POST _cache/clear
好啦,到目前为此,希望你的集群已经健康的变绿。
【http】HTTP 请求头中的 X-Forwarded-For
- X-Forwarded-For
X-Forwarded-For 是一个扩展头。HTTP/1.1(RFC 2616)协议并没有对它的定义,它最开始是由 Squid 这个缓存代理软件引入,用来表示 HTTP 请求端真实 IP,现在已经成为事实上的标准,被各大 HTTP 代理、负载均衡等转发服务广泛使用,并被写入 RFC 7239(Forwarded HTTP Extension)标准之中.
X-Forwarded-For请求头格式非常简单,就这样:
X-Forwarded-For:client, proxy1, proxy2
可以看到,XFF 的内容由「英文逗号 + 空格」隔开的多个部分组成,最开始的是离服务端最远的设备 IP,然后是每一级代理设备的 IP。
如果一个 HTTP 请求到达服务器之前,经过了三个代理 Proxy1、Proxy2、Proxy3,IP 分别为 IP1、IP2、IP3,用户真实 IP 为 IP0,那么按照 XFF 标准,服务端最终会收到以下信息:
X-Forwarded-For: IP0, IP1, IP2
Proxy3 直连服务器,它会给 XFF 追加 IP2,表示它是在帮 Proxy2 转发请求。列表中并没有 IP3,IP3 可以在服务端通过
remote_address 来自 TCP 连接,表示与服务端建立 TCP 连接的设备 IP,在这个例子里就是 IP3。
详细分析一下,这样的结果是经过这样的流程而形成的:
- 用户IP0---> 代理Proxy1(IP1),Proxy1记录用户IP0,并将请求转发个Proxy2时,带上一个Http Header
X-Forwarded-For: IP0
- Proxy2收到请求后读取到请求有 X-Forwarded-For: IP0,然后proxy2 继续把链接上来的proxy1 ip追加到 X-Forwarded-For 上面,构造出X-Forwarded-For: IP0, IP1,继续转发请求给Proxy 3
- 同理,Proxy3 按照第二部构造出 X-Forwarded-For: IP0, IP1, IP2,转发给真正的服务器,比如NGINX,nginx收到了http请求,里面就是 X-Forwarded-For: IP0, IP1, IP2 这样的结果。所以Proxy 3 的IP3,不会出现在这里。
- nginx 获取proxy3的IP 能通过
remote_address就是真正建立TCP链接的IP,这个不能伪造,是直接产生链接的IP。$remote_address 无法伪造,因为建立 TCP 连接需要三次握手,如果伪造了源 IP,无法建立 TCP 连接,更不会有后面的 HTTP 请求。
链接:https://www.jianshu.com/p/15f3498a7fad
【linux】top命令VIRT,RES,SHR,DATA的含义
字体: 大 小Posted by 佚名 | tags: top VIRT RES SHR
VIRT:virtual memory usage 虚拟内存
1、进程“需要的”虚拟内存大小,包括进程使用的库、代码、数据等
2、假如进程申请100m的内存,但实际只使用了10m,那么它会增长100m,而不是实际的使用量
RES:resident memory usage 常驻内存
1、进程当前使用的内存大小,但不包括swap out
2、包含其他进程的共享
3、如果申请100m的内存,实际使用10m,它只增长10m,与VIRT相反
4、关于库占用内存的情况,它只统计加载的库文件所占内存大小
SHR:shared memory 共享内存
1、除了自身进程的共享内存,也包括其他进程的共享内存
2、虽然进程只使用了几个共享库的函数,但它包含了整个共享库的大小
3、计算某个进程所占的物理内存大小公式:RES – SHR
4、swap out后,它将会降下来
【开发日志-已归档】2020-09相关推荐
- 【开发日志-已归档】2021-07
[Redis]bgsave bgsave持久化原理: 底层会fork 出一条子进程,这条子进程来进行持久化操作,而主进程进行相应其他操作,在子进程进行持久过程中,会生成temp.rdb,当子进程持久化 ...
- 【开发日志-已归档】2021-11
[centos]top命令切换视图 先输入top命令,打开top监控查看界面 $> top i. 切换内存显示方式(默认常规显示字节:第一次切换显示竖线型进度条:第二次切换显示实线型进度条:第三 ...
- 【开发日志-已归档】2021-06
[K8S]K8S中的port 在编排kubernetes时,Deployment的Pod项有containerPort,Service文件里的port,targetPort, nodePort,这些p ...
- 【开发日志-已归档】2021-01
[elasticsearch]es健康检查 GET _cluster/health { "cluster_name": "elasticsearch", &qu ...
- Oracle错误——归档日志已满问题
问题描述 安装完数据库后,在做压力测试,测试了没多久就出现了Oracle挂起的问题,提示如下错误: ORA-00257: Archiver error. Connect AS SYSDBA only ...
- 毕业设计开发日志2018.04.09
开发日志本来是应该从一开始就写的,不过到了现在我才有写日志这个想法-- 那就从今天开始吧. ---------------------- 毕业设计的课题是安卓平台的陆战棋手游开发.不是很难的题目,当初 ...
- 乐博睿机器人_译介|桌面上的“猎魔人”宇宙 ——《猎魔人》TRPG开发日志(五)...
本文首发于[乐博睿]公众号 作者:Cody Pondsmith 译者:白日骤梦 校对:樱庭若雪 <猎魔人>是R. Talsorian Games与CD Projekt Red联手推出的一款 ...
- (十五)Zookeeper原理源码分析之数据日志文件归档
文章目录 1. 日志文件概述 1.1 作用说明 1.2 日志文件格式 1.2.1 事务日志文件解析 1.2.2 快照日志文件解析 2. 日志文件序列化 2.1 日志路径配置 2.2 序列化时机 2.3 ...
- ORA-16038的解决(日志无法归档)
ORA-16038的解决 数据库装载完毕. ORA-16038: 日志 3 序列号 5035 无法归档 ORA-19809: 超出了恢复文件数的限制 ORA-00312: 联机日志 3 线程 1: . ...
最新文章
- 如何在一场面试中展现你对Python的coding能力?| 技术头条
- 学会python编程容易吗-Python 适合初学编程的人学吗?
- 收藏老外的jquery web 按钮插件
- SAP Spartacus Organization Unit List三个按钮的技术实现
- AR-关于应收票据的系统操作说明
- 手写及场景文字分析与识别的一些新尝试
- mysql数据库分析结果与结论_mysql数据库show processlist结果分析
- C++设计模式——Composite 组合模式
- 手机端图片滑动切换效果
- Sass:@error
- PAT Basic Level 1072 开学寄语 (20 分)
- Linux生成掩码的计算,谈子网掩码及其计算
- OTL:通用数据库连接模板
- 微软校园招聘面试经历
- python向excel写数据_Python向excel中写入数据的方法 方法简单
- Obi - Advanced Rope Simulation 绳索插件学习文档
- 记一次简单学习MarkDown语法
- 计算机考研怎么计划,计算机考研复习计划怎么制定
- iis启动和停止的方法介绍
- 阿迪達斯NFT狂卷兩千多萬美元,但過程並非一帆風順