所以我想在我的脚本节中使用以下内容:
forever -l >(tee $QW_LOG_DIR/webserver.log | logger -p user.info -t '[QW]') start webserver.js
然而,这是行不通的,因为:
这是 bash 语法,并且:
该
>(...)
构造在我实际创建之前创建了一个进程forever
,因此 upstart 会跟踪错误的 pid。...至少我这么认为,我是一个新手。
我的想法是,为了绕过这两个问题,我应该mkfifo
在我的pre-start
节中使用它,以便我可以在我的启动脚本中写入 fifo。
问题:
- 那是可行的方法吗?如果不是,那该怎么办?
- 如果是,那么我需要
(tee | logger)
“在后台”运行该部分,大概是在pre-start
? - 再说一次,如果是这样,我该如何追踪它,并将其从我的诗节中删除
post-end
?
答案1
如果您需要从 Upstart 调用 Bash 脚本,则可以将脚本放在文件中并通过以下exec
节调用它:
exec /bin/bash /path/to/my-bash-script.sh
如果你在脚本的开头放置一个合适的shebang(#!/bin/bash
)并使文件可执行,你甚至可以直接执行它:
exec /path/to/my-bash-script.sh