Jav*_*Man 2 unix linux bash ps
我很难理解ps命令中出现的内容.为了测试我的理解,我创建了以下虚拟脚本
#!/bin/bash
for i in {1..100000}
do
date -u
date -u
date -u
done
Run Code Online (Sandbox Code Playgroud)
在运行此脚本时,我打开了一个新终端并重复执行
ps -eaf | grep date | grep -v grep
Run Code Online (Sandbox Code Playgroud)
我能够在输出中约会过程.
后来我用替换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
Run Code Online (Sandbox Code Playgroud)
在运行更新的虚拟脚本时,我打开了一个新终端并重复执行
ps -eaf | grep echo | grep -v grep
Run Code Online (Sandbox Code Playgroud)
和回声从未在输出中显示.为什么是这样?我怀疑原因是脚本是一个bash脚本,可能是它使用内置echo,因此它没有显示在ps输出中.我对么?我在这里错过了什么?
echo 是一个内置的bash:
$ type echo
echo is a shell builtin
Run Code Online (Sandbox Code Playgroud)
这意味着在echo运行时不会创建新进程.所有的工作都是由bash流程完成的,这样做更有效率.
您可以echo显式运行非内置:
command echo "What is going on"
Run Code Online (Sandbox Code Playgroud)
/bin/echo相反,这个分叉和执行,让它显示出来ps.