当前位置: 首页 > 面试题库 >

在OS X的后台运行Python

慕俊迈
2023-03-14
问题内容

有什么方法可以让我的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手册页。

如果要删除脚本,可以使用以下命令的卸载命令launchctl

launchctl unload ~/Library/LaunchAgents/com.bobbob.osx.test.plist

脚本中使用的标签可以是任何东西,但在您的系统上应该是唯一的,因此Apple通常使用反向域名。

至于执行脚本的老师,我认为没有任何办法可以做到这一点。



 类似资料:
  • MinDoc 0.4以上版本支持在Linux和Windows上以服务的方式后台执行,命令如下: 安装服务 ./mindoc_linux_amd64 service install 卸载服务 ./mindoc_linux_amd64 service remove 执行服务安装后,会创建一个以 mindocd 为服务名的服务。 需要以管理员权限运行

  • 我有一个简单的java程序,它只是一段代码,可以从数据库中读取并根据某些条件修改数据库的内容。现在,我想要的是这个程序应该在启动时自动启动并在后台静默运行,除非有人从任务管理器中杀死它。我以前从未做过这样的事情,也不知道具体该怎么做。有人能帮我解决这个问题吗?谢谢你...

  • 问题内容: 我想使用ffmpeg在php中将视频转换为.flv。目前,我正在执行此操作,但是它会挂起浏览器,直到文件上传完毕。我一直在寻找有关如何在后台运行exec()进程的php文档,同时使用返回的PID更新进程。这是我发现的: 我还使用一个技巧来跟踪后台任务是否正在使用返回的PID运行: 我是否想创建一个单独的.php文件,然后从php cli运行以执行以下功能之一?我只需要稍微推动一下即可开

  • 本文向大家介绍Docker 在后台运行容器,包括了Docker 在后台运行容器的使用技巧和注意事项,需要的朋友参考一下 示例 要使容器在后台运行,请-d在容器启动期间提供命令行选项: 该选项-d以分离模式运行容器。它也等效于-d=true。 处于分离模式的容器停止时不能自动删除,这意味着不能将--rm选项与-d选项结合使用。

  • 我有一个函数/GUI问题。我正在编码一个轻函数,它开始一个例程,并检查时间是否在上午8点和一些停止时间之间。这个例程从早上8点开始,在那个任意的时间结束。问题是,一旦我点击这个例程的开始,图形用户界面就不会让我带着开始按钮离开窗口,因为它卡在定时例程里面了。我真的希望能够设置计时器在后台运行,然后能够离开图形用户界面的窗口。看起来线程是做到这一点的关键,但我不确定。 我将GUI代码放在一个单独的文

  • 问题内容: 我有一个脚本,每5分钟检查一次PC上的内容,并且我不希望Python显示在任务栏上。我使用Windows作为操作系统。 有什么方法可以让Python在后台运行并强制其不在我的任务栏中显示? 问题答案: 在控制面板中查找计划任务。