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

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

标题看起来像这样:

#!/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.

这个文件的原因是什么(它包含的内容不多),您通常会在其中放入哪些命令?什么是“多用户运行级别”? (我猜rc是“运行命令”?)

答案1

A运行级别是系统的一种状态,指示系统是否处于启动或重新启动或关闭过程中,或处于单用户模式,或正常运行中。传统的在里面程序通过切换到相应的运行级别来处理这些操作。 Linux 下,运行级别按照惯例:

  • S 启动时,
  • 0 关机时,
  • 6 重新启动时,
  • 1 在单用户模式下并且
  • 正常运行时为 2 至 5。

运行级别 2 到 5 称为多用户运行级别,因为它们允许多个用户登录,这与运行级别 1 不同,运行级别 1 仅适用于系统管理员。

当运行级别改变时,init运行rc 脚本(在具有传统 init 的系统上 - 还有其他选择,例如暴发户系统)。这些 rc 脚本通常启动和停止系统服务,并由发行版提供。

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

答案2

rc表示“运行控制”,

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

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

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

答案3

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

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


更新:根据下面的评论,不再推荐此答案。然而这个答案已经发布了几年在骨架被弃用之前,那个骨架仍然存在截至 2019 年 1 月,Debian 不稳定。

答案4

我主要用它来做两件事:

  1. 记录每次重新启动的日期和内核版本。一个简单的单行代码,可以轻松添加到系统中,无需任何填充...并且比运行uptimed.

  2. 恢复几年前 debian 中的旧 /etc/rc.boot/ 目录。我仍然有一些简单的脚本,不值得重写为 init.d 脚本(例如,一个用于将 dmesg 发送到 root 的 Q&D 脚本,另一个使用 hdaparm 来禁用空闲旋转和 blockdev 来设置读取)提前大小),我很高兴它们在所有其他启动时脚本之后运行。

例如

echo "$(date +%s),$(date),$(uname -a)"  >> /var/log/reboot.log

[ -d /etc/rc.boot ] && run-parts /etc/rc.boot

另外,我今年早些时候为 centos 和 debian 发行版编写了 /etc/rc.local 脚本,以便从 openstack(在http://169.254.169.254/)上获取 ec2 样式的元数据,以便虚拟机能够获取其 IP、主机名、ssh 密钥和其他特定于实例的信息。 cloud-init 已被移植到这些发行版中,因此脚本现在已过时。

相关内容