我很难理解 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
with 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 输出中。我对么?我在这里缺少什么?
echo
是 bash 中的内置函数:
$ type echo
echo is a shell builtin
这意味着当以下情况时不会创建新进程echo
正在运行。所有工作均由bash
而是采用流程,效率更高。
您可以运行非内置echo
明确地:
command echo "What is going on"
这个分叉和执行/bin/echo
相反,让它出现在ps
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)