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)
… 在subshell中 运行该
ps命令,后者本身会创建一个额外的bash实例。 __
如何正确确保脚本的一个副本正在运行?
使用锁定文件。
请注意,我 强烈 建议您使用
flock基于-的变体。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)