我希望我的服务器(通过咆哮)通知我(重新)启动完成。我有准备好发出咆哮的 php 文件,但我不知道应该在哪个文件中添加该行。
我需要添加什么文件才能在 SuSE 启动完成后运行它?
(open)SUSE/etc/init.d/after.local
用于此目的。只需将您需要执行的命令添加到该文件中即可。请注意,这适用于 SystemV init,但对于 systemd,这需要 AFAIK 需要以不同的方式解决。
Suse Linux Enterprise 11 SP2(和 openSUSE ?)的新语法
最好的方法是创建一个 shell 脚本来调用您的 PHP 脚本。此 shell 脚本的标题中应包含以下注释:
#!/bin/sh
### BEGIN INIT INFO
# Provides: nothing
# Required-Start: $all
# Default-Start: 3 5
# Default-Stop: 4
# Short-Description: single_line_description
# Description: multiline_description
### END INIT INFO
Run Code Online (Sandbox Code Playgroud)
您可以在/etc/init.d/skeleton
. 此模板包含挂钩 PHP 脚本所需的代码。您将看到一个启动案例,您必须在其中调用 PHP 脚本。
我在标题中丢弃了许多可选参数,因为您似乎不需要它们。
重要 重要的
是至少使用 case 语句的框架(参见init scripts actions),并且至少实现 start case。在开始情况下,这是调用脚本的地方。
您可以在此处找到一个将在引导结束时调用的小脚本示例:请参阅我的 Gist。我为 Default-Stop 设置了一个无效的运行级别,但不知何故在关机期间仍然调用脚本。无论如何,执行“停止”情况下的代码,而不是关闭时“开始”情况下的代码。
编写脚本后,将其复制以/etc/init.d
假设您的 init 脚本称为引导通知,然后您将执行以下操作(以 root 用户身份):
chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/
Run Code Online (Sandbox Code Playgroud)
然后你需要在init系统中“注册”脚本。您将使用该insserv
命令(再次以 root 身份)或者您可以使用 YaST:
insserv boot-notification
Run Code Online (Sandbox Code Playgroud)
然后,您可以通过查看每个 init 级别来进一步检查脚本是否是最后运行的脚本之一。如果你只选择了运行级别 3,那么你可以这样做:
ls -l /etc/init.d/rc3.d/S*
Run Code Online (Sandbox Code Playgroud)
这将返回一个指向 init 脚本的链接列表。脚本的链接应位于列表的末尾(或附近)。
注意:如果您想使用更动态的方式编写 init 脚本,我建议您阅读以下 2 页: