SuSE 完成启动后如何运行我的脚本?

Rad*_*dek 7 opensuse init.d

我希望我的服务器(通过咆哮)通知我(重新)启动完成。我有准备好发出咆哮的 php 文件,但我不知道应该在哪个文件中添加该行。

我需要添加什么文件才能在 SuSE 启动完成后运行它?

Pet*_*zel 8

(open)SUSE/etc/init.d/after.local用于此目的。只需将您需要执行的命令添加到该文件中即可。请注意,这适用于 SystemV init,但对于 systemd,这需要 AFAIK 需要以不同的方式解决。

  • 这是在初始机器启动后执行脚本,而不是初始化启动过程结束...... AFAIK (2认同)

Huy*_*ens 6

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 页: