Linux
sodawoods
LETSGETIT
展开
-
进程卡住排查
ps auxf查看进程ID、进程状态、父子进程等信息pstree -p pid查看进程树yum -i install strace 安装strace工具strace -p pidsh-4.2# strace -p 96strace: Process 96 attachedwait4(-1,wait4(-1,表示正在等待子进程退出原创 2021-07-09 16:44:29 · 817 阅读 · 0 评论 -
su -l导致原来的环境变量消失了
假设我们现在是root用户,执行env或者export查看root用户相关的环境变量,假设有A=1, B=2, C=3。接下来,我们通过以下命令切换到用户Tom,再使用env或者export可能是查看不到root的几个环境变量的su Tom -l 可以看下su命令的manul,在使用su时推荐加上-l参数,加上后会清除掉除了TERM之外的环境变量。...原创 2021-05-10 21:17:29 · 651 阅读 · 0 评论 -
Kafka-零拷贝
Kafka的零拷贝。https://www.cnblogs.com/ryjJava/p/12555773.html原创 2021-05-04 14:58:37 · 209 阅读 · 0 评论 -
HTTP的几个超时时间
HTTP请求时connectionRequestTimeout 、connectionTimeout、socketTimeout三个超时时间的含义1.connectionRequestTimout:指从连接池获取连接的timeout2.connetionTimeout:指客户端和服务器建立连接的timeout,就是http请求的三个阶段,一:建立连接;二:数据传送;三,断开连接。建立连接超时后会ConnectionTimeOutException3.socketTimeout:指客户端和服务器建立连原创 2021-04-26 10:41:34 · 7474 阅读 · 0 评论 -
Curl请求@RequestBody List
@RequestBody标注在List作为参数,请求方式curl -H “Content-type: application/json” -XPOST -d ‘[{“name”:“ThreeBody”, “id”:1}]’ “http://localhost:9111/test/path” @RequestMapping(value = "/test/path", method = RequestMethod.POST) public String insertBooks(@RequestB.原创 2021-03-10 16:32:45 · 1574 阅读 · 0 评论 -
服务器小技巧-http.server与wget
通常我们可以使用rz sz来在服务器和自己机器之间实现文件传输。此外,如果服务器上没有安装rz sz,那么可以用python来开启一个简单的http服务器。假设当前在服务器的/home/woods/目录下,服务器的ip是198.1.1.188,该目录下有a.txt文件。使用如下命令,则可以开启一个服务器。python3 -m http.server 9111在另一个机器上,通过wget http://198.1.1.188:9111/a.txt则可以获取到a.txt了。注意这里是相对路径,即资源原创 2021-04-15 21:30:19 · 1117 阅读 · 0 评论 -
BIO到NIO的演化
BIO到NIO的演化首先明确一点,网络通信最终都是走的操作系统内核,内核的IO功能不断演化,即内核增加增加新的系统调用,使得上层的应用程序能够使用新的系统调用完成更快更好的IO处理。● BIO时期(阻塞式的IO,因为accept和read都是阻塞的)程序想使用操作系统内核完成网络通信的话,如果程序是服务端,服务端启动先调用socket系统调用,得到一个文件描述符,比如3(0 1 2分别是stdin stdout stderr),之后调bind listen accept,等待客户端的连接(accep原创 2021-03-30 21:36:31 · 87 阅读 · 0 评论 -
注意项:请查收来自SRE的机器
如果SRE向你的服务提供了物理机,你要把你的服务直接跑在这些机器上,或者跑在基于这些机器的docker上,那么在接收机器时,你要注意写什么呢?机器的内核版本是不是比较新的并且是稳定的机器上是否安装了公司基础的组件机器是不是过老或者有坏盘这些确定后再收这些机器,别傻乎乎的直接拿来用,直到出问题才后悔莫及。另外,也可以看看服务正在使用的机器是不是符合以上条件。最后,别问我怎么知道的。: )...原创 2020-12-29 21:28:08 · 99 阅读 · 0 评论 -
注意项:dockerFile中安装常用的运维工具
自己打镜像的时候,如果依赖的基础镜像中没有一些常用的Linux运维工具,需要自己记得提前安装一下,免得线上出现问题需要排查时才发现没有工具。一些常用的如下RUN yum install -y telnet && yum install -y iproute && yum install -y net-tools && yum install -y htop && yum install -y sysstat && y原创 2020-12-26 18:44:54 · 517 阅读 · 1 评论 -
技能点:查看进程使用的磁盘IO
如何查看进程使用的磁盘IO?磁盘的IO使用率达到100%,需要找出哪个进程使用的磁盘IO大,怎么做?使用iotop命令。在使用时可能会出现以下报错,报错是说需要root用户才能执行,但是在docker中,root用户执行iotop命令也会报错。。。难受的一匹。Netlink error: Operation not permitted (1)The Linux kernel interfaces that iotop relies on now require root priviliges原创 2020-12-24 20:59:48 · 1632 阅读 · 0 评论 -
存储管理:地址空间、交换技术与虚拟内存
存储器抽象无抽象最简单的存储器抽象就是无抽象,即进程直接访问物理内存地址。主要有一下两个问题:如果一个进程可以访问内存中的每个字节,很容易破坏操作系统。难以同时运行多个进程。多个进程可能会同时修改同一个内存地址,造成进程的崩溃。地址空间地址空间是对内存的一种抽象,类似进程是对CPU的抽象。地址空间是一个进程可用于寻址内存的一套地址集合。每个进程都有一个自己的地址空间,并且这个地址空间独立于其他进程的地址空间(除了特殊情况下进程需要共享他们的地址空间)。地址空间的一种简单实现方式基于基址寄原创 2020-12-21 10:04:52 · 250 阅读 · 0 评论 -
操作系统-Shell是怎么执行的?
我们在使用Linux时 ,通过Shell与操作系统交换,那Shell是怎么执行的呢?答案是通过fork进程执行,例如我们在shell中执行cp file1 file2实际上shell会通过fork系统调用为我们创建一个进程,在这个进程中执行我们的命令,如下面代码所示。while(1) { // 在屏幕上显示提示符 type_prompt(); // 从终端读取用户的输入 read_command(command, parameters); if (fork() != 0) { //原创 2020-12-20 18:23:29 · 363 阅读 · 1 评论 -
操作系统-CPU和存储器的一些概念
概念cpucpu的主要工作时取指执行,即在每个cpu周期中,从内存中取出指令、解码以确定其类型和操作数、执行。单个cpu一次只能执行一条指令。用户态和内核态是CPU的两种模式运行在内核态时,CPU可以执行指令集中的所有指令,使用硬件的每种功能。操作系统运行在内核态。用户程序运行在用户态,只能执行整个指令集的一个子集中的命令。存储器存储器的目标是速度快、容量大、价格低。但是目前的技术无法同时满足这几点,所以出现了不同的存储器。类型典型容量典型访问时间寄存器KB1n原创 2020-12-19 18:39:23 · 684 阅读 · 2 评论