删除未使用的初始化脚本

删除未使用的初始化脚本

在我的 Debian 服务器上,我没有网络共享(NFS、SMB,...)。我正在尝试优化和简化我的启动过程。删除以下初始化脚本可以吗?

/etc/rcS.d/S12mountnfs.sh
/etc/rcS.d/S13mountnfs-bootclean.sh

AFAICT,只有在安装 NFS 时才需要这些。但是,我不确定该mountnfs-bootclean.sh脚本的目的是什么。

无论如何,删除这两个脚本是否安全,即:

chkconfig mountnfs-bootclean.sh off
chkconfig mountnfs.sh off

答案1

我永远不会彻底删除 init.d 脚本......我要做的就是卸载您不再需要的软件包。删除软件包后,应删除 init.d 文件。

软件包删除可以满足您的简化需求,并可能删除一些所需的磁盘空间。

答案2

删除这些脚本并不会真正优化任何东西。他们所花费的时间可以忽略不计。

这些*-bootclean.sh脚本会清理必须或不应该在重新启动后继续存在的文件:/var/run/var/lock/tmp等中的文件。在带有 SysVinit 的 Debian 中,存在三个这样的脚本:

  • checkroot-bootclean.sh在挂载根文件系统后立即运行(这可以删除在将很快成为挂载点的目录下创建的虚假文件,例如/run和 潜在的/tmp
  • mountall-bootclean.sh在安装本地文件系统后运行(包括例如本地单独的/tmp/var- 或 tmpfs 文件系统,但这些文件系统没有任何需要清理的内容)
  • mountnfs-bootclean.sh在挂载远程文件系统(包括例如/var通过 NFS)后运行。

禁用mountnfs.shmountnfs-bootclean.sh不会损害您的系统。然而,要确定这一点,您需要仔细研究它们。此外,这仅适用于您永远不会将 NFS 文件系统放入 fstab 的假设。如果你知道这是真的,那么我非常希望你能将你的占卜能力传授给我。如果您只是相信这是真的,那么您需要考虑您的信念在某些时候被证明是没有根据的风险。

您在发行版中更改的每个默认值都会使您的系统有所不同,因此部分文档不再适用,其他人进行的测试可能不再适用,您可能获得的支持可能会失效,等等。对默认值的任何更改设置本质上是一个额外的复杂性,因此只有在从中获得实际好处时才应该执行。您关于删除这些脚本将简化启动过程的断言是错误的,因为您没有考虑到这一点。

答案3

我没有看到删除这些初始化脚本有任何性能提升。该函数do_wait_async_mount()解析 fstab,如果没有找到 nfs 文件系统,它什么也不做。在我的系统上执行脚本只需要不到半秒的时间,而且也没有任何 NFS 挂载:

➜  ~  sudo time /etc/init.d/mountnfs-bootclean.sh start 
0.00user 0.00system 0:00.11elapsed 0%CPU (0avgtext+0avgdata 1400maxresident)k
24inputs+0outputs (0major+1857minor)pagefaults 0swaps
➜  ~  sudo time /etc/init.d/mountnfs.sh start 
0.00user 0.00system 0:00.07elapsed 10%CPU (0avgtext+0avgdata 1400maxresident)k
0inputs+0outputs (0major+1866minor)pagefaults 0swaps

您可以删除它们,但性能提升并不值得付出努力。

答案4

为了解决简单性问题:

  • 删除由最小发行版或软件包安装创建的脚本通常是一个坏主意 - 您不知道哪些进程可能依赖它们。
  • 删除包裹创建这些文件的人可能是完全明智的。找出答案:

    yum provides /etc/rcS.d/S12mountnfs.sh /etc/rcS.d/S13mountnfs-bootclean.sh
    
  • 如果您无法使用 Debian 实现所需的简单性,或者您想了解有关引导过程如何工作的更多信息,您可能需要尝试类似的准系统发行版

相关内容