【Linux系统线上操作替换文件的注意事项】 如果不了解Linux系统线上操作替换文件的话,很容易导致在cp时出现text file busy错误提示,所以掌握Linux系统线上操作替换文件是很重要的,下面随小编一起来了解下吧 。
最近发现很多哦鞥有不知道线上操作替换文件的要点 。所以系统之家的小编又整理了一下,以便你有个了解 。
线上替换一个正在运行进程的文件时(包括二进制、动态库、需要读取的资源文件等) 。应避免使用cp/scp操作 。而需要使用mv/rsync作为替代 。
原因:cp是将源文件截断然后写入新内容 。也就是说正在打开这个文件的进程可以立刻感知到修改 。修改文件内容很可能导致程序逻辑错误甚至崩溃 。而mv则是标记”删除“老文件,然后放一个新的同名文件过去 。也就是说老文件和新文件其实是两个不同文件(inode不同),只是名字一样而已 。正在打开老文件的进程不会受到影响 。如果进程使用了mmap打开某文件(比如载入so),如果目标文件被使用cp覆盖并且长度变小 。那么读取差额部分的地址时(在新文件中其实已经不存在了),会导致SIGBUS信号 。使进程崩溃 。
至于可执行文件本身 。倒是不怕cp导致崩溃 。。因为cp时会报”text file busy“ 。压根cp不了 。这时候也应该使用mv类操作 。替换完成后重启进程 。执行的就是新的可执行文件了 。
上面就是Linux系统线上操作替换文件的注意事项的介绍了,如果你在cp时提示text file busy的话,可能就是操作方面的错误了,应改为mv类操作 。
推荐阅读
- Linux系统lsof命令使用实例汇总
- Linux中如何使用history命令
- 如何测试Linux磁盘的读写速度
- 如何查看Linux挂载磁盘
- Linux下如何使用ftp命令
- 如何辨别Linux软链接和硬链接
- 如何在Linux上添加自定义字体
- Linux如何删除swap里的指定文件
- Linux函数库的创建方法
- Linux如何修改字符集