Linux
文章平均质量分 81
致守
这个作者很懒,什么都没留下…
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Linux文件锁学习-flock, lockf, fcntl
这三个函数的作用都是给文件加锁,那它们有什么区别呢?首先flock和fcntl是系统调用,而lockf是库函数。lockf实际上是fcntl的封装,所以lockf和fcntl的底层实现是一样的,对文件加锁的效果也是一样的。后面分析不同点时大多数情况是将fcntl和lockf放在一起的。下面首先看每个函数的使用,从使用的方式和效果来看各个函数的区别。转载 2026-05-08 16:35:52 · 36 阅读 · 0 评论 -
Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile
文件锁定是保证系统稳定性和安全性的一种重要方法,在 Linux 系统中,我们可以使用 flock、fcntl、lockfile、flockfile 等命令来实现文件锁定操作。在使用这些命令时,需要注意锁定类型、命令参数、常见问题等内容,以保证锁定操作的正确性和可靠性。Linux 中的文件锁定命令:flock、fcntl、lockfile、flockfile-腾讯云开发者社区-腾讯云。转载 2026-05-08 16:29:44 · 38 阅读 · 0 评论 -
linux下getrlimit()与setrlimit()函数说明及使用
事实上,并不是只有SIGSEGV信号产生coredump,还有下面一些信号也产生coredump:SIGABRT(异常终止)、SIGBUS(硬件故障)、SIGEMT(硬件故障)、SIGFPE(算术异常)、SIGILL(非法硬件指令)、SIGIOT(硬件故障),SIGQUIT,SIGSYS(无效系统调用),SIGTRAP(硬件故障)等。获取或设置资源使用限制, linux 下每种资源都有相关的软硬限制,软限制是内核强加给相应资源的限制值,硬限制是软限制的最大值。ulimit -c -n -s -H 硬限制。转载 2026-05-06 16:14:29 · 36 阅读 · 0 评论 -
再生龙(Clonezilla)系统备份与还原全指南:从准备到实践
在当今 数据 至上的时代,系统备份与还原是保障设备稳定运行的重要环节。本文将详细介绍如何使用再生龙(Clonezilla)工具进行系统的完整备份与还原,帮助你轻松应对系统故障、升级迁移等场景。转载 2026-04-30 10:40:53 · 245 阅读 · 0 评论 -
从prctl函数开始学习沙箱规则
prctl函数是最原始的,建立沙箱规则的函数。后面出现的seccomp.h对prctl函数进行了封装,有了seccomp_init(),seccomp_rule_add(),seccomp_load()函数来进行沙箱规则的设置。seccomp_rule_add函数负责添加规则,函数原型如下:/***/第二个参数如下所示,表示对某个系统调用要进行的操作:/**//***//***//***//***//***//***/转载 2026-04-14 13:41:06 · 24 阅读 · 0 评论 -
【Linux】Linux系统上升级到最新的CMake版本
在Linux系统上升级到最新的CMake版本(如最新版本为4.0.2),可以按照以下清晰有序的步骤操作。以下指南假设您使用的是基于/Ubuntu或Red Hat的发行版(如CentOS/RHEL),并提供多种安装方式(二进制安装、源码编译、包管理器等)。转载 2025-12-09 15:51:23 · 387 阅读 · 0 评论 -
VSCode系列 - 如何用VSCode搭建C++高效开发环境(1)
VSCode是笔者用过的最好用的开发工具,没有之一。笔者14年的码龄生涯中,先后用过Eclipse、 IntelliJ IDEA、 WebStorm、 PyCharm、 Visual Studio(2010/2013/2015)、 NetBeans、 Sublime Text等,但自从用VSCode之后,就再没换过其他工具,一直用到现在有5年多的时间。转载 2025-11-25 11:31:45 · 156 阅读 · 0 评论 -
VSCode系列 - 如何用VSCode搭建C++高效开发环境(2)
在VSCode下进行C/C++开发,C/C++插件是最重要、功能最强大、也是最复杂的一个插件。我们从C/C++: 代码智能提示、补全、跳转等功能,集成了插件的几乎所有功能。Formatting: 代码格式化器,可对代码进行自动格式化。: 通过代码(注释)生成文档,定义注释的样式,集成Doxygen等工具。: 代码分析器,对代码的错误、风格等进行检查,集成了Clang-Tidy。Debugging: Debug调试器。: 资源管理器。: 其他杂项配置。进行C/C++开发,C/C++转载 2025-11-25 11:19:14 · 183 阅读 · 0 评论 -
解决vscode C/C++ Advanced Lint的具体操作步骤
VSCode C/C++ Advanced Lint是一款专为C/C++项目开发者设计的代码静态分析工具。它结合了多种静态分析工具,如clang-tidy、cppcheck和PVS-Studio,提供了全面的代码检查和错误诊断功能。该工具可以在开发过程中自动检查代码,并提示潜在的问题和改进建议。转载 2025-11-25 11:17:46 · 409 阅读 · 0 评论 -
vscode中嵌入cppcheck进行静态检查,包含插件使用方法
2 使用misra 2012进行检查。转载 2025-11-25 11:16:43 · 346 阅读 · 0 评论 -
CS:理解编程中 lint是什么意思
在计算机科学与技术(尤其是编程领域)中,(或 )是一种用于检查代码潜在问题、风格不一致或不符合编码规范的工具。它的名称源于早期 Unix 系统中的一个工具lint(1979年),最初用于 C 语言代码的静态分析。转载 2025-11-25 11:15:04 · 211 阅读 · 0 评论 -
什么是Lint工具?何时需要使用Lint工具?
类似地,由计算机科学家斯蒂芬·约翰逊(Stephen C. Johnson)编写的Lint命令就像一个干衣机中的棉絮陷阱,因为它在不影响整块布的情况下捕获了多余的“纤维”。但是,如果您使用的是编译语言或开发的是复杂的嵌入式系统,那么Linter并不能满足您的一切需求。后续的Linter和类似Lint的工具不仅仅关注样式和格式,还通过查找更广泛的问题扩展了功能,例如未解决的合并冲突、已弃用的函数以及使用不安全的语言功能。请记住,Linter会根据其了解的规则分析您的代码,找出其中的风格和软件缺陷。转载 2025-11-25 11:14:14 · 142 阅读 · 0 评论 -
OOM问题排查,Linux进程突然被杀掉(OOM killer)
Linux 内核有个机制叫OOM killer(Out Of Memory killer),该机制会监控那些占用内存过大,尤其是瞬间占用内存很快的进程,然后防止内存耗尽而自动把该进程杀掉。内核检测到系统内存不足、挑选并杀掉某个进程的过程可以参考内核源代码linux/mm/oom_kill.c,当系统内存不足的时候,out_of_memory()被触发,然后调用select_bad_process()选择一个”bad”进程杀掉。如何判断和选择一个”bad进程呢?转载 2025-11-25 10:04:58 · 166 阅读 · 0 评论 -
电脑开机出现no boot disk has been detected or the disk has failed解决方法
也可以按键盘上的F10保存,一般情况是f10,有些机器按F4保存,然后在弹出的窗口选YES即可,如图所示;:1、开机的时候迅速按F2键或delete键或F1键或Esc键进入BIOS(不同品牌的电脑进BIOS的按键可能不同),我这台机器是按del进入bios,进入bios后我们切换到Boot选项,检查Boot Option #1第一启动项第一启动项是否为硬盘,如下图所示;出现这个提示一般如果是刚动了电脑或是动了硬盘,硬盘没接好,我们首先检测硬盘的和主板上的数据线是否松动,我们尝试重插一下,如果重插了可以在。转载 2025-11-17 17:24:38 · 1262 阅读 · 0 评论 -
Transport Layer Interface 考古
正因此,我在维护 lsof 的时候,经常看到 TCP/TPI state,不明所以,才会研究 TPI 的历史,然后找到 TLI,才知道除了 Sockets 以外,还有一套 Unix 上的网络 API。现在网络编程主要采用的是 BSD Sockets API,但实际上当年还有另一套 API,就是 TLI(Transport Layer Interface),后来 BSD Sockets 胜出,进入了 POSIX 标准,TLI 后面也标准化为了 XTI,现在可以在部分 Unix 系统中找到。转载 2025-09-10 14:13:08 · 236 阅读 · 0 评论 -
Netlink简介
Netlink是基于socket的用户空间进程和内核态进程通信的方式。用途有两个,内核为用户态程序提供了很多接口(如route, firewall, ipsec等),直接在用户空间连接相应的socket,就可以获得广播信息。自己编写内核模块,需要和用户空间通信,比/proc,设备驱动方式更加灵活。网络间通信(网络上的两个进程)用: Network socket同一主机内进程间通信(用户态): Unix domain socket用户态进程和内核态进程通信: Netlink socket。转载 2025-09-10 13:42:21 · 176 阅读 · 0 评论 -
tcpdump高级过滤
OpenSSH 常常应答一些内容,比如"SSH-2.0-OpenSSH_3.6.1p2", 这第一个4 bytes (SSH-)的十六进制值是 0x5353482D。打印所有源或目的端口是80, 网络层协议为IPv4, 并且含有数据,而不是SYN,FIN以及ACK-only等不含数据的数据包.(ipv6的版本的表达式可做练习)IP头有个长度字段可以知道头长度是否大于20字节。转自:https://blog.wains.be/2007/2007-10-01-tcpdump-advanced-filters/转载 2025-09-04 18:09:19 · 225 阅读 · 0 评论 -
Makefile中:=, =, ?=和+=的含义
在语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等那么这些赋值等号分别表示什么含义呢?转载 2025-09-04 17:13:54 · 318 阅读 · 0 评论 -
利用ICMP实现Traceroute
最近工作中遇到一个需求,就是需要知道我们发出去的请求经过的所有路由IP地址。查了些资料,主要是用ICMP(Internet控制报文协议)。转载 2025-09-04 17:04:25 · 328 阅读 · 0 评论 -
Linux 根据 socket inode 获取其进程pid
dev/sda 可以通过任何一个程序以任意方式读写,定义一套任意的私有格式(或文件系统)即可,而 /dev/eth0 则必须和对端共同遵守一套格式和逻辑,这同一套格式和逻辑就是 TCP/IP,将 TCP/IP 汇聚于系统本身或共享库中最直接,这取消了直接读写网卡的需求,而调用系统或共享库中协议例程的接口就是 socket。创建像 /dev/sda 一样的设备文件 /dev/eth0 读写网卡不难,像 /dev/net/tun 注册物理网卡就行,但你读写它时要自己手工做协议的封装和解封装。转载 2025-08-28 17:27:03 · 248 阅读 · 0 评论 -
彻底明白ip地址,区分localhost、127.0.0.1和0.0.0.0
而在网络访问时,只有知道你在网络中的地址信息,才能将数据发送到你的设备上。是与具体的网络接口绑定的,比如以太网卡、无线网卡或者PPP/PPPoE拨号网络的虚拟网卡,想要正常工作都要绑定一个地址,否则其他设备就不知道如何访问它。,这样做不仅提供了一定程度的安全,也可以有效的减缓可用的IP地址空间的枯竭问题。与你现实地址不同的是,你的现实地址使用文字表示,而你在网络中的地址(来连接Internet,所以这个内网中的PC在Internet中显示的都是路由器的。而同样的,因为使用的是路由器中的。转载 2025-08-28 16:45:41 · 266 阅读 · 0 评论 -
127.0.0.1 与 localhost:需要知道的区别与用法
在开发与运维工作中,我们经常会遇到127.0.0.1和localhost,它们在很多情况下看似可以互换使用,但实际上有一些细微的区别。本文将通过多个示例,帮助理解它们的本质差异,以及它们在不同应用场景中的适用性。对比项127.0.0.1localhost是否是IP地址✅ 是❌ 不是(是域名)解析方式固定解析为本机依赖hosts文件或DNS解析影响MySQL连接使用TCP连接可能使用Unix Socket(Linux/macOS)是否影响CORS是是适用场景网络请求、数据库连接、跨域测试。转载 2025-08-28 16:44:34 · 3326 阅读 · 0 评论 -
TCP带外数据
传输层协议使用带外数据(out-of-band,OOB)来发送一些重要的数据,如果通信一方有重要的数据需要通知对方时,协议能够将这些数据快速地发送到对方.为了发送这些数据,协议一般不使用与普通数据相同的通道,而是使用另外的通道.linux系统的套接字机制支持低层协议发送和接受带外数据.但是TCP协议没有真正意义上的带外数据.为了发送重要协议,相应的,一个连接的流式套接口上的带外数据的工作原理也与此类似。下面列出的程序演示了一个简短的发送程序,他只可以传输一些小的字符串,然后停止发送带外数据。转载 2025-08-27 16:08:13 · 141 阅读 · 0 评论 -
TCP 带外数据(即紧急模式的发送和接受)
首先,我们需要知道的是数据分为两种,一种是带内数据,一种是带外数据。带内数据就是我们平常传输或者说是口头叫的数据。带外数据就是我们接下来讲的内容。许多的传输层都具有带外数据(也称为 经加速数据 )的概念,想法就是连接的某段发生了重要的事情,希望迅速的通知给对端。这里的迅速是指这种通知应该在已经排队了的带内数据之前发送。也就是说,带外数据拥有更高的优先级。带外数据不要求再启动一个连接进行传输,而是使用已有的连接进行传输。其中,UDP没有实现带外数据(是个极端哦~)TCP中telnetrloginftp。转载 2025-08-27 15:03:51 · 198 阅读 · 0 评论 -
syslog详解及配置远程发送日志和远程日志分类
完善的日志分析系统应该能够通过多种协议(包括syslog等)进行日志采集并对日志分析,因此日志分析系统首先需要实现对多种日志协议的解析。其次,需要对收集到的海量日志信息进行分析,再利用数据挖掘技术,发现隐藏再日志里面的安全问题。Syslog再UNIX系统中应用非常广泛,它是一种标准协议,负责记录系统事件的一个后台程序,记录内容包括核心、系统程序的运行情况及所发生的事件。转载 2025-08-25 19:04:59 · 344 阅读 · 0 评论 -
Linux C 获取主机网卡名及 IP 的几种方法
在进行Linux时,经常会需要获取本机IP地址,除了常规的读取配置文件外,本文罗列几种个人所知的编程常用方法,仅供参考,如有错误请指出。转载 2025-08-21 12:46:17 · 407 阅读 · 0 评论 -
linux service 怎么添加新 services
我们在日常使用Linux的过程中经常会用到service XXX start/stop/restart等命令对相关系统服务进行控制。(CentOS在版本7之前,CentOS7以及最新版Ubunt都是用systemctl来对系统服务进行管理,当然原来的还是可以用的=。=)看到公司的产品也是使用service开关系统服务的,查阅了相关资料,特在此总结一下。转载 2025-08-15 10:01:27 · 127 阅读 · 0 评论 -
linux守护进程之setsid理解
一个守护进程的父进程是init进程,因为它真正的父进程在fork出子进程后就先于子进程exit退出了,所以它是一个由init继承的孤儿进程。有必要先介绍一下Linux中的进程与控制终端,登录会话和进程组之间的关系:进程属于一个进程组,进程组号(GID)就是进程组长的进程号(PID)。//调用进程必须是非当前进程组组长,调用后,产生一个新的会话期,且该会话期中只有一个进程组,且该进程组组长为调用进程,没有控制终端,新产生的group ID 和 session ID 被设置成调用进程的PID。转载 2025-08-14 18:11:34 · 104 阅读 · 0 评论 -
【Linux】守护进程( Daemon)的定义,作用,创建流程
因此,通常的做法是让"/"作为守护进程的当前工作目录,这样就可以避免上述的问题,当然,如有特殊需要,也可以把当前工作目录换成其他的路径,如/tmp,改变工作目录的常见函数是chdir。为什么要再次fork呢,假定有这样一种情况,之前的父进程fork出子进程以后还有别的事情要做,在做事情的过程中因为某种原因阻塞了,而此时的子进程因为某些非正常原因要退出的话,就会形成僵尸进程,所以由子进程fork出一个孙进程以后立即退出,孙进程作为守护进程会被init接管,此时无论父进程想做什么都随它了。转载 2025-08-14 17:30:42 · 242 阅读 · 0 评论 -
03. 理解文件系统inode,superblock
好了,到现在为止从01. 数据在磁盘中的存储 和 02. 数据在flash的存储,我们理解了说在硬件层面上数据的存储,也理解了为了使得文件系统和底层的物理特性解耦合,我们在文件系统中设定了 "逻辑块" 的概念,并且使用 映射层 来实现从逻辑块和物理地址的映射,不论是基于磁盘还是基于flash。由此我们开始使用逻辑块的概念理解文件系统。基本围绕的话题有通过理解这些问题,基本了解文件系统的读写首先就是文件系统存储的数据实际上是两个部分纯数据区元数据区。转载 2025-08-01 14:42:57 · 132 阅读 · 0 评论 -
Linux内核之IO2:EXT文件系统详解(案例解析)
一切都是文件,Linux通过VFS中间层,支持多种文件系统,对APP统一接口;文件系统的本质是将用户数据和(管理数据的数据),组织成有序的目录结构。转载 2025-08-01 14:31:06 · 142 阅读 · 0 评论 -
ssh执行远程命令的坑
既然是终端分配导致的,那么根据ssh -T参数的含义,是否可以disable伪终端的分配呢?可以进行试验,执行如下命令。登入shell终端,手动执行上面的命令,一切ok。但是放到crontab中无法执行,重定向输出到文件,得到如下信息。直接在终端里执行shell命令,与crontab里执行,本质区别是二者环境变量的差异。使用 ssh -t -t 执行,发现crontab下运行正常,问题得以解决。注意到ssh命令中的-t参数,是用来控制给ssh分配伪终端。注意到上述问题出错信息,结合ssh -t参数的含义,转载 2025-02-27 12:48:23 · 288 阅读 · 0 评论 -
SSH The authenticity of host can‘t be established
需要在git仓库SSH key。转载 2025-02-27 12:47:28 · 1529 阅读 · 0 评论 -
【cmake教程】find_path、find_library、find_program
查找成功时,会向变量<LIBRARY_NAME>中添加成功找到头文件的库文件(包含完整路径),如果在某个路径下查找多个头文件,只要查找到多个头文件中的某一个,也算执行成功。find_path 一般用于在某个目录下查找一个或者多个头文件,命令的执行结果会保存到 <VAR> 中。查找成功时,会向变量<VAR>中添加成功找到头文件的目录,如果在某个路径下查找多个头文件,只要查找到多个头文件中的某一个,也算执行成功。和 find_path 一样,命令的执行结果会默认缓存到 CMakeCache.txt 中。转载 2025-01-23 21:55:30 · 364 阅读 · 0 评论 -
Linux命令`install`详解:不仅仅是安装工具
install在Linux的世界中,install命令是一个经常被提及但可能并不被广泛理解的实用工具。尽管它的名字让人误以为它只与安装软件包有关,但实际上,install命令在数据处理和分析中同样扮演着重要的角色。本文将带您深入了解install命令的用途、工作原理、主要特点、实际应用示例以及一些最佳实践。转载 2025-01-23 09:42:27 · 357 阅读 · 0 评论 -
Linux 命令详解:install 命令 - 复制并安装文件
install命令用于安装、升级软件,或者备份数据。install 的功能和cp命令类似,都可以将文件/目录拷贝到指定的位置。不同的是,install 允许你控制目标文件的属性,通常用于程序的 Makefile 文件(执行),使用它来将程序拷贝到目标(安装)目录。语法选项:为每个已存在的目的地文件进行备份。-b:类似--backup,但不接受任何参数。-C--compare:比较每对源文件和目标文件,在某些情况下,根本不修改目标-d:所有参数都作为目录处理,而且会创建指定目录的所有主目录。-D。转载 2025-01-23 09:41:26 · 1649 阅读 · 0 评论 -
linux进程---exec族函数(execl, execlp, execle, execv, execvp, execvpe)
linux函数查询在调用进程内部执行一个可执行文件。可执行文件既可以是二进制文件,也可以是任何Linux下可执行的脚本文件。exec函数族分别是:execl, execlp, execle, execv, execvp, execvpeexec函数族的函数执行成功后不会返回,调用失败时,会设置errno并返回-1,然后从原程序的调用点接着往下执行。path:可执行文件的路径名字。转载 2025-01-16 23:15:45 · 133 阅读 · 0 评论 -
让事件飞 ——Linux eventfd 原理与实践
目前越来越多的应用程序采用。转载 2025-01-05 20:55:08 · 377 阅读 · 0 评论 -
Linux定时函数timerfd的使用问题以及解决办法
本文讲述使用epoll+timerfd+eventfd的组合来解决一个程序退出问题,如果有不对的地方,欢迎指正!Linux定时函数timerfd的使用问题以及解决办法-CSDN博客。转载 2025-01-05 20:29:09 · 230 阅读 · 0 评论 -
timerfd简介
timerfd的由来比较简单,我们以往在使用定时器时,需要设定超时时间和超时后的回调函数,在定时器时间到来时,我们所注册的回调函数将会被执行。但是这种定时器很难被epoll等 I/O 多路复用机制接管。于是 Linux 下的timefd应运而生,使用timerfd创建出的定时器是基于文件描述符进行管理的,在达到超时时间时,描述符将置为可读,并可以从中读取到超时次数(启动定时器后或上次read之后的超时次数)。Linux 提供如下三个系统调用去使用timerfd。转载 2025-01-05 19:32:14 · 239 阅读 · 0 评论
分享