我希望我的服务器(通过咆哮)通知我(重新)启动已完成。我已经准备好发出咆哮的 php 文件,但我不知道应该在哪个文件中添加该行。
我需要在什么文件中添加我的代码,以便它仅在 SuSE 启动完成后运行?
答案1
(open)SUSE 用于/etc/init.d/after.local
此目的。只需将需要执行的命令添加到该文件中即可。请注意,这在 SystemV init 中工作得很好,但在 systemd 中,这需要 AFAIK 需要以不同的方式解决。
答案2
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
您可以在 中找到典型的模板(带有大量解释性注释)/etc/init.d/skeleton
。该模板包含挂钩 PHP 脚本所需的代码。您将看到一个开始案例,您必须调用 PHP 脚本。
我在标头中丢弃了许多可选参数,因为您似乎不需要它们。
重要的
至少使用 case 语句的框架很重要(参见初始化脚本操作),并至少实现起始案例。在开始的情况下,这是调用脚本的地方。
您可以在这里找到一个小脚本示例,该示例将在引导结束时调用:看我的要点。我为默认停止设置了无效的运行级别,但不知何故,在关闭期间仍然调用该脚本。无论如何,在关闭时执行“停止”情况下的代码,而不是执行“启动”情况下的代码。
编写脚本后,将其复制,/etc/init.d
假设您的 init 脚本名为 boot-notification,那么您将执行以下操作(以 root 身份):
chown root:root boot-notification
chmod 0750 boot-notification
mv boot-notification /etc/init.d/
然后需要将脚本“注册”到init系统中。您将使用该insserv
命令(再次以 root 身份)或者可以使用 YaST:
insserv boot-notification
然后,您可以通过查看每个初始化级别来进一步检查该脚本是否是最后运行的脚本之一。如果您只选择运行级别 3,那么您可以这样做:
ls -l /etc/init.d/rc3.d/S*
这将返回初始化脚本的链接列表。脚本的链接应该位于列表的末尾(或附近)。
注意:如果您想尝试以更动态的方式编写初始化脚本,我建议您阅读以下两页:
答案3
对于 OpenSUSE 12.2 (Mantis),脚本对于“after local”应该是/etc/init.d/after-local
,你可能需要通过systemctl启用它,就像这样......
到使能够/etc/init.d/after-local,
systemctl enable after-local.service
到检查状态/etc/init.d/after-local,
systemctl status after-local.service
答案4
我发现有两种方法可以做到这一点:
- 首先也是最重要的是打开终端并输入:
sudo crontab -e
然后输入
@reboot sudo <command_to_execute_at_startup>
- 其次你可以创建一个服务文件使用这种方法