最近发现很多同学不知道线上操作替换文件的要点。所以又整理了一下。
线上替换一个正在运行进程的文件时(包括二进制、动态库、需要读取的资源文件等)。应避免使用cp/scp操作。而需要使用mv/rsync作为替代。
原因:cp是将源文件截断然后写入新内容。也就是说正在打开这个文件的进程可以立刻感知到修改。修改文件内容很可能导致程序逻辑错误甚至崩溃。而mv则是标记”删除“老文件,然后放一个新的同名文件过去。也就是说老文件和新文件其实是两个不同文件(inode不同),只是名字一样而已。正在打开老文件的进程不会受到影响。如果进程使用了mmap打开某文件(比如载入so),如果目标文件被使用cp覆盖并且长度变小。那么读取差额部分的地址时(在新文件中其实已经不存在了),会导致SIGBUS信号。使进程崩溃。
至于可执行文件本身。倒是不怕cp导致崩溃。。因为cp时会报”text file busy"。压根cp不了。这时候也应该使用mv类操作。替换完成后重启进程。执行的就是新的可执行文件了。
linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方法
2019-11-15 17:11snooda Linux
这篇文章主要介绍了linux系统更新正在运行进程的可执行文件需要注意的text file busy的原因及解决方案,需要的朋友可以参考下
延伸 · 阅读
- 2024-11-03晨报:《龙腾4》Steam“多半好评” 《Apex》不再支
- 2022-03-11在Linux下通过命令行打包Android应用的方法
- 2022-03-10这个 Linux 图形计算器让数学很有趣
- 2022-03-10Linux下部署springboot项目的方法步骤
- 2022-03-10linux中把.c的文件编译成.so文件
- 2022-03-10Linux服务器下安装配置Nginx的教程
- Linux
利用Linux高级IO实现非阻塞和多路复用IO
高级IO(Advanced IO)是一种在Linux系统中进行非阻塞和多路复用IO操作的技术。这种技术可以提高系统的并发处理能力,提升IO性能,并减少资源的消耗。下面...
- Linux
在 Linux 上使用 gImageReader 从图像和 PDF 中提取文本
gImageReader 是一个 GUI 工具,用于在 Linux 中利用 Tesseract OCR 引擎从图像和 PDF 文件中提取文本。...
- Linux
深入解析Linux下的磁盘缓存机制与SSD的写入放大问题
这篇文章主要介绍了深入解析Linux下的磁盘缓存机制与SSD的写入放大问题,设计到Linux的内核及线程等部分深度的知识,需要的朋友可以参考下...
- Linux
Linux下semop等待信号时出现Interrupted System Call错误(EINTR)解决方法
本篇文章是对在Linux下semop等待信号时出现Interrupted System Call错误(EINTR)的解决方法进行了详细的分析介绍,需要的朋友参考下...
- Linux
Linux折腾记(二十二):虚拟机体验之Xen篇——令人脑洞大开的
这篇文章主要介绍了Linux折腾记(二十二):虚拟机体验之Xen篇——令人脑洞大开的奇异架构,在虚拟机领域,Xen具有非常高的知名度,其名字经常在各类文章...
- Linux
linux命令大全之telnet命令详解(linux远程登录)
telnet命令通常用来远程登录。telnet程序是基于TELNET协议的远程登录客户端程序。Telnet协议是TCP/IP协议族中的一员,是Internet远程登陆服务的标准协议和主要...
- Linux
Linux系统中的访问控制:hosts.deny & hosts.allow
背景介绍 hosts.deny和hosts.allow是Linux系统中用于访问控制的重要工具,起源于TCP Wrapper软件,旨在提供对网络服务的访问控制。这两个文件在系统安全性方面...
- Linux
Linux系统一些重要的学习方法及路线图详解
对于Linux系统来说;一些学习方法及路线图是非常值得学习的,今天小编就为大家分享一下Linux系统一些重要的学习方法及路线图详解;有需要的朋友一起去...