新贵和流程替代

Nit*_*ked 6 bash upstart redirect

所以我想在我的脚本节中使用以下内容:

forever -l >(tee $QW_LOG_DIR/webserver.log | logger -p user.info -t '[QW]') start webserver.js
Run Code Online (Sandbox Code Playgroud)

但是,这行不通,因为:

  1. 这是 bash 语法,并且:

  2. >(...)构造在我实际创建之前创建了一个进程forever,因此 upstart 将跟踪错误的 pid。

    ......至少我是这么认为的,我是一个新贵的新手。

我的想法是,为了绕过这两个问题,我应该mkfifo在我的pre-start节中使用,以便我可以在我的启动脚本中写入 fifo。

问题:

  1. 这是要走的路吗?如果不是——什么是?
  2. 如果是,那么我将需要(tee | logger)“在后台”运行该部分,大概是在pre-start?
  3. 再次,如果是这样,我如何跟踪它,并在我的post-end节中删除它?

Dav*_*ter 2

如果您需要从 Upstart 调用 Bash 脚本,您可以将该脚本放入文件中并通过以下exec节调用它:

\n\n
exec /bin/bash /path/to/my-bash-script.sh\n
Run Code Online (Sandbox Code Playgroud)\n\n

如果您在 script\xe2\x80\x99s 开头放置一个合适的 shebang ( #!/bin/bash) 并使文件可执行,您甚至可以直接执行它:

\n\n
exec /path/to/my-bash-script.sh\n
Run Code Online (Sandbox Code Playgroud)\n