有什么方法可以让我的 Python 脚本(带有无限的“while”循环)在 OS X 的后台运行?此外,出于同样的目的,有没有办法在 USB 驱动器上安装“自动运行”python 脚本?
最佳答案
如果你想让脚本作为自动启动的守护进程运行,你可以使用launchctl和一个 plist 文件。
例如,Bob 有一个简单的 python 脚本,它每秒将单词“foo”写入他的主目录中的一个文件:
#!/usr/bin/env python
import os
import time
while True:
os.system('echo " foo" >> /Users/bob/foostore.txt')
time.sleep(1)
要让它作为守护进程运行,请创建一个 plist 文件,~/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
这将加载该脚本并立即运行 <string>
中的程序<key>Program</key>
下面的元素.您还可以使用 <ProgramArguments>
为程序指定参数具有 <string>
数组的节点元素。有关详细信息,请参阅 launchd.plist man page
如果要删除脚本,可以使用launchctl
的unload命令:
launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist
脚本中使用的Label可以是任意的,但是在你的系统上应该是唯一的,所以Apple一般使用倒序的域名。
至于自动运行脚本,我认为没有任何办法。
关于python - 在 OS X 后台运行 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9522324/