lsof如何揭示Linux一切皆文件的终极真相在 Linux 世界里,有一句几乎被奉为真理的话:
一切皆文件(Everything is a file)
但很多工程师只是在概念层面理解它。
直到你真正用好一个工具 —— lsof(List Open Files),你才会意识到:
它不是一句哲学,而是一个可以被“观测”的系统事实。
这篇文章,我们彻底讲清:
lsof 的底层原理
它如何印证“一切皆文件”
生产环境 15+ 高价值使用场景
和 netstat / ss / ps 的区别
排查线上问题的完整思维模型
一、什么是 lsof?lsof 是一个 Unix/Linux 下用于列出进程打开文件的工具。
注意关键词:
不是“普通文件”而是“所有文件描述符”
在 Linux 中,以下对象全部通过 file descriptor (FD) 表示:
对象
是否文件
普通文件
✅
目录
✅
TCP 连接
✅
UDP 连接
✅
Unix Socket
✅
管道 pipe
✅
匿名内存映射
✅
设备文件 / ...
postmarketOS在 Android 与 iOS 双寡头的世界里,postmarketOS(简称 pmOS) 为用户提供了一个全新的选择。它不是 Android 的变种,而是一个 完整的 GNU/Linux 发行版,专为手机和平板等移动设备设计。开发团队希望通过开源与社区协作,延长硬件寿命,减少电子垃圾,并让用户真正掌控自己的设备。
📌 官方网站:https://postmarketos.org📌 最新稳定版本:postmarketOS 25.06(2025 年 6 月 22 日发布)
🏞️ 界面预览
📜 起源与发展
• 🕰️ 2017 年 5 月:项目启动,源代码托管于 GitLab。
• 🔄 设计理念:不同于 Ubuntu Touch 等系统,postmarketOS 不依赖 Android 用户空间,而是直接基于 Alpine Linux。
• 🌍 目标:为智能手机提供 10 年生命周期,并尽可能使用 Linux 主线内核,避免厂商闭源驱动带来的限制。
🎯 核心特色亮点
• ⚡ 轻量化:基础系统仅约 6MB(不含内核),适合老旧设备。
• ...
RAID 0 、RAID 1 、RAID 5 、RAID 10 、RAID 50 、RAID 60RAID技术,英文全拼为****Redundant Array of Independent Disks。从名称可以看出,RAID最初目标是通过将多个廉价的磁盘驱动器组合起来,以取代昂贵的大型磁盘驱动器,从而提供更高的性能和容错能力。还没说这个技术是为了干什么的,这个技术是在当时的背景下,存储成本价格昂贵,而如何用更小的成本造就更加优质的性能。
RAID技术如何实现在成本固定的情况下,实现性能的优化。首先,RAID是分为很多实现方式的,其中就有RAID0 RAID1 RAID5 RAID10 RAID50 RAID 60。
这些存储方式的不同造就了存储结果的不同性能与优势劣势,我们用更加简单的方法来逐个学习~
首先是RAID 0。这个存储方式是假设你有多个磁盘,但是你有一份数据,你将这份数据存储在不同的磁盘中,这样当用户想要读取数据,就可以从不同的磁盘中获取,由于每个磁盘都不会承载很多的数据,都是一份数据内的【块】,所以I/O速度也会自然提升。举 ...
scp 和 rsync 该怎么选1 简单总结
scp 适合一次性传输文件,简单粗暴;rsync 更适合高效同步目录,支持增量和断点续传。
2 scp是什么scp 是 Secure Copy Protocol 的缩写,是SSH服务下面的子命令,本质就是通过 SSH 把文件从一台机器“安全复制”到另一台。
2.1 优点
命令简单、易记;
没有服务端要求,只要有 SSH 就能传
2.2 缺点也明显
每次都传整个文件,不管你是不是改了 1 字节;
不能断点续传,断了就重新来;
大文件、目录效率低。
3 rsync是什么rsync 是一个“同步神器”,全称 remote sync,可以智能判断文件差异,只传修改的部分!
3.1 优点
增量传输:只同步变更部分;
断点续传:中断了也能接着来;
支持压缩、权限、软链接等保留;
可以本地同步、远程同步、镜像备份;
3.2 缺点:
命令稍复杂;
初学者不太容易记住参数。
4 最实用的对比表
特性
scp
rsync
是否增量
否
是,只传改动
断点续
否
是
压缩传输
无
-z 压缩
权限/时间戳保留
有
更强大 ...
systemd:从基础到进阶一、概述systemd是一个系统和服务管理器,systemd是Linux系统中一套基本的构建模块,提供了一系列工具的集合,用于管理后台服务、状态查询、日志归档、设备管理、电源管理和定时任务等许多职责。
systemd作为PID为1的进程,是系统中所有其他进程的父进程。
systemctl是一个命令行工具,用于与systemd进行交互。通过systemctl,用户可以启动、停止、重启、查看状态以及管理系统中的服务单元
systemd作为后台服务运行,而systemctl则提供了用户与systemd交互的接口。用户通过systemctl发送指令,systemd执行相应的操作
systemctl的命令实际上是向systemd发送请求,告诉systemd要做什么。
systemd通过单元文件(Unit files)来描述和管理不同的系统资源和服务。Systemd 支持的 12 种 Unit 文件类型。下面就将我们生产环境中常用到的Service单元文件展开讲解。
二、service文件定义软件服务的文件通常是systemd服务单元文件,具有.service后缀,这些 ...
ubuntu 环境下的 docker 安装docker 的安装:
1apt install docker.io
一条命令就安装完了,后续是镜像源的配置。如果不想配,就直接使用对方的网址+镜像。比如:
1docker pull 666860.xyz/hello-world
镜像站点的帮助文档:
日常找镜像可以在它的网站上搜:
找到镜像后,使用 pull 拉取镜像即可。如果不想每次pull前都加网站名称,可以将镜像网址写到配置文件中:
1234567891011$ cat /etc/docker/daemon.json{ "registry-mirrors":[ "https://666860.xyz/" ]}$ systemctl daemon-reload$ systemctl stop docker$ systemctl start docker
后续拉取镜像就不用加网址了:
1docker pull ubuntu:20.04
有些镜像国内的同步源没 ...
yum下载某个服务所需的包文件并安装此功能用于服务器不能和外网通信,安装某个服务时需要先在能上外网的主机上下载rpm包,然后进行安装。
12345678910111213141516# 在本机未安装此服务时使用以下指令:$ yum install --downloadonly --downloaddir=/tmp/httpd/ httpd# 仅下载httpd服务所需的rpm包,而不安装# --downloaddir:指定下载的rpm包存放路径# 若本机已安装此服务,则使用reinstall选项即可$ yum reinstall --downloadonly --downloaddir=/tmp/httpd/ httpd# 当rpm包下载后打包到其他主机上,可以使用以下指令安装$ yum -y localinstall /tmp/httpd/*
vim常用命令,linux必备目录
一、前言
二、移动与跳转
三、删除与复制
四、搜索与替换
五、文件操作
六、其他命令
一、前言掌握vim是linux必备技能,当掌握了vim的操作,很多时候比文本编辑器或IDE更高效。
二、移动与跳转
命令
说明
set nu
显示行号;
set nonu
取消显示行号;
0
数字0,移动到行首;
$
移动到行尾;
gg
移动到文档的第一行;与1G一样;
G
移动到文档的最后一行;
nG
n为数字,移动到第n行;
n<回车>
向下移动n行;
Ctrl + f
向下翻页,即Page Down;
Ctrl + b
向上翻页,即Page Up;
Ctrl + d
向下翻半页;
Ctrl + u
向上翻半页;
h
向左;
j
向下;nj表示向下移动n行;
k
向上;
l
向右;
H
移动到屏幕第一行;
M
移动到屏幕中间一行;
L
移动到屏幕最后一行;
+
非空格符的下一行;
-
非空格符的上一行;
三、删除与复制
命令
说明
dd
删除 ...
2024.04.12作
配置更新尝试:2024.05.10
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566##openrestyworker_processes 4worker_connection 102400keepalive_timeout 60client_max_body_size 32Mworker_cpu_affinity 1000 0100 0010 0001;brotli on;brotli_comp_level 6;brotli_static always;brotli_min_length 1k;brotli_types application/atom+xml application/javascript application/json application/rss+xml application/vnd.ms-fontobject applicatio ...
一文看懂Linux嵌入式/etc/init.d/目录下的所有启动文件init.d是指包含一系列Shell脚本的目录,这些脚本用于控制服务(也称为守护进程)的生命周期。当系统启动时,init进程会根据预定义的规则执行这些脚本,以确保必要的服务能够正确启动。
/etc/init.d/目录下的所有文件
1[cloud@localhost ~]$ lsS01logging* S30dbus* S50telnet* S90start_userapp.sh* S10udev* S40network* S70vsftpd* socketcand*S13portmap* S50dropbear* S80mount-opt* rcK*S20urandom* S50sshd* S81web.sh* rcS*
fil ...
