是否有一种简单的方法可以判断ruby脚本是否已经在运行,然后对其进行适当处理?例如:我有一个名为really_long_script.rb的脚本.我每隔5分钟就跑一次.当它运行时,我想查看上一次运行是否仍在运行,然后停止执行第二个脚本.有任何想法吗?
ps是一种非常糟糕的方式,可能会对比赛条件开放.
传统的Unix/Linux方式是将PID写入文件(通常在/ var/run中)并检查该文件是否在启动时存在.
例如,pidfile位于/var/run/myscript.pid,然后在运行程序之前检查是否存在.有一些技巧可以避免使用O_EXCL(排除锁定)来打开文件和符号链接的竞争条件.
不太可能,您应该尝试编码以通过在文件系统上使用原子操作来避免竞争条件.
为了节省重新发明轮子,您可能需要查看http://rubyforge.org/projects/pidify/