抱歉,如果这是一个基本问题,我对 Ubuntu 和 Linux 总体上还不太熟悉。
我希望将应用程序服务器从 JBoss EAP 5 升级到 Jboss EAP 6,之前我们已经向客户发送了在启动时运行 JBoss EAP 5 的说明,因此我希望对 JBoss EAP 6 执行同样的事情。我已让它以一种方式工作,方法是将以下行添加到/etc/rc.local
:
sh /opt/jboss-eap-6.1/bin/domain.sh
虽然据我所知,这并不是真正推荐的方法。据我所知,我们在 JBoss 5 中使用的方法是将符号链接放入运行级别初始化目录(/etc/rc2.d/
例如),该目录引用另一个脚本来/etc/init.d
启动服务。
我已经在 JBoss 6.1 中尝试过这个,虽然如果我使用“ ”手动启动该进程sh /etc/rc2.d/S01jboss6.1
,JBoss 就会开始运行,但该进程不会在启动时自行运行。
我相信我的想法是正确的,Ubuntu 在运行级别 2 中启动,那么 /etc/rc2.d/ 中的这个脚本是否应该在操作系统启动时运行?
谢谢。
答案1
我不知道 JBoss。您的脚本是一次性的还是持续运行的?对于保持在前台(在终端上)并持续运行的服务,您可以编写类似以下内容的 upstart 服务。如果它是一次性的或生成守护进程,您需要编辑下面的启动脚本,否则 upstart 将无法控制该进程或尝试多次执行它。
该脚本需要可执行,并位于 /etc/init/myscript.conf 中。然后从 /etc/init.d/myscript 到 /lib/init/upstart-job 建立符号链接
ln -s /lib/init/upstart-job /etc/init.d/myscript
您可以像这样启动脚本:service myscript start
description "myscript"
author "you"
start on (local-filesystems and net-device-up)
stop on runlevel [!2345]
kill timeout 50
respawn
respawn limit 1 5
env USER="user"
env PIDFILE="/var/run/myscript.pid"
env DAEMON="path/to/script"
pre-start script
do smothing
end script
# starting ...
exec start-stop-daemon --start --chuid $USER --pidfile $PIDFILE --make-pidfile --exec $DAEMON -- all my options 2>&1 >> /var/log/my.log
pre-stop script
do something
sleep 2
end script
# spring clean
post-stop exec rm -f $PIDFILE