#!/bin/ksh
# start_service: start the service
my_server_executable 2>&1 | my_pipe_following_shell_script &
exit 0
从命令行运行上述脚本后,使用命令start_service
观察到正在运行的进程是 的父进程,而我期望的是,ps
bash
my_pipe_following_shell_script
my_server_executable
并需要,后者由 PID 1 ( ) 拥有init
。
我正在寻找关于为什么会发生这种情况以及如何避免这种情况的解释。
另外,如何调试/检查幕后发生的事情?跑步start_service
并strace
没有多大帮助。我在其输出中找到的唯一有趣的行是:
clone(child_stack=0, flags=CLONE_CHILD_CLEARTID|CLONE_CHILD_SETTID|SIGCHLD, child_tidptr=0xb7f05708) = 30431
其中30431
PID 为my_pipe_following_shell_script
.
Linux 2.6.18-308.16.1.el5PAE
ksh 版本 sh(AT&T 研究)93t+ 2010-02-02
GNU bash,版本 3.2.25(1)-release (i686-redhat-linux-gnu)