如何确保bash脚本不是';你还没跑吗继续的
继续从 并表示歉意: 在最后一个解决方案中,“ps”是否足以显示所有正在运行的进程,还是应该是“ps-ef”如何确保bash脚本不是';你还没跑吗继续的,bash,Bash,继续从 并表示歉意: 在最后一个解决方案中,“ps”是否足以显示所有正在运行的进程,还是应该是“ps-ef” 很抱歉,我没有足够的权限向上一个问题添加评论。您可以通过以下方式找到此脚本: ps ax | grep scriptname如果需要进一步澄清,应在答案下方添加注释。这不应该是一个新问题。flock解决方案更好,ps版本充满了竞争条件。ps是否足够取决于您需要的排他性,如果它需要在用户/会话之间具有排他性,那么,是的,您需要ps-e/ps a。另请注意,ps是最依赖于系统的命令之一,即p
很抱歉,我没有足够的权限向上一个问题添加评论。您可以通过以下方式找到此脚本:
ps ax | grep scriptname如果需要进一步澄清,应在答案下方添加注释。这不应该是一个新问题。flock解决方案更好,ps版本充满了竞争条件。ps是否足够取决于您需要的排他性,如果它需要在用户/会话之间具有排他性,那么,是的,您需要ps-e/ps a。另请注意,ps是最依赖于系统的命令之一,即ps提供的输出在Solaris、Linux和AIX上可能非常不同,因此如果这与您相关,请记住这一点。我想我理解“竞争条件”场景,我怀疑它是否适用。在我尝试运行脚本之前,我只需要确保没有其他人运行过该脚本。@AndyKendall,然后您需要使用某种类型的锁定,例如,符号链接就可以了(例如,在脚本开始时创建符号链接,设置陷阱以在终止时删除符号链接)。创建符号链接是一项原子操作(在大多数FSE上)。要直接回答您的问题:如果您想用
ps
来做得不好,并且只关心同一用户运行的其他实例,那么仅使用ps
就足够了。如果您关心其他用户运行的实例,是的,您需要添加一些参数。但是,无论如何,如果您确实需要脚本可靠且正确地运行,则根本不要依赖于ps
——使用flock
。使用此命令,即使grep找到了“scriptname”,也不意味着脚本正在运行。示例:它刚用“vim scriptname”打开。