如何列出阻止/重新挂载为只读的文件?
A)fuser
可以在psmisc
包装中找到;这是一个用例,我发现fuser
它比&更有用lsof
。
# fuser -v -m / 2>&1 | grep '[Ff]r.e'
这将显示所有在/上打开文件以供读取(f)和写入(F)的进程。阻止/重新挂载为只读的文件是那些已打开以进行写入(F)的文件。
杀死正在运行的可执行文件,其中打开了用于写入的根目录文件的进程,即
# for fupid in $(fuser -v -m / 2>&1 | grep Fr.e | awk '{print $2}'); do kill $fupid; done
这是systemd
带有警告的注释之上的内容。如果systemd
是,init
那么fuser
将会看到它,并且还有其他注意事项。通过systemd
运行,它可以(重新)启动背后的进程,即使它们只是被识别和杀死fuser
。 systemd
比传统的要先进得多sysvinit
。
B)说明中的UPDATE表示系统仅具有... init
并且getty
仍在运行 ...
我看到评论说系统未使用systemd
,正在使用init
。顺带一提,systemd
是 init
。注释没有明确说sysvinit
,所以我假设有问题的系统可以使用默认拉伸systemd
的init
。或其他偶然systemd
发现使用Stretch's的人发现此部分很有用。
根据Debian Wiki,
系统初始化过程由init守护程序处理。在squeeze和早期版本中,该守护进程由sysvinit软件包提供,并且不支持任何替代方法。在wheezy中,默认的init守护进程仍然是sysvinit
,但是systemd的“技术预览”可用。在jessie和Stretch中,默认的初始化系统是systemd
,但是支持切换到sysvinit。
从jessie开始,仅完全支持systemd。sysvinit大部分受支持,但是提供sysvinit启动脚本不需要Debian软件包。runit也已打包,但未获得与其他级别相同的测试和支持,并且当前不作为PID 1支持。
随着systemd
运行,也有应采取腾出/以便它可以没有问题地重新安装一些额外的步骤。
可能system.slice
正在为systemd-journald.service
或systemd-udevd.service
(两者都具有套接字依赖项)保存打开的文件。或者,如果NetworkManager
正在运行,可以重生dhclient
其写入契约,以在/ var / ...(在/ var /并非总是自己的设备)等 fuser
可能会发现与你杀了dhclient
,但NetworkManager
启动时,它马上站起来。
道德是,很多事情都是自动化的,可能会“ /”(甚至更是如此systemd
)。
可以肯定的是,如果可行,则systemd
运行级别1 的等效项由匹配rescue.target
(并且runlevel1.target
是的符号链接rescue.target
)。
1)首先将系统隔离到 rescue.target
# systemctl isolate rescue.target
它会提示您输入root密码。按照屏幕上的说明进行操作。
2)在救援壳上,找出要/的内容。
# systemctl show -p Wants /
通常情况下,它的system.slice
; 停止一切想要的。例如
# systemctl stop system.slice
3)在这一点上,重新装入应该不报告mount: / is busy
和mount -o remount,ro /
应工作。如果不是,请使用再次检查fuser
。
4)FWIW;我还看到了umount
何时/如果将另一个设备安装在另一个安装的子目录(即嵌套安装)上而失败的情况。例如,umount /
如果/ var /或/ boot /在另一台设备上(并已挂载),则失败。虽然mount -o remount,ro /
在这种情况下仍然可以使用。
lsblk
有助于可视化嵌套的安装座。
为什么lsof + L1不再列出已取消链接的打开文件?
因为它们不可用(套接字或大多数FIFO和管道),所以它们不再打开文件(父进程关闭了文件描述符),或者它们(仍然)的链接数大于1。
man lsof(8)的详细信息...
+ | -L [l]
此选项启用('+')或禁用('-')文件链接计数的列表(如果有)-例如,套接字,大多数FIFO和管道不可用。
如果指定+ L而没有后面的数字,则将列出所有链接计数。如果指定-L(默认值),则不会列出任何链接计数。
当+ L后跟一个数字时,只会列出链接数少于该数字的文件。(-L后面不能有数字。)格式为“ + L1”的规范将选择已取消链接的打开文件。表单的规范+aL1 <file_system>
将在指定的文件系统上选择未链接的打开文件。
w
或,或在的输出中查找。不过,我无法提供详尽的清单。您可能还需要安装needrestart软件包。u
FD
lsof
F
fuser -vm /