簡體   English   中英

為什么“回聲”不會出現在“ps”中?

[英]Why doesn't “echo” show up in “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

和回聲從未在輸出中顯示。 為什么是這樣? 我懷疑原因是腳本是一個bash腳本,可能是它使用內置echo,因此它沒有顯示在ps輸出中。 我對么? 我在這里錯過了什么?

echo是bash內置的:

$ type echo
echo is a shell builtin

這意味着在運行echo時不會創建新進程。 所有工作都是通過bash流程完成的,這樣做效率更高。

您可以顯式運行非內置echo顯:

command echo "What is going on"

這就是forks和execs /bin/echo ,讓它以ps

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM