精华内容
下载资源
问答
  • Linux如何查看文件打开情况

    千次阅读 2020-03-07 17:45:00
    linux环境下,任何事物都以文件的形式存在,这便产生了一句格言:“一切皆文件”,通过lsof命令便能查看文件打开情况。而lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)等。 lsof...

    前言

    在linux环境下,任何事物都以文件的形式存在,这便产生了一句格言:“一切皆文件”,通过lsof命令便能查看文件打开情况。而lsof命令用于查看你进程开打的文件,打开文件的进程,进程打开的端口(TCP、UDP)等。

    lsof可以打开哪些文件

    1、普通文件
    2、目录
    3、网络文件系统的文件
    4、字符或设备文件
    5、共享库
    6、管道、命名管道
    7、符号链接
    8、网络文件(例如:NFS file、网络socket,unix域名socket)

    lsof介绍

    lsof(list open files)是一个查看当前系统文件的工具。在终端上输入lsof,如果没有安装请自行yum install lsof或者apt-get install lsof。

    在这里插入图片描述
    lsof信息太多,可以在终端加上lsof|more,more命令用于将内容较长的文本文件内容进行分屏显示,方便阅读。

    lsof输出各列信息的意义如下:

    COMMAND:进程的名称
    PID:进程标识符
    USER:进程的所属组
    FD:文件描述符,应用程序通过文件描述符识别该文件。如cwd、txt等。
    TYPE:文件类型,如DIR、REG等
    DEVICE:指定磁盘的名称
    SIZE/OFF:文件的大小
    NODE:索引节点(文件在磁盘上的标识)
    NAME:打开文件的确切名称

    使用场景举例

    列出被删除但占用空间的文件

    常常是由于某个大文件被删除了,但是它却被某个进程打开,导致通过普通的方式找不到它的踪迹,最常见的就是日志文件,但是还可以通过lsof命令发现这样的文件:

    lsof |grep deleted

    在这里插入图片描述从上面的信息来看,这些文件被删除但是仍然被打开,在终端中查找时显示deleted红色的字面。

    恢复打开但被删除的文件

    前面我们可以找到被删除但是仍然被打开的文件,实际上文件并没有真正的消失,如果是意外被删除的,我们还有手段恢复它。/var/log/messages文件为例,我们先看一
    下/var/log/messages文件是什么进程打开的。

    在这里插入图片描述
    原先系统log目录下的文件:
    在这里插入图片描述

    此时,删除文件rm -f /var/log/messages,这是时候用ls查看文件已经不存在了。

    在这里插入图片描述

    然后使用lsof查看那个进程打开了该文件:
    在这里插入图片描述可以找到进程id为1021的进程打开了该文件,我们知道每个进程在/proc下都有文件描述符打开的记录:

    在这里插入图片描述
    这里就找到了被删除的messages文件,文件描述符是6,我们把它重定向出来:

    在这里插入图片描述
    这样我们就恢复了messages文件。

    在这里插入图片描述
    列出所有的网络连接

    lsof -i

    在这里插入图片描述
    查看与某个ip地址建立的连接

    在这里插入图片描述
    列出所有tcp 网络连接信息
    在这里插入图片描述

    总结

    本篇只对lsof功能的简单介绍,要查看完整参考,运行man lsof命令。

    在这里插入图片描述
    (微信公众号【程序猿编码】)

    在这里插入图片描述
    (添加本人微信号,备注加群,进入程序猿编码交流群,领取学习资料,获取每日干货)

    欢迎关注 微信公众号【程序猿编码】,专注于Linux c/c++ 、Python、Go语言、数据结构与算法、网络编程相关知识,常用的程序员工具。还有每日00:10分之前更新 新闻简报,即刻知晓天下事!

    展开全文
  • TCP/IP进行网际互联第三卷:客户-服务器编程与应用(Linux/POSIX套接字版) 基本信息 原书名:Internetworking With TCP/IP Vol Ⅲ:Client-Server Programming And Applications Linux/POSIX Sockets V 作者: ...
  • 并临时产生一个本机端口号来替换此包的 TCP/UDP 头中的源端口号;同时,内核会记录下 此替换.当外部的返回包到来时(送往防火墙主机 的临时端口),服务器能自动识别它,将此返回包 的IP 地址和端口号替换成内部主机的...
  • Linux C 编程一站式学习.pdf

    千次下载 热门讨论 2010-11-24 01:27:27
    3.3. 由赋值产生的类型转换 3.4. 强制类型转换 3.5. 编译器如何处理类型转换 16. 运算符详解 1. 位运算 1.1. 按位与、或、异或、取反运算 1.2. 移位运算 1.3. 掩码 1.4. 异或运算的一些特性 2. 其它运算符 2.1. 复合...
  • Linux网络编程 宋敬彬 孙海滨

    热门讨论 2011-12-09 16:49:20
    4.2 进程产生的方式 96 4.2.1 进程号 96 4.2.2 进程复制fork() 97 4.2.3 system()方式 98 4.2.4 进程执行exec()函数系列 99 4.2.5 所有用户态进程的产生进程init 100 4.3 进程间通信和同步 101 4.3.1 ...
  • 本书介绍如何Linux下建立,运行并维护站点的综合技术,它适合于有一定的LinuxLinux基本操作基础的网络建立者。 本书从建站的准备工作开始,写到建立功能强大的INTERNET网站,层层深入,涉及到网站建设中所遇到的...
  • 4.2 进程产生的方式 96 4.2.1 进程号 96 4.2.2 进程复制fork()函数 97 4.2.3 system()函数方式 98 4.2.4 进程执行exec()函数系列 99 4.2.5 所有用户态进程的产生进程init 100 4.3 进程间通信...
  • 6~第10章介绍了主流的μCLinux操作系统的进程管理、文件系统管理、设备管理、以及用户接口的设计过程,其中包括了开发工具Hitool forμCLinux的使用方法介绍及简单驱动程序的编写;第11~第12章介绍了应用程序...
  • 本书介绍如何Linux下建立、运行并维护站点的综合技术,它适合于有一定的UNIX或Linux基本操作基础的网络建立者和维护者,同时也是广大Linux爱好者的一本较全面的参考书。本书从建站的准备工作开始,写到建立功能...
  • Linux C 一站式学习

    2011-09-20 10:02:29
    Linux系统编程 28. 文件与I/O 1. 汇编程序的Hello world 2. C标准I/O库函数与Unbuffered I/O函数 3. open/close 4. read/write 5. lseek 6. fcntl 7. ioctl 8. mmap 29. 文件系统 1. 引言 2. ext2文件系统 2.1. 总体...
  • 入门学习Linux常用必会60个命令实例详解doc/txt

    千次下载 热门讨论 2011-06-09 00:08:45
    -F:这个命令通常和-a一起使用,它会为每一个mount的动作产生一个行程负责执行。在系统需要挂上大量NFS文件系统时可以加快加载的速度。 -f:通常用于除错。它会使mount不执行实际挂上的动作,而是模拟整个挂上的...
  • 第1 章Linux操作系统概述................... .......................................................................... 2 1.1 Linux发展历史........................................................ 2 ...
  • vc++ 应用源码包_6

    热门讨论 2012-09-15 14:59:46
    非常好的一个实例,把网络连接的UDP/TCP都插入到CList控件中显示出来。 VC++视频捕捉系统 win32下 视频操作。 VC++视频会议系统(完整)有开发文档。使用了系统自带的视频。 Windows核心编程(第五版)随书源代码 ...
  • 3.3. 由赋值产生的类型转换 3.4. 强制类型转换 3.5. 编译器如何处理类型转换 16. 运算符详解 1. 位运算 1.1. 按位与、或、异或、取反运算 1.2. 移位运算 1.3. 掩码 1.4. 异或运算的一些特性 2. 其它运算符 2.1. 复合...
  • 面试总结

    2019-09-03 18:17:44
    4、进程锁产生的情况及如何解除 5、Linux为什么用多进程不用多线程 6、进程之间的通信 7、线程之间的同步 8、双向链表插入删除 9、排序 10、IO复用 11、shell脚本 13、TCP、HTTP抓包并分析 14、C11特性 15、内存对齐...

    1、哈夫曼树
    2、拓扑排序
    3、二叉树层次遍历
    4、进程锁产生的情况及如何解除
    5、Linux为什么用多进程不用多线程
    6、进程之间的通信
    7、线程之间的同步
    8、双向链表插入删除
    9、排序
    10、IO复用
    11、shell脚本
    13、TCP、HTTP抓包并分析
    14、C11特性
    15、内存对齐的存储方式
    16、C++从写代码到运行的过程
    17、队列和栈的运用场景
    18、什么情况导致栈溢出
    19、时间复杂度和空间复杂度计算
    20、数组实现二叉树
    21、哪些数据结构能用二分
    22、红黑树
    23、僵尸进程
    24、进程有哪些状态
    25、在切换应用时有的应用时间间隔长,为什么时间不一样
    26、多态的特点
    27、怎么用多态
    28、路由和交换有什么不同
    29、路由表有什么作用
    30、GCD
    31、C++有几种内存
    32、程序有几种运行模式
    33、返回一个数组的最大的两个数
    34、面向对象和面向过程的不同
    35、int 转 char 输出结果
    36、C++中有哪几种传参方式
    37、虚函数表怎样实现运行时多态的
    38、STL的实现原理(尽可能多的去了解)
    39、STL迭代器
    40、MFC
    41、动态链接库和静态链接库
    42、如何保证头文件只被调用一次(除#pragam once)

    #ifndef __TEST_H__
    #define __TEST_H__
    
    //your code
    
    #endif

    采用条件编译的方式,当第一次引入TEST_H时,编译器会检测到TEST_H还没有被定义,那么就会执行下面的内容;当再次引入,就会检测到已经定义了TEST_H,那么此时就不会执行下面的内容,这种采用宏定义的处理,可以很有效的避免发生这种错误。

    #pragma once
    
    //your code

    这是一种由编译器提供支持的方式,防止同一文件的二次编译,这里的同一文件指的是物理文件(实实在在存在的文件)。

    两种方式的对比:

    #ifndef的方式依赖于宏名字不能冲突,这不光可以保证同一个文件不会被包含多次,也能保证内容完全相同的两个文件不会被不小心同时包含。当然,缺点就是如果不同头文件的宏名不小心相同时,可能就会导致头文件明明存在,编译器却硬说找不到声明的状况。

    #pragma once则由编译器提供保证:同一个文件不会被包含多次。注意这里所说的“同一个文件”是指物理上的一个文件,而不是指内容相同的两个文件。带来的好处是,你不必再费劲想个宏名了,当然也就不会出现宏名相同引发的奇怪问题。对应的缺点就是如果某个头文件有多份拷贝,此时就不能保证他们不被重复包含。当然,相比宏名相同引发的“找不到声明”的问题,重复包含更容易被发现并正。

    方式一由语言支持所以移植性好,方式二 可以避免名字冲突。


    43、awk的使用
    44、线程的基本执行单位
    45、TCP三次握手和四次挥手(细节)
    46、数据量很大的情况下怎么取出前K个
    47、map的遍历,边遍历边删除。
    48、重载流运算符 << 实现对类成员的输出
    例 class A; A a; cout << a;
    49、为什么在重载运算符时是否可以不使用&,若是使用值传递有什么缺点。
    50、定义一个数组,这个数组存的是函数指针。
    51、对于迭代器 自增运算符放在前面和后面的区别 (it++与++it)
    52、菱形继承,如何解决。虚继承。虚继承在内存中有几份拷贝。
    53、互斥锁,自旋锁。
    54、拥塞控制

    55、为何网络这么卡,如果让你来优化有什么办法解决。
    56、如果让你来架设一个网络结构,你会如何架构。
    57、如何检验一个网络的网络质量。(答了TTL,丢包率,和网络延迟)

    58、推排序
    59、如果你的同学写了一个项目,该跑起来cpu占用率达到了100%,请问你如何帮他优化。
    60、如何锁定他的项目是在什么地方出现了问题,造成cpu占用率过高。
    61、如何检查线程和进程的资源占有。
    62、同步和阻塞分别是什么。
    63、就网络编程来说,有哪些函数是阻塞,哪些是同步呢。
    64、有哪些是既阻塞又同步呢。
    65、说一下epoll,LT和ET区别。
    66、假设用户在线数量为100万,用户id假设用int来存
    解决两个问题
    1:你会用什么数据结构来存用户(用户可能随时上下线)。
    2:如何实现高速随机筛选(大概10万次/s)
    (答红黑树存储balabala,说完后大概面试官并不想问我这个,说如果用hashmap存储,如何实现呢。)
    67、使用浏览器打开一个网页用了什么协议?为何不用udp?如何实现用udp来访问网页?
    68、自己实现一个udp来实现可靠传输。
    69、进程的虚拟内存和物理内存

    70、查询进程的命令
    71、检索文件的命令
    72、替换文件里的内容
    73、使用inline的场景
    74,大小端

    展开全文
  • 2.5.2 某公司申请到一个C类IP地址,但要连接6个的子公司,最大的一个子公司有 26台计算机,每个子公司在一个网段中,则子网掩码应设为? 2.5.3 与10.110.12.29mask 255.255.255.224属于同一网段的主机IP地址是? ...
  • 软件测试经典面试题 (超实用)

    热门讨论 2012-02-16 13:48:08
    1、描述软件产生内存泄露的原因以及检查方式。(可以结合一种开发语言进行描述) 28 2、简述什么是值传递,什么是地址传递,两者区别是什么? 28 3、结构化程序设计和面向对象程序设计各自的特点及优缺点是什么? 28...
  • 1.3.8 服务器如何同时为多个客户机服务 21 1.3.9 标识一个特定服务 22 1.4 P2P模式 23 1.4.1 P2P技术的兴起 23 1.4.2 P2P的定义和特征 23 1.4.3 P2P的发展 24 1.4.4 P2P的关键技术 24 1.4.5 P2P系统的应用与...
  • 1.2.1 基于TCP/IP协议栈的网络编程 10 1.2.2 基于WWW应用的网络编程 10 1.2.3 基于.NET框架的Web Services网络编程 10 1.3 客户机/服务器交互模式 13 1.3.1 网络应用软件的地位和功能 13 1.3.2 客户机/...
  • 帮助真的新手实现0→1的入门,解决的1,2,3,4,6问题 学习于网络,回馈于网络 希望永久被引擎检索到,以博客形式发表 我所想说:‍♀️ 虽然不盈利,会累,但因自由和开源软件而写的开心ya, 鸭鸭 贡献: ...
  • hostMonitor8.58破解版(注册机)

    热门讨论 2011-09-17 05:09:39
    并且注意不同组别的测试有其自己的报告目录,对应这个小组的每个报告产生时,都有一个报告产生时间随之产生。 而 且,Advanced HostMonitor产品包裹包括Log Analyzer(日志分析仪),日志分析仪可以为每个测试主机...
  • 答:Internet上产生的许多新的应用,特别是高带宽的多媒体应用,带来了带宽的急剧 消耗和网络拥挤问题。组播是一种允许一个或多个发送者(组播源)发送单一的数据包 到多个接收者(一次的,同时的)的网络技术。组播...
  • Java生成密钥的实例 1个目标文件 摘要:Java源码,算法相关,密钥 Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、...
  • JAVA上百实例源码以及开源项目

    千次下载 热门讨论 2016-01-03 17:37:40
     Java生成密钥、保存密钥的实例源码,通过本源码可以了解到Java如何产生单钥加密的密钥(myKey)、产生双钥的密钥对(keyPair)、如何保存公钥的字节数组、保存私钥到文件privateKey.dat、如何用Java对象序列化保存私钥...
  • 采用纯QWidget编写,亲测Qt4.6到Qt5.15任意版本,理论上支持后续其他Qt版本,亲测win+linux+mac+uos+kylin等系统,效果完美,同时还支持嵌入式linux比如树莓派、香橙派、全志、imx6等。 同时集成了自定义控件+qchart...

空空如也

空空如也

1 2 3
收藏数 44
精华内容 17
关键字:

linuxtcp6如何产生的

linux 订阅