我有一个基于 Debian 的操作系统,我正在创建一个支持自我升级的程序。该程序在系统级作为 systemd 服务运行。
我在更新软件时遇到问题,这实际上意味着替换文件/opt/myApp/
夹(我所有应用程序代码的主页)上的某些文件并替换 systemd 服务单元文件/etc/systemd/system/my_service.service
。在此之后,我运行systemctl daemon-reload
,systemctl enable my_service
并且systemctl restart
按预期工作。但是,如果在此之后突然断电,复制到的新文件/opt/myApp/
和新服务文件在文件系统中的大小将变为 0,这当然会导致我的程序失败并且服务进入屏蔽状态。如果我在安装后重新启动系统,“危险”就会消失,系统可以处理突然断电而不会影响我关心的文件。
这是某种文件系统损坏问题吗?如何在不重启系统的情况下防止此问题发生?此问题的根源是什么?