我在课堂上用电脑记笔记,并通过保管箱上的公共文件夹分享这些笔记。当我在课堂上做笔记时,我会在生成 PDF 之前创建很多不必要的文件(我在 LaTeX 中做笔记)。我不想用不必要的文件将我的 Dropbox 空间弄得一团糟,而宁愿只将 PDF 发布到 Dropbox。
为了方便所有这些,我设置了一个 cronjob,它在每节课后(每周)运行一个 python 脚本(下)。有时,在导出 PDF 之前,我会在笔记中修复某些内容时会留几分钟,因此 python 脚本中有一堆sleep
s,等待生成 PDF。我今天不小心手动运行了该脚本,需要帮助停止它。
import os
import subprocess
from sys import exit as crash
from datetime import date as dt
from time import sleep
def getToday():
answer = dt.strftime(dt.today(), "%b") + str(int(dt.strftime(dt.today(), "%d")))
return answer
def zipNotes(date):
today = getToday()
while 1:
if today not in os.listdir('.'):
with open("FuzzyLog", 'a') as logfile:
logfile.write("Sleeping\n")
sleep(60*5) # sleep 5 minutes
continue
if "Notes.pdf" not in os.listdir(today):
with open("FuzzyLog", 'a') as logfile:
logfile.write("pdf not exported. Sleeping\n")
sleep(60*5) # sleep 5 minutes
continue
subprocess.call("""zip Notes.zip */Notes.pdf""", shell=True)
crash(0)
zipNotes(getToday())
由于该脚本没有找到今天创建的任何文件(我可以轻松地创建一个虚拟文件,但这不是一个“正确”的解决方案),它会无限循环遍历睡眠条件。由于循环条件非常简单,我不能指望进程长时间处于活动状态以“在行动中抓住它”以获取它的 PID 来杀死它。
ps aux | grep python
没有显示哪个 PID 正在运行我想杀死的 python 脚本,也不显示ps -ax | grep python
or ps -e | grep python
。
有谁知道我如何在睡眠时跟踪 python 脚本?
我在 Mac OSX 10.7.5 (Lion) 上,如果这很重要的话