在 Ubuntu 启动时运行 shell 脚本

在 Ubuntu 启动时运行 shell 脚本

我有一个在 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 中的文件应该是什么样子,以及应该支持哪些参数。

相关内容