为什么不回应"出现在" ps"?

时间:2015-03-03 19:22:38

标签: linux bash unix ps

我很难理解ps命令中显示的内容。为了测试我的理解,我在下面创建了虚拟脚本

 #!/bin/bash
 for i in {1..100000}
 do
  date -u
  date -u
  date -u
 done

在运行此脚本时,我打开了一个新终端并重复执行

ps -eaf | grep date | grep -v grep

我能够在输出中约会过程。

我后来通过将date -u替换为echo "what is going on"

来更改虚拟脚本
     #!/bin/bash
     for i in {1..100000}
     do
      echo "What is going on"
      echo "What is going on"
      echo "What is going on"
     done

在运行更新的虚拟脚本时,我打开了一个新终端并重复执行

ps -eaf | grep echo | grep -v grep

并且输出中从未显示过echo。为什么是这样?我怀疑原因是脚本是一个bash脚本,可能是它使用内置echo,因此它没有显示在ps输出中。我对么?我在这里错过了什么?

1 个答案:

答案 0 :(得分:7)

echo是bash内置的:

$ type echo
echo is a shell builtin

这意味着在运行echo时不会创建新进程。所有工作都由bash流程完成,这样做效率更高。

您可以明确地运行非内置echo

command echo "What is going on"

这个分支和执行/bin/echo代替,让它显示在ps中。