标头看起来像这样:
#!/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
是“运行命令”吗?)
标头看起来像这样:
#!/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
是“运行命令”吗?)
Answers:
甲运行级别是系统的状态,指示是否它是在启动或重新引导或关闭,或在单用户模式或正常运行的过程。传统的init程序通过切换到相应的运行级别来处理这些动作。在Linux下,运行级别按惯例是:
运行级别2到5被称为多用户运行级别,因为它们允许多个用户登录,而运行级别1仅适用于系统管理员。
当运行级别更改时,init将运行rc脚本(在具有传统init的系统上,还有其他选择,例如Upstart和Systemd)。这些rc脚本通常启动和停止系统服务,并由发行版提供。
该脚本/etc/rc.local
供系统管理员使用。传统上,它是在所有正常系统服务启动之后,切换到多用户运行级别的过程结束时执行的。您可以使用它来启动自定义服务,例如安装在中的服务器/usr/local
。大多数安装不需要/etc/rc.local
,仅在少数需要的情况下提供。
rc.local
由于这个原因不适合使用。由于最初的问题是关于Debian的,因此此评论可能与OP无关。
rc.local
传统上是最后一次运行,但是当他们切换到基于依赖项的系统时,我看到FreeBSD停止这样做。请注意,即使在rc.local
之后调用/etc/rc.d/sshd
,也无法完美运行:rc.local
将在sshd
进程启动后立即调用,也可以在sshd
开始侦听网络之前调用它(但我们会在十分之一秒的时间进行讨论)最典型的情况下)。
iptables-apply /root/iptables
。我正在找出问题所在(等待下一次重新启动)。但是,如果您有任何建议,我会很高兴。
rc
表示“运行控制”,
该multiuser
运行级别将被定义为网络可用,因此到服务器的连接可以代替硬线连接控制台的使用这些服务进行所在的级别。
请注意,服务器通常由服务处理器(使用各种名称)进行管理,这些处理器确实支持网络连接,并且反过来又好像您确实有一个硬连线的控制台。
对于rc.local
文件,这是方便的操作,允许您指定要启动的所有“本地”(特定于站点的)对象(守护程序和/或启动一次脚本)。您可以选择使用此范例,也可以适当地使用启动/停止脚本实际填充'/etc/init.d'。
我主要将其用于两件事:
记录每次重新启动的日期和内核版本。一个简单的单行代码,可以轻松地将其添加到系统中,而不会造成任何麻烦……并且比运行时更容易破坏启动历史记录uptimed
。
恢复几年前曾经在debian中使用的旧/etc/rc.boot/目录。我仍然有一些简单的脚本,不值得将其重写为init.d脚本(例如,将Dmesg邮寄到root的Q&D脚本,以及另一个使用hdaparm禁用空闲spindown和blockdev设置为read-的脚本。大小),我很高兴能在所有其他启动时脚本之后运行它们。
例如
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上获取ec2风格的元数据(在上http://169.254.169.254/
),以便VM可以获取其IP,主机名,ssh密钥和其他特定于实例的信息。 。此后已将cloud-init移植到这些发行版,因此脚本现在已过时。
Debianrc.local
上的文件主要是为了与非初始样式系统兼容。您不应该使用它。
相反,建议您/etc/init.d/Skeleton
更改运行级别时将要复制的内容复制到新的初始化脚本中,然后使用inserv
启用它。
更新:根据下面的评论,不再建议此答案。但是,这个答案是在骨架淘汰之前的几年发布的,并且直到2019年1月,骨架仍存在于 Debian不稳定环境中。
/etc/init.d/skeleton
不是这样。