使用inittab中的respawn项重新启动linux应用程序不起作用

时间:2018-08-31 14:52:14

标签: linux embedded-linux fedora init.d inittab

场景:
我有一个在Linux上运行的进程,该进程在后台由挂在/etc/init.d/上的名为MyApp的脚本启动,这只是一个没有.sh的shell脚本。以下是我的init.d脚本脚本

#!/bin/sh

PARAM=$1

case ${PARAM} in
    start)
        MyApp &
        ;;
    stop)
        killall -9 MyApp
        ;;
    *)
        echo "Usage: $0 {start|stop}" >&2
        exit 1
        ;;
esac

如您所见,它在背景MyApp中开始。

目的和问题:
我想在崩溃时重新启动MyApp。我试图找出如何做到的。看来我必须从我阅读的各种链接中向/etc/inittab添加一个条目。因此,我将以下条目添加到/etc/inittab中。

MyApp:12345:respawn:MyApp

问题:
上面的代码似乎无法正常工作,我如何才能使其正常工作?我在这里做什么错了?

注意:
我正在执行killall -9 MyApp,并由于我添加到/etc/inittab的条目而使其重新启动。这个期望正确吗?

2 个答案:

答案 0 :(得分:1)

case ${PARAM} in
    start)
        (while :; do MyApp ;done) &
        ;;

答案 1 :(得分:0)

这个答案来的比较晚,但是您在所写行中的唯一 ID 是 5 个字符。 ID 的最大长度必须为 4。