使用-c参数在bash中的异常行为

时间:2016-06-22 09:34:37

标签: bash ksh

我使用-c参数在bash中遇到了一些不寻常的行为。

如果我执行以下操作:

bash -c "ping 127.0.0.1 > $HOME/console.log"  &

这会启动两个进程bash和ping:

john     18038 17951  0 09:26 pts/14   00:00:00 bash -c ping 127.0.0.1 > /home/john/console.log
john     18039 18038  0 09:26 pts/14   00:00:00 ping 127.0.0.1

从流程层次结构bashping的父流程。

现在如果我杀了bash:

kill -15 18038

再次检查进程树:

UID        PID  PPID  C STIME TTY          TIME CMD
john     17951 30467  0 09:25 pts/14   00:00:00 /bin/bash
john     18039     1  0 09:26 pts/14   00:00:00 ping 127.0.0.1
john     18064 17951  0 09:30 pts/14   00:00:00 ps -f
[1]+  Terminated              bash -c "ping 127.0.0.1 > $HOME/console.log"

bash已被杀死但不是ping子进程。我当时也希望能够被杀死。

如果我使用ksh –c重复完全相同的步骤,则会导致ping进程失效。

看起来bash执行双叉或其他操作,而ksh只执行没有fork的执行。

0 个答案:

没有答案