我需要在只读的已安装的ext4文件系统上更新正在运行的守护程序。设备已重新读写,如果我修改了守护进程(mv,cp),进程会继续运行,但文件描述符会将其状态更改为"已删除"。
现在,再也无法重新安装文件系统只读(设备或资源忙),直到守护程序进程被终止并且描述符已被释放。
有没有办法在修改正在运行的进程的二进制文件时保持文件描述符有效?
答案 0 :(得分:0)
如果进程打开了一个用于从只读文件系统读取的文件,则文件系统将被重新读写并删除文件,然后您将已打开的文件描述符写入已删除的文件。该进程仍然可以访问该文件的原始内容,但Linux以某种方式将此视为不允许重新装入只读的原因。
如果不删除原始二进制文件,只会写入新内容,您将没事。调用'cp new-binary old-binary'不会阻止remount成为只读。 'cat new-binary> old-binary'也是安全的。 但是,如果使用'mv new-binary old-binary'或'rm old-binary;升级二进制文件,您将遇到“mount:/ somepath is busy”错误; cp new-binary old-binary'。