[英]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.