有什么办法让我的Python脚本(带有无尽的'while'循环)在OS X的后台运行?另外,出于同样的目的,有没有办法在USB驱动器上“自动运行”python脚本?在OS X的后台运行Python
回答
如果您想让脚本作为自动启动的守护进程运行,您可以使用launchctl和plist文件。
例如,Bob有一个简单的Python脚本,这个词“富”写入文件,在他的家目录每秒:
#!/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
这将加载该脚本,并立即在<key>Program</key>
下的<string>
元素中运行该程序。您还可以使用具有<string>
元素的数组的<ProgramArguments>
节点为程序指定参数。欲了解更多信息,请参阅launchd.plist man page
如果你想删除脚本,您可以使用launchctl
卸载命令:
launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist
在脚本中使用的标签可以是任何东西,但它应该是唯一的你的系统,所以苹果通常使用反向域名。
至于自动运行脚本,我不认为有任何方法可以做到这一点。
只需在后台使用外壳以通常的方式运行Python脚本:
python myscript.py &
至于自动运行的问题,这将是一个巨大的安全漏洞,如果那件事,Mac OS X中没有通过默认,所以,不,当然不是。但是您可以轻松地编写一个实现类似目的的脚本:定期查找插入的USB驱动器,并在插入时执行某些操作(即使是从拇指驱动器运行第二个脚本)。
看到此问题用于在Unix系统上守护python脚本的方法(如系统): Python Daemon Packaging Best Practices
当然,如果这是您需要的,您可以随时在后台运行脚本。
我试图launchctl
,不能让它在埃尔卡皮坦工作,并搜查一点各地越来越发现这个post
TL;你的脚本DR
使用家当线#!/usr/bin/env python
或#!/path/to/python
chmod +x test.py
nohup /path/to/test.py &
ps ax | grep test.py
您可以使用nohup https://linux.die.net/man/1/nohup
$ nohup python <your_script.py> &
这将运行您的进程并将输出追加到同一目录中的文件nohup.out。 &将按照其他答案的说明在后台运行该脚本。
- 1. 使OS X Swift应用程序在后台运行
- 2. 不能运行在Amazon Linux实例后台进程,但运行在MAC OS X
- 3. 在后台运行python
- 4. 在后台使用launchchagents运行命令行应用程序mac os x
- 5. 的Python:在OS X
- 6. 用于在后台重复运行Ruby文件的Mac OS X选项
- 7. 在ZSH/OS X中只运行在后台运行的脚本的一个实例
- 8. 在OS X的Sublime Text中运行pascal
- 9. 在Mac OS上运行的RSCRIPT X
- 10. 在后台运行python服务器
- 11. 如何在后台运行Python程序?
- 12. 在后台运行Python脚本
- 13. 在后台运行rtorrent使用Python
- 14. Python:如何在后台运行def
- 15. python-paramiko - 在后台运行命令
- 16. 在后台运行python脚本
- 17. 在后台运行python代码
- 18. 在Python上运行后台循环
- 19. Python脚本一直在后台运行
- 20. 在OS X中更改$ PATH以运行最新版本的Python
- 21. 运行在后台
- 22. 在后台运行
- 23. 在后台运行
- 24. 运行在后台
- 25. 如何检查在Python 2.7中运行的平台(OS)?
- 26. 在Mac OS X上的Python
- 27. Mac OS X更新后损坏的python
- 28. 在Mac OS X上运行Virtualenv问题
- 29. 在Mac OS X上运行Cassandra
- 30. 在OS X上运行CGAL C++程序?
我相信'屏幕'应该没问题的第一部分 – Robus 2012-03-01 19:10:22