脚本内的ps aux和`ps aux`之间的结果不同

脚本内的ps aux和`ps aux`之间的结果不同,第1张

脚本内的ps aux和`ps aux`之间的结果不同 为什么单个bash脚本会在中多次显示
ps

当隐式创建子外壳的任何构造都在起作用时,这是典型的。例如,在bash中:

echo foo | bar

…创建一个新的shell分叉副本以运行

echo
,并使用其自己的
ps
实例。类似地:

( bar; echo done )

…创建一个新的子shell,让该子shell运行外部命令

bar
,然后让该子shell执行
echo

类似地:

foo=$(bar)

…创建一个用于命令替换的子shell,

bar
在其中运行(可能会
exec
“执行命令并使用该子shell,但这不能保证”),然后将其输出读入父级。

现在,这如何回答您的问题?因为

result=$(ps aux | grep | wc)

在subshel​​l中 运行该

ps
命令,后者本身会创建一个额外的bash实例。 __


如何正确确保脚本的一个副本正在运行?

使用锁定文件。

请注意,我 强烈 建议您使用

flock
基于-的变体。



欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/5019132.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-11-15
下一篇 2022-11-15

发表评论

登录后才能评论

评论列表(0条)

保存