upstart 重新生成两个子进程

upstart 重新生成两个子进程

我有一个像这样的新贵脚本:

start on runlevel [2345]
respawn

script
  exec su - ubuntu -c "cd /opt/app; bin/widget 2>&1 | logger -t 'widget'"
end script

问题是当小部件进程崩溃时,它不会重生。大概是因为记录器进程仍在运行。有什么办法可以解决这个问题吗?

答案1

我会将这项工作“外包”给一个 bash 脚本:

start on runlevel [2345]
respawn

script
  exec /path/to/bash/script
end script

剧本

#! /bin/bash -e

su - ubuntu -c "cd /opt/app; bin/widget" |& logger -t 'widget'

exit ${PIPESTATUS[0]}

数组PIPESTATUS狂欢存储管道返回值,在本例中我们使用命令的返回值su

相关内容