/etc/rc.local 的用途和典型用法

Ema*_*erg 87 startup debian configuration

标题如下所示:

#!/bin/sh -e
#
# rc.local - executed at the end of each multiuser runlevel
#
# Make sure that the script will "exit 0" on success or any other
# value on error.
Run Code Online (Sandbox Code Playgroud)

这个文件是什么原因(内容不多),一般都放什么命令?什么是“多用户运行级别”?(我猜rc是“运行命令”?)

Gil*_*il' 80

一个运行级别是系统的一种状态,表示它是处于开机或重启或关机的过程中,还是处于单用户模式,还是正常运行。传统的init程序通过切换到相应的运行级别来处理这些操作。在 Linux 下,按照惯例,运行级别

  • S 启动时,
  • 0 关闭时,
  • 6 重启时,
  • 1 在单用户模式和
  • 2 到 5 正常操作。

运行级别 2 到 5 被称为多用户运行级别,因为它们允许多个用户登录,而运行级别 1 只供系统管理员使用。

当运行级别改变时, init 运行rc 脚本(在具有传统 init 的系统上 - 有替代方案,例如UpstartSystemd)。这些 rc 脚本通常启动和停止系统服务,并且由发行版提供。

该脚本/etc/rc.local供系统管理员使用。它传统上在所有正常系统服务启动后,在切换到多用户运行级别的过程结束时执行。您可以使用它来启动自定义服务,例如安装在/usr/local. 大多数安装不需要/etc/rc.local,它是为少数需要的情况提供的。

  • 我今天发现在当前的 FreeBSD 上,rc.local 可能很早就被执行了。绝对不是在所有正常的系统服务都启动之后。当 sshd 可以访问无头机器时,我想要发出哔哔声,而 `rc.local` 不适合这个原因。由于最初的问题是关于 Debian 的,因此该评论可能与 OP 无关。 (2认同)

JRF*_*son 16

rc 表示“运行控制”,

multiuser运行级别将被定义为网络可用,因此到服务器的连接可以代替硬连线的控制台连接使用这些服务进行所在的级别。

请注意,服务器通常由服务处理器(以各种名称命名)管理,它支持网络连接,反过来就像您确实有一个硬接线控制台一样。

至于rc.local文件,这可以方便您指定要启动的所有“本地”(特定于站点)对象(守护进程和/或启动一次脚本)。您可以选择使用这种范例,或者适当地使用启动/停止脚本实际填充“/etc/init.d”。


bah*_*mat 5

Debianrc.local上的文件主要是为了与非 init 风格的系统兼容。你不应该使用它。

相反,建议您将/etc/init.d/Skeleton更改运行级别时想要发生的任何事情复制到新的 init 脚本,然后使用inserv它来启用它。


更新:根据下面的评论,不再推荐此答案。然而,这个答案是在骨架弃用前几年发布的,截至 2019 年 1 月,该骨架仍然存在于 Debian 不稳定版中。