确保给定脚本仅一个实例正在运行的最简单/最佳方法是什么(假设它是Linux上的Bash)?
目前,我正在做:
ps -C script.name.sh > /dev/null 2>&1 || ./script.name.sh
但是它有几个问题:
-C
仅检查进程名称的前14个字符当然,我可以编写自己的pidfile处理程序,但我认为应该有一种简单的方法。
如果所有用户的脚本都相同,则可以使用一种lockfile
方法。如果您获得了锁,请继续执行其他操作,并显示一条消息并退出。
举个例子:
[Terminal #1] $ lockfile -r 0 /tmp/the.lock
[Terminal #1] $
[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] lockfile: Sorry, giving up on "/tmp/the.lock"
[Terminal #1] $ rm -f /tmp/the.lock
[Terminal #1] $
[Terminal #2] $ lockfile -r 0 /tmp/the.lock
[Terminal #2] $
/tmp/the.lock
获得脚本后,您的脚本将是唯一可以执行的脚本。完成后,只需取下锁。在脚本形式下,它可能类似于:
#!/bin/bash
lockfile -r 0 /tmp/the.lock || exit 1
# Do stuff here
rm -f /tmp/the.lock
如果是,则返回“EC2”。 我可以用来判断脚本是否运行在Google Cloud Compute Engine实例上的等价物是什么?
问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上
问题内容: 我有一个名为test1.py的脚本,该脚本不在模块中。它只包含应在脚本本身运行时执行的代码。没有函数,类,方法等。我有另一个作为服务运行的脚本。我想从作为服务运行的脚本中调用test1.py。 例如: 文件service.py 我知道一种方法是打开文件,读取内容并进行基本评估。我假设有一种更好的方法。或者至少我希望如此。 问题答案: 这样做的通常方法如下。 test1.py servi
问题内容: 有没有一种Python方式可以只运行一个程序实例? 我想出的唯一合理的解决方案是尝试将其作为服务器在某个端口上运行,然后尝试将第二个程序绑定到同一端口-失败。但这不是一个好主意,也许有比这更轻巧的东西了吗? (考虑到程序有时可能会失败,例如segfault-因此“锁定文件”之类的东西将无法工作) 问题答案: 以下代码可以完成此工作,它是跨平台的,并且可以在Python 2.4-3.2上
问题内容: 我要进行Flask + Nginx + Gunicorn部署。我已经安装并正在运行Nginx,并且按照文档中的说明运行gunicorn: 但是,当我注销服务器时,gunicorn进程退出了吗?确保Nginx保持连接状态并在崩溃时重新启动的正确方法是什么? 问题答案: 运行Gunicorn时使用选项。例:
我一直试图找出答案,但没有任何成功。 问题:每当我的selenium webdriver测试运行并在两者之间关闭时,比如说由于错误或有人关闭了chrome窗口,“chromedriver.exe”就会留在后台初始化,每次我都必须手动结束此过程,因为下次运行测试时会再次创建它。 那么,我是否可以检查chromedriver.exe实例是否已经存在于内存中? 我正在使用Java,可以为此编写脚本,但我