如何列出阻止/重新挂载为只读的文件?
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软件包。uFDlsofFfuser -vm /