Linux系统更新运行过程中需要执行的可执行文件的文本文件总线。
最近,许多学生不知道在线操作取代文件的关键点,于是又做了一遍。
一个运行文件的在线更换(包括二进制文件,动态库,资源文件被读取,等)。CP / SCP操作应该避免。你需要使用MV / rsync作为替代。
原因:CP是将源文件和写新的内容,这是打开文件的过程可以被认为是修改。修改一个文件的内容可能会导致逻辑错误或程序甚至崩溃。和MV的标记;旧文件删除;,然后把一个新的同名文件在过去。也就是说老的文件和新文件其实是两个不同的文件(inode不同),一样的名字。打开旧文件的过程将不受影响。如果进程使用mmap来打开一个文件(如加载等),如果目标文件被覆盖和CP的长度小。当差异部分的地址读取(在新的文件,它不存在),这将导致To SIGBUS信号。使程序崩溃。
对于可执行文件本身。它不怕CP导致崩溃。因为CP会报告;文本文件忙。根本不是CP的MV类操作也应该用在这个时候。启动过程完成后更换新的可执行文件执行。