在机器启动时运行 sh 文件

在机器启动时运行 sh 文件

我对 Linux 很陌生,想知道如何在计算机启动时启动 .sh 文件。基本上,我有一台装有 Linux 操作系统的服务器机器,并且想在系统重新启动/崩溃时运行一些 jboss 应用程序

S99jBossServers在 rc2.d 中添加了链接/etc/rc.d/init.d/jBossServers.sh并已授予完全权限(777)jBossServers.sh

中的内容jBossServers.sh如下

#!/bin/sh
#
# chkconfig: 2345 80 30 
# description: 
#

RETVAL=0

start () {
    /root/batch/startSikkimCA.sh
    /root/batch/startSikkimSp.sh
}

stop () {
    /root/batch/stopSikkimCA.sh
    /root/batch/stopSikkimSp.sh
    RETVAL=$?
}
case "$1" in
    start)
        start
        ;;
    stop)
        stop
        ;;
    restart)
        start
        ;;
    *)
        start
;;
        RETVAL=$?
esac
exit $RETVAL

我不确定它是否正确,但其中引用了两条路径

开始()和停止()

是正确的,但应用程序仍然无法在计算机重新启动时启动。

答案1

看着在里面这是传统的进程启动器,并在/etc/init.d/etc/rc1.d等下运行脚本/etc/rc.local,这可能是您想要的位置。

一些发行版使用暴发户相反 - 如果是这样,请查看文档。

在任何一种情况下,确切的路径可能会因发行版而异,但这应该足以让您开始。

答案2

尝试检查您的脚本是否正在启动(例如,但将其放入touch /var/tmp/startup.script其中)。启动期间脚本中的所有命令都在搜索补丁中吗?

运行级别 2 对我来说看起来很不寻常。对于没有 GUI 的 Linux,3 应该是正常的。您使用什么发行版和版本?

答案3

/etc/inittab寻找像这样的线id:3:initdefault:。该数字可能是 3 或 5,但也可能是 2 或 4。该行中的数字是默认运行级别。它很可能不是 2,因此 rc2.d 中的脚本将不会运行。

将您的脚本放入与该行中的数字匹配的 rcN.d 目录中initdefault

原则上, rc.local 是一个更好的选择,但是 rc.local 因发行版而异(有时它是一个目录,有时它是一个脚本,有时它根本没有设置),因此在不知道您的发行版的情况下更容易你把它放在正确的运行级别了吗?您可以尝试man rc.local看看您的系统上显示了什么。如果您的系统支持 rc.local 作为目录,那么将您的脚本放在那里,不用担心运行级别。

另外,请确保您的脚本由 root 用户拥有,并且具有 755(如果您希望任何人都能够运行它)或 744 的权限。

答案4

添加启动脚本

此方法适用于 Red Hat、Fedora、Ubuntu(安装包 chkconfig 和服务)、Suse。

您应该将脚本复制到 /etc/init.d 中(它是正确的目录或指向正确目录的链接,因此它的工作方式相同)

sudo cp jBossServers.sh /etc/init.d/
sudo chmod 0755 /etc/init.d/jBossServers.sh

然后需要将其添加到系统启动进程中。不要创建所有必需的链接,而是使用 chkconfig (首先在 Ubuntu 上安装软件包)

sudo chkconfig add jBossServers.sh

现在阅读您的脚本标题,该脚本已经包含 chkconfig rgarding 运行级别和优先级的信息。所以你很好。下次重新启动时 JBoos 将启动。

但你可以尝试现在就开始

sudo service jBossServers.sh start

注意:如果您的系统抱怨找不到 chkconfig 或服务,请尝试在之前使用 /sbin/ 调用 then 。例子

sudo /sbin/chkconfig add jBossServers.sh
sudo /sbin/service jBossServers.sh start

相关内容