有没有办法在Mac系统上让我的Python脚本(含有无限循环'while')在后台运行?同样地,为了相同的目的,是否可以让USB驱动器上的Python脚本“自启动”?
#!/usr/bin/env python
import os
import time
while True:
os.system('echo " foo" >> /Users/bob/foostore.txt')
time.sleep(1)
~/Library/LaunchAgents/com.bobbob.osx.test.plist
,其中包含以下内容:<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd >
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.bobbob.osx.test</string>
<key>Program</key>
<string>/Users/bob/pyfoo.py</string>
<key>KeepAlive</key>
<true/>
</dict>
</plist>
然后使用终端中的launchctl
加载plist:
launchctl load ~/Library/LaunchAgents/com.bobbob.osx.test.plist
<key>Program</key>
下方的<string>
元素中的程序。您还可以使用<ProgramArguments>
节点指定程序的参数,其中包含一组<string>
元素。有关更多信息,请参见launchd.plist man page。launchctl
的卸载命令:launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist
我尝试使用launchctl
在El Capitan中运行,但无法使其工作,并进行了更多搜索后发现了这个帖子
简短总结:
在你的脚本中使用shebang行#!/usr/bin/env python
或#!/path/to/python
chmod +x test.py
nohup /path/to/test.py &
ps ax | grep test.py
请参考以下问题,了解在类Unix系统上将Python脚本转换为守护进程的方法: Python Daemon Packaging Best Practices
当然,如果这是您所需的全部内容,您也可以像kindall提到的那样在后台运行脚本。
$ nohup python <your_script.py> &
只需按照通常的方式在 shell 中将 Python 脚本后台运行:
python myscript.py &
screen
应该是可以的。 - Robus