是否有跨平台的方式获取tempPython 2.6中的目录路径?
例如,在Linux /tmp下,在XP下C:\Documents and settings\[user]\Application settings\Temp.
我正在写一个Python脚本,可能会或可能不会(取决于一堆东西)运行很长时间,我想确保多个实例(通过cron启动)不会踩到彼此脚趾.这样做的逻辑方法似乎是基于PID的锁文件...但是如果已经有代码执行此操作,我不想重新发明轮子.
那么,是否有一个Python模块可以管理基于PID的锁文件的细节?
我有一个python脚本,我想只允许在一台机器上运行一次.我希望它打印像"错误,已经运行"的东西,如果它已经在运行,无论是在后台运行还是在不同的ssh会话中运行.我该怎么做?这是我的剧本.
import urllib, urllib2, sys
num = sys.argv[1]
print 'Calling'
phones = [
'http://phone1/index.htm',
'http://phone2/index.htm',
'https://phone3/index.htm',
'https://phone4/index.htm',
'https://phone5/index.htm'
]
data = urllib.urlencode({"NUMBER":num, "DIAL":"Dial", "active_line":1})
while 1:
for phone in phones:
try:
urllib2.urlopen(phone,data) # make call
urllib2.urlopen(phone+"?dialeddel=0") # clear logs
except: pass
Run Code Online (Sandbox Code Playgroud)
PS如果重要,我正在使用CentOS 5.
我希望我的Python脚本检查,如果它已经运行,如果是,则杀死旧进程.我试过这个,但它确实不起作用......
import os
import subprocess
import signal
process_name = "python " + os.path.abspath(__file__)
proc = subprocess.Popen(["pgrep", process_name], stdout=subprocess.PIPE)
# Kill process.
for pid in proc.stdout:
os.kill(int(pid), signal.SIGTERM)
# Check if the process that we killed is alive.
try:
os.kill(int(pid), 0)
raise Exception("""wasn't able to kill the process
HINT:use signal.SIGKILL or signal.SIGABORT""")
except OSError as ex:
continue
Run Code Online (Sandbox Code Playgroud)
它不会杀死旧进程并且现在运行多次.
我有一个长期运行的python脚本,我希望能够从另一个python脚本结束.理想情况下,我正在寻找的是一种方法,将进程ID设置为第一个脚本,并能够通过第二个脚本中的ID识别它是否正在运行.此外,我希望能够终止这个长时间运行的进程.
是否存在任何很酷的捷径来实现这一目标?
此外,我在Windows环境中工作.
我刚刚在这里找到了另一个答案:检查python脚本是否正在运行
我有一个名为 update.py 的 python 脚本,我想使用另一个 python 脚本来检查该脚本是否正在运行。如果 update.py 未运行或出错,则脚本将运行 update.py。
我可以做吗?如果有例子那就非常感谢了。