我正在尝试通过嵌入式系统中的 inittab 启动应用程序。希望通过 inittab 而不是通过 init.d 脚本来执行此操作是为了利用重生。该系统上没有 systemd。我在 inittab 中有以下条目:myapp::respawn:/path/to/my/app
。尽我所能,它无法启动。每这我观察到以下情况(手动启动):
sh -c /path/to/my/app # works
sh -c exec /path/to/my/app # does not work
sh -c 'exec /path/to/my/app' # works
每这回答以下 shell 脚本也可以工作:
#!/bin/sh
exec /path/to/my/app
目前,我通过 init.d 脚本启动应用程序:su - root -c '/path/to/my/app &'
它可以工作,但同样的命令在 inittab 中也不起作用。我的后备方案是从 init.d 启动另一个监视器脚本,如果在ps
输出中找不到它,它会继续运行并重新启动我的应用程序,但通过 inittab 获得“自动”重生工具会更好。
答案1
就在我发帖之后,依稀记得过去注意到 inittab 标签需要低于一定的长度(这是一个 buildroot 生成的系统)。事实上,将 inittab 条目更改为app::respawn:/path/to/my/app
有效!看起来标签必须为 4 个字符或更少。留下这个问题以防它对某人有帮助。