首页
学习
活动
专区
圈层
工具
发布

如何判断进程是在哪个容器中运行的?

在某些情况下,可能在宿主机上存在“看得到却摸不到”的进程;有的时候容器太多,想知道进程具体是哪个容器运行的?...我们来尝试下: 首先在容器中的test目录下运行sleep 10000 在宿主机ps能看到对应的进程 看对应的proc下的cwd,也确实和容器中的路径一样,在/test目录下,但是宿主机实际上并没有这个路径...大概率可以判断这个进程不是在宿主机上的,可以通过如下这个命令判断命令是否是在容器中执行的: ps -e -o pid,cmd,comm,cgroup 可以看到pid为29656的cgroup是在docker...docker-xxxx,xxxx就是docker的id,也就是: bf85501b3084601ba76b8cb303917134d58b5e7783c14c1636ff1c56a3d83c1f 或者cat对应的进程...cgroup也可以: cat /proc/xxxx/cgroup 和我们执行的sleep命令的容器一致: 因此可以得出结论,pid为29656的进程是在 bf85501b3084601ba76b8cb303917134d58b5e7783c14c1636ff1c56a3d83c1f

6.3K30

你知道从浏览器发送请求给SpringBoot后端时,是如何准确找到哪个接口的?(下篇)学废了吗?

问题大致如下: 为什么浏览器向后端发起请求时,就知道要找的是哪一个接口?采用了什么样的匹配规则呢? SpringBoot 后端是如何存储 API 接口信息的?又是拿什么数据结构存储的呢?...如果找到多个匹配项,则选择最佳匹配项 // 这里就关系到了我们是如何进行匹配的啦。...,并返回一个(可能是新的)映射与当前请求相关的条件。...二、小结 扫描所有注册的Bean 遍历这些Bean,依次判断是否是处理器,并检测其HandlerMethod 遍历Handler中的所有方法,找出其中被@RequestMapping注解标记的方法。...他问的是为什么浏览器在向后端发起请求的时候,就知道要找的是哪一个API 接口,你们 SpringBoot 后端框架是如何存储API接口的信息的?是拿什么数据结构存储的呢?

93610
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    从一个softlock问题来谈谈Kernel IPI的实现

    (csd);//处理完回调函数后清除csd的flags } ... } 前面的分析我们已经知道cpu2是给cpu1和cpu3发送了ipi请求,而cpu1和cpu3对应的...哪个cpu响应其发送的ipi请求了。...所以cfd_data:x的cpumask代表死机前本cpu给哪几个cpu发送了IPI信号,而smp_call_function_many函数传入的参数1 cpumask地址的值代表本cpu正在等待哪个(...些)cpu响应或者处理完成IPI请求,针对本问题对应信息如下: cpu2给cpu1和cpu3发送了ipi请求 crash> p cfd_data:2 per_cpu(cfd_data, 2) = $15...,由于是kvm虚拟机,因此推测是host主机出现异常导致子机vcpu3没有获取cpu资源导致的,排查host主机日志后发现是由于磁盘故障引起该子机对应的qemu进程D状态引起的。

    6K140

    2021-Java后端工程师面试指南-(计算机网络)

    TCP 协议里面会有两个端口,一个是浏览器监听的端口,一个是电商的服务器监听的端口。操作系统往往通过端口来判断,它得到的包应该给哪个进程。 传输层封装完毕后,浏览器会将包交给操作系统的网络层。...这个重试绝非你的浏览器重新将下单这个动作重新请求一次。对于浏览器来讲,就发送了一次下单请求,TCP 层不断自己闷头重试。...不编好号怎么确认哪个应该先来,哪个应该后到呢。编号是为了解决乱序问题。既然是社会老司机,做事当然要稳重,一件件来,面临再复杂的情况,也临危不乱。 还应该有的就是确认序号。...现在把三次握手改成仅需要两次握手,死锁是可能发生的。作为例子,考虑计算机S和C之间的通信,假定C给S发送一个连接请求分组,S收到了这个分组,并发 送了确认应答分组。...TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。

    52840

    RST报文详解_modbus网关使用方法

    RST分节的内容:如果收到的是ACK报文,RST取ACK报文的ACK序列号为RST报文的SEQ;如果报文不是ACK报文,RST的SEQ为0且ACK字段为收到的报文SEQ+报文长度; 请求超时 一个客户端连接服务器...用抓包工具查看,客户端是在收到服务器发出的SYN之后就莫名其妙的发送了RST。 这是为什么呢? 原因就是请求超时了。 有89、27两台主机。...主机89向主机27发送了一个SYN,表示希望连接8888端口,主机27回应了主机89一个SYN表示可以连接。但是主机27却很不友好,莫名其妙的发送了一个RST表示我不想连接你了。...**如果client再次调用write发数据给server,由于TCP协议层已经处于RST状态了,因此不会将数据发出,而是发一个SIGPIPE信号给应用层,SIGPIPE信号的缺省处理动作是终止程序。...当一个进程向某个已收到RST的套接字执行写操作时,(此时写操作返回EPIPE错误)内核向该进程发送一个SIGPIPE信号,该信号的默认行为是终止进程,因此进程必须捕获它以免不情愿地被终止;** TCP接收到一个根本不存在的连接上的分节

    2.2K20

    计算机网络协议(三)——UDP、TCP、Socket

    ,发送的时候发的是一个流,没头没尾的。...UDP继承了IP的特性,基于数据报的,一个个发,一个个收; TCP是可以有拥堵控制的,可以根据网络环境调整自己的行为;UDP就是应用让我发,我就发,管它洪水滔天; TCP是一个有状态的服务,通俗的讲就是有脑子的...,可以精确的记着,自己发送了没有,接收到没有,发送到哪个了,应该接收到哪个了,错一点儿都不行;UDP其实是一个无状态服务,无脑子,天真无邪的发出去就发出去呗; ---- UDP的包头 UDP的包头格式很简单...举个例子: 在一个网络环境不可靠的情况下,A发出一个连接请求,发出一个请求杳无音信就会一直发,终于有一个包到B了,但是A还不知道会继续发; 收到A的请求之后,B如果同意连接就会发送应答包给A;但是B的应答包也是一入网络深似海啊...发送端的缓存里是按照包的ID一个个排列,根据处理的情况分成四个部分: 发送了并且已经确认的; 发送了并且尚未确认的; 没有发送,但是已经等待发送的; 没有发送,并且暂时还不会发送的; ---- 3.1

    8.9K24

    这几个问题答不对,就别说精通TCP

    原因无外乎两个:1、TCP协议直接与进程打交道,写网络程序要用;2、TCP协议设计十分精巧,在一个不可靠的IP网络上实现了可靠传输,因为精巧,掌握TCP的原理自然也有难度,对它掌握如何,很能反映面试者的基础水平...1、A进程通过TCP向另一台机器上的B进程发送了一个字符串“hello”,TCP返回对方成功接收的确认信息,请问,现在进程A是否可以肯定地说进程B收到了它发送的字符串? 答案:不能!...答案:有两种可能,一种是服务器端的TCP收到客户端请求,查看本机上是否有进程在监听相应的端口,如果有,就把请求交给这个进程,一般而言,这个进程不会接受这个连接的,于是它会发一个RST给客户端。...还有一种可能是TCP没有找到哪个进程在监听相应的端口,于是TCP就会直接发一个RST给客户端,一般而言都会是这种情况。...8、那TCP接收到发送给这个端口的报文段,怎么决定发给哪个进程呢?

    1.3K80

    分布式一致性算法Paxos

    学习者(Learner):学习者无投票者,只是从接收者那里获取哪个提议被选中。  ...phase1  如上图所示,Proposer1向5个Acceptor发送了Prepare(#1)的请求,其中前三个请求顺利到达,Acceptor授予访问权,返回,并修改lastest_prepared_epoch...paxos7.png  那么Proposer1对Acceptor3发送的accept请求在此时达到Acceptor3会怎么样呢?...Acceptor3发现当前lastest_prepared_epoch是2,所以直接拒绝了这个请求。 后记  不清楚大家现在对Paxos算法的过程是否已经有了清楚的了解啊?...那么我来问几个问题,大家可以考虑一下: 在本文的情景下,假如Proposer2向Acceptor2,3,4发送了prepare请求,而不是向Acceptor1,3,5发送的请求,会怎么样呢?

    1.3K10

    Python Web学习笔记之面试TCP的15个问题

    原因无外乎两个:1、TCP协议直接与进程打交道,写网络程序要用;2、TCP协议设计十分精巧,在一个不可靠的IP网络上实现了可靠传输,因为精巧,掌握TCP的原理自然也有难度,对它掌握如何,很能反映面试者的基础水平...1、A进程通过TCP向另一台机器上的B进程发送了一个字符串“hello”,TCP返回对方成功接收的确认信息,请问,现在进程A是否可以肯定地说进程B收到了它发送的字符串? 答案:不能!...答案:有两种可能,一种是服务器端的TCP收到客户端请求,查看本机上是否有进程在监听相应的端口,如果有,就把请求交给这个进程,一般而言,这个进程不会接受这个连接的,于是它会发一个RST给客户端。...还有一种可能是TCP没有找到哪个进程在监听相应的端口,于是TCP就会直接发一个RST给客户端,一般而言都会是这种情况。...8、那TCP接收到发送给这个端口的报文段,怎么决定发给哪个进程呢?

    1.1K90

    TCP协议重点总结(万字总结-附实例)

    TCP保障数据不会出现无意间损坏(UDP也做到了这一点) TCP尽可能的在维护网络质量 2.2 TCP协议段格式 源/目的端口号:表示数据是从哪个进程来,到哪个进程去; 32位序号/32位确认号:下文详细讲...2.3.1 确认应答机制(可靠机制) 有了确认应答机制之后,现在还遗留两个问题: 如果发送方同时发送了很多数据,怎么知道对方确认收到的是哪一份?...(本次收到的数据的最后一个字节的下一个) SN在发送TCP Segment 时,Header中是如何体现的?...✭ 同理,挥手阶段其实就是双方互相确认要断开连接的阶段: 不过由于服务器不能收到客户端的fin请求就立刻也发一个fin请求,因为服务器此时可能仍有一些未处理完的数据要处理,要等这些数据处理完才可以close...那么应用程序看到了这么一连串的字节数据,就不知道从哪个部分开始到哪个部分,是一个完整的应用层数据包。 那么如何避免粘包问题呢?

    83330

    程序员必备Linux性能分析工具和方法

    如果这些函数是设备特定的,尝试着找出为什么需要使用这种特定的设备(尤其是在1.2中造成高中断的设备),或许就可以判断出哪里出了问题。 用户空间占了大多是 CPU?...哪个进程占用了大多数 CPU? 通过 top 命令进程排序列表确定占用大量 CPU 的进程。 进程在内核还是用户空间花费了时间?...哪个进程访问了磁盘? 通过 iotop 找到产生大量 IO 的进程。 进程访问了哪些文件?...是否有进程处理该类型的流量? 使用 netstat 查看是否有进程在流经该网络端口的流量。 哪个远程系统发送了流量? 如果没有指定进程在处理这个流量,可能来自网络上其他系统的流量攻击。...哪个套接字在处理流量? 在确定了处理流量的进程后,使用 strace/lsof 找到是哪个套接字产生了这些通信流量。

    75511

    Linux后台开发必看(给进军bat的你)

    如何设置非阻塞 什么是零拷贝?...seq为1000,发送了1000个数据,下一个seq是多少?...自旋锁与普通锁的区别 虚拟内存 进程的内存分布 栈内存为什么由系统自动分配和释放 守护进程如何创建 进程间的通信方式及其区别,应用场景 死锁条件和解除 进程调度方式 对编译连接的理解 共享内存实现原理...后台开发应用与实践》《Linux多线程服务端编程》 补充资料:gdb手册和makefile详解 7 大数问题 有200亿qq,但实际只有25亿用户,找到重复的qq 25亿qq占用内存多大 1-100万,计算找出所有的质数...(计算密集型任务),用单线程与多线程怎么处理 1个G的文件写程序,从A机器发送到B机器,怎么发?

    1.9K20

    传输层

    对比流水线,哪个更润显而易见,于是有 增加序号范围,因为每个输送中的分组(不计算重传的)必须有一个唯一的 序号,而且也许有多个在输送中的未确认报文 协议的发送方和接收方两端得缓存多个分组 所需序号范围和对缓冲的要求取决于数据传输协议如何处理丢失...SYN_RECV是指,服务端被动打开后,接收到了客户端的SYN并且发送了ACK时的状态。...TCP 是全双工模式(同一时刻可以同时发送和接收),这就意味着,当主机1发出 FIN 报文段时,只是表示主机1已结没有数据要发送了,主机1告诉主机2,它的数据已经全部发送完毕;但是,这个时候主机1还是可以接受来自主机...第二点:如果主机1直接 关闭,然后又再向主机 2发起一个新连接,我们不能保证这个新连接与刚才关闭的连接端口是不同的。也就是说有可能新连接和老连接的端口号是相同的。...2,由于新连接和老连接的端口号是一样的,TCP协议就认为哪个延迟的数据时属于新连接的,这样就和真正的新连接的数据包发生混淆了。

    91520

    TCP 详解

    先来看看它的报头 我们来分析分析每部分的含义和作用 源端口号/目的端口号: 表示数据从哪个进程来, 到哪个进程去. 32位序号: 4位首部长度: 表示该tcp报头有多少个4字节(32个bit)...此时, 客户端向服务器主动发出连接请求, 服务器被动接受连接请求. 1, TCP服务器进程先创建传输控制块TCB, 时刻准备接受客户端进程的连接请求, 此时服务器就进入了 LISTEN(监听)状态...TCP服务器通知高层的应用进程,客户端向服务器的方向就释放了,这时候处于半关闭状态,即客户端已经没有数据要发送了,但是服务器若发送数据,客户端依然要接受。...第一,保证客户端发送的最后一个ACK报文能够到达服务器,因为这个ACK报文可能丢失,站在服务器的角度看来,我已经发送了FIN+ACK报文请求断开了,客户端还没有给我回应,应该是我发送的请求断开报文它没有收到...那么应用程序看到了这一连串的字节数据, 就不知道从哪个部分开始到哪个部分是一个完整的应用层数据包. 此时数据之间就没有了边界, 就产生了粘包问题 那么如何避免粘包问题呢?

    1.9K20

    Redis哨兵机制原理详解

    一、什么是哨兵模式: 1、哨兵模式的架构: 2、什么是哨兵模式: 在主从模式下(主从模式就是把上图的所有哨兵去掉),master节点负责写请求,然后异步同步给slave节点,从节点负责处理读请求。...,可以在一个架构中运行多个哨兵进程,这些进程使用流言协议(gossip protocols)来传播Master是否下线的信息,并使用投票协议(agreement protocols)来决定是否执行自动故障迁移...,以及选择哪个Slave作为新的Master。...作用:发现最新的集群拓扑结构 3、基于Raft算法选举领头sentinel: 到现在为止,已经知道了master客观下线,那就需要一个sentinel来负责故障转移,那到底是哪个sentinel节点来做这件事呢...举例:sentinel1判断了客观下线,向sentinel2发送了第一步中的命令,sentinel2回复了sentinel1,说选你为领头,这时候sentinel3也向sentinel2发送第一步的命令

    2.4K30

    从TCP协议的原理来谈谈rst复位攻击

    在谈RST攻击前,必须先了解TCP:如何通过三次握手建立TCP连接、四次握手怎样把全双工的连接关闭掉、滑动窗口是怎么传输数据的、TCP的flag标志位里RST在哪些情况下出现。...建立连接的请求中,标志位SYN都要置为1,在这种请求中会告知MSS段大小,就是本机希望接收TCP包的最大大小。 发送的数据TCP包都有一个序号。...FIN是正常关闭,它会根据缓冲区的顺序来发的,就是说缓冲区FIN之前的包都发出去后再发FIN包,这与RST不同。...又比如,AB正常建立连接了,正在通讯时,A向B发送了FIN包要求关连接,B发送ACK后,网断了,A通过若干原因放弃了这个连接(例如进程重启)。...当然,如果能够对常见的OS如windows和linux找出生成source port规律的话,还是可以搞定的。

    3K10

    Mysql进阶垫脚石 -- Sql命令的执行状态有哪几种

    每当执行SQL运行缓慢时,我们都会使用 show processlist 查看一下mysql当前进程的执行情况;(如下) ?...如果你要kill一个语句的执行线程时,请使用 kill 207; User 显示执行该命令的用户,如果你不是root,这个命令就只显示你权限范围内的sql语句(root用户可以看所有的) Host 这个语句是从哪个...ip 的哪个端口上发出的,可用来追踪出问题语句的用户 db 显示这个进程目前连接的是哪个数据库 Command 显示当前连接的执行的命令,一般就是休眠(sleep),查询(query),连接(connect...9.Killed 发送了一个kill请求给某线程,那么这个线程将会检查kill标志位,同时会放弃下一个kill请求。...19.Searching rows for update 正在讲符合条件的记录找出来以备更新。它必须在 UPDATE 要修改相关的记录之前就完成了。

    86950
    领券