我有一个在 jvm 上运行的 shell 脚本,它按照我编写的方式工作:sh /opt/bin/myshel.sh
我在 /etc/inti.d 中添加了一个 shell 脚本,其中包含以下详细信息:
#! /bin/sh
### BEGIN INIT INFO
# Provides: WSO2Services.sh
# Required-Start: $local_fs
# Required-Stop: $local_fs
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time
# Description: Enable service provided by daemon.
### END INIT INFO
/opt/bin/myshel.sh
我将此文件保存为“/etc/init.d”中的“myShell.sh”,并将其模式更改为可执行。我还曾经 sudo update-rc.d myShell.sh defaults
更新过“rc*.d”文件。问题是它在重启时没有运行。
答案1
在启动时执行某些操作的最简单方法是将其放入 /etc/rc.local。如果您想编写完整的 Sys V init 脚本,您可能希望使用现有脚本之一作为模板。您可能还想考虑使用 upstart 作业。
答案2
首先检查/etc/inittab
文件。有一行类似于id:2:initdefault
因此它将在运行级别启动2
(在我的情况下)。因此这将在启动时启动:/etc/init.d/rc 2
。因此所有以 S##somename(# 是十进制数字)开头的脚本/etc/rc2.d
都将运行。这些是指向 中脚本的符号链接/etc/init.d
。
因此,您的情况也应类似。如果您的运行级别为,2
则在 /etc/rc2.d/S##myshell.sh 中创建指向 中的脚本的符号链接../init.d/myshel.sh
。然后它将在启动期间运行。请记住,具有相同脚本级别( 后面的两位小数)的脚本S
并行运行。
我建议您检查 /etc/init.d 中的文件应该是什么样子,以及应该支持哪些参数。