我经常看到一些 upstart 脚本有使用exec
,这有什么意义呢?似乎删除 exec 脚本也可以?
例如
start on runlevel [2345]
stop on runlevel [06]
exec /path/to/program
答案1
如果删除exec
,则启动脚本将继续运行,直到启动的实用程序终止。例如,效率低下并浪费额外的 RAM 和其他资源(除非您想监视某种异常终止,然后重新启动实用程序)
使用exec
,实用程序将代替现有脚本启动,而不是等待已启动的实用程序终止。
答案2
有一个读取该脚本的 shell:
/path/to/program
:将让 shell 启动“program”作为子命令
exec /path/to/program
:将用“程序”替换 shell(节省 pid 和其他优点。而且没问题:此时您不再需要 shell 本身,因为该 shell 没有其他事情可做)