如何在 AIX 中将 jar 文件作为服务运行,如果崩溃将自动重启?

Posted

技术标签:

【中文标题】如何在 AIX 中将 jar 文件作为服务运行,如果崩溃将自动重启?【英文标题】:How to run a jar file in AIX as a service which will auto restart if crashed? 【发布时间】:2019-11-10 22:16:12 【问题描述】:

我有几个要在 AIX 上作为服务运行的 jar 文件。如果服务崩溃/结束,服务必须自动重启。我怎样才能做到这一点?

我有一个类似这样的 shell 脚本

(
    until java -jar Test.jar; do
        echo "Test Service crashed with exit code $?.  Respawning... " >&2
        sleep 5
    done
) 

这可行,但我想知道是否有更好的方法来做到这一点?如果机器由于某种原因重新启动,则必须手动运行脚本。我不是 Linux 或 AIX 方面的专家。

【问题讨论】:

在 Unix 中,这些是“恶魔”。重新启动后,您将需要 root 访问权限才能自动启动。 【参考方案1】:

您可以查看this page 关于 AIX 中的自动启动/重启服务/守护进程

inittab 条目

让我们看一下运行脚本的 inittab 条目。假设,我们想要 运行向系统管理员发送电子邮件的脚本,说明 系统启动时该框可用。

inittab的入口如下图:

mailout:2:once:/usr/local/bin/mailout > / dev/null 2>&1 #mail users

以上条目可以总结如下:

mailout: The unique identifier

2:当系统达到运行级别 2 时运行它(默认) 一次:运行脚本并且不等待其终止; init 将继续处理 inittab。如果进程失败,init 不会 尝试重新运行它。 /usr/local/bin/mailout:要运行的命令的完整路径和脚本名;请注意,输出被丢弃到 /dev/dull。我们 以“#”注释结束脚本的作用。

为了完整起见,这里是有问题的脚本:

!/bin/sh                                                    
#mailout                                                    
/usr/sbin/sendmail ‑t <<mayday                              
From: hostname                                              
To: rs6admins                                               
Subject: hostname P‑Series is up                            
The AIX hostname is now up, please check services.          
.                                                           
mayday       

【讨论】:

以上是关于如何在 AIX 中将 jar 文件作为服务运行,如果崩溃将自动重启?的主要内容,如果未能解决你的问题,请参考以下文章

Spark---如何打成jar包至服务器运行

使用 AIX 的 ksh 实现以非交互模式读取配置文件脚本

Aix之 xmanager 2.0连接AIX服务器

如何在 Windows 中将 Python 脚本作为服务运行?

如何在 Debian 中将简单的 Go 服务器作为守护进程运行?

在JAVA中将class文件编译成jar文件包,运行提示没有主清单属性