转自:http://www.jb51.net/LINUXjishu/153060.html
最近发现很多同学不知道线上操作替换文件的要点。所以又整理了一下。
线上替换一个正在运行进程的文件时(包括二进制、动态库、需要读取的资源文件等)。应避免使用cp/scp操作。而需要使用mv/rsync作为替代。
原因:cp是将源文件截断然后写入新内容。也就是说正在打开这个文件的进程可以立刻感知到修改。修改文件内容很可能导致程序逻辑错误甚至崩溃。而mv则是标记”删除“老文件,然后放一个新的同名文件过去。也就是说老文件和新文件其实是两个不同文件(inode不同),只是名字一样而已。正在打开老文件的进程不会受到影响。如果进程使用了mmap打开某文件(比如载入so),如果目标文件被使用cp覆盖并且长度变小。那么读取差额部分的地址时(在新文件中其实已经不存在了),会导致SIGBUS信号。使进程崩溃。
至于可执行文件本身。倒是不怕cp导致崩溃。。因为cp时会报”text file busy"。压根cp不了。这时候也应该使用mv类操作。替换完成后重启进程。执行的就是新的可执行文件了。
相关推荐
### Linux 进程管理之可执行文件的加载与运行 #### 概述 在 Linux 系统中,可执行文件的加载与运行是一项基础而重要的功能。本篇内容主要聚焦于这一过程,通过分析 `execve` 系统调用及其相关函数,深入探讨 Linux...
minio 的二进制 可执行文件,适用于linux系统,加权限带参数执行即可
在Linux环境中,当你尝试执行一个可执行文件时,如果出现"No such file or directory"的错误提示,这通常意味着系统无法找到你指定的文件,或者文件的路径不正确。然而,有时候即使文件存在于正确的路径下,这个错误...
(8)copy …: 拷贝文件,除支持模拟Linux文件系统内部的文件拷贝外,还支持host文件系统与模拟Linux文件系统间的文件拷贝。 (9)del …: 删除文件:删除指定文件,不存在时给出出错信息。 (10)check:检测并恢复文件...
修改linux进程可打开的文件数的限制open files linux中一切都是文件 默认linux一个进程可打开1024个文件 大并发需要达到5万个文件描述符FD,你必须修改该参数值才行
linux 系统级别的能够打开的文件句柄的数file-max命令 Linux 系统中,file-max 命令用于设置系统级别的能够打开的文件句柄的数量,这个值决定了 Linux 内核可以分配的文件句柄的最大数量。当系统中的文件句柄数量...
文件描述符是Linux系统中对打开文件的一种抽象表示,每个进程都有一个文件描述符表,用于管理其打开的文件或套接字等资源。本示例代码将探讨如何在两个进程之间传递文件描述符,以实现数据共享。 首先,我们来看`...
Linux操作系统进程管理是操作系统课程中的重要组成部分,它涉及到操作系统如何管理和调度系统中的多个并发执行的任务。在Linux系统中,进程是资源分配的基本单位,而进程描述符(也称为进程控制块,PCB)是记录进程...
- **/proc/[pid]/exe**: 是一个符号链接,指向进程执行的可执行文件的路径。 - **/proc/[pid]/fd**: 目录包含进程打开的文件描述符。 proc文件系统对于监控系统性能、调试程序、优化系统配置等方面都有极大的帮助...
### Linux运维中的常见故障排查与解决方法 #### 一、Shell脚本不执行 **问题描述**:在实际工作中,可能会遇到这样的情况:一个看似正常的Shell脚本在Linux环境下无法执行,报出“:bad interpreter: No such file ...
4. **监控中心策略**:为了更好地监控系统的运行状态,可以增加更多的监控策略,如CPU使用率、磁盘I/O、网络流量等关键指标的实时监控,并设定阈值报警机制,以便及时发现并解决问题。 通过以上步骤和技术点的学习...
可运行进程实际是仅等待 CPU 资源的进程,如果某个进程在等待其他资源,则该进程不可运行。 二、 Linux 内核的整体结构 Linux 内核由五个主要的子系统组成:进程调度 (SCHED) 、内存管理 (MM) 、虚拟文件系统 ...
Linux 下执行 .sh 文件的方法和语法 Linux 下执行 .sh 文件的方法和语法是 Linux 环境下 shell 使用的重要方面。下面将详细介绍 Linux 下执行 .sh 文件的方法和语法。 执行 .sh 文件的方法 在 Linux 下执行 .sh ...
在Windows操作系统中,可执行文件(.exe)的详细信息包含了许多元数据,例如应用程序的图标、文件描述、文件说明、文件版本、产品版本、产品名称以及版权等。这些信息通常用于标识软件的作者、版本及版权信息,帮助...
Linux操作系统启动时,内核需要加载并初始化一系列组件和服务,其中最关键的一个步骤就是挂载根文件系统(Root File System, 简称 RootFS)。根文件系统包含了系统运行所需的最基本文件和目录结构,是整个系统的基础...
总之,这个压缩包提供的资源可以帮助我们全面掌握Linux系统下,如何使用C语言进行多进程文件读写,并理解进程同步与通信的各种方法。通过实践这些知识,不仅可以增强对操作系统底层的理解,也有助于提升解决实际问题...