python - 使用 Launchd 运行 Shell 和 Python 脚本(写入文件)
问题描述
我对互联网上缺乏关于 launchd 的信息/视频感到惊讶。无论如何,我对在 Mac 终端中编写 shell 脚本和 python 还是很陌生,但我正在尝试自动化脚本以每 20 秒将日期时间写入文件。
下面是我写在 ~/Library/LaunchAgents 下的 plist 文件。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN"
"http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.example.py.plist</string>
<key>RunAtLoad</key>
<true/>
<key>ProgramArguments</key>
<array>
<string>/Users/sammahle/bin/python_file</string>
</array>
<key>StartCalendarInterval</key>
<integer>20</integer>
</dict>
</plist>
脚本中引用的“python_file”是
#!/usr/bin/python
import datetime
print 'Hello World'
datetime1 = str(datetime.datetime.now())
with open('file.txt','w') as f:
f.write(datetime1)
当我执行launchctl list时,我发现“ - 1 com.example.py.plist”我为下面的shell脚本运行了同样的事情并再次收到状态代码“1”,根据LaunchD Plist not working表示“退出代码1 表示脚本以错误条件退出。如果它以 0 退出,则意味着没有错误。”</p>
#!/bin/bash
echo "Hello World!" >> file.txt
我的最终目标是每天运行复杂的 python 脚本,而不需要一直运行程序。如果有人知道更好的解决方案(我选择 launchd over cron 因为它是“首选”),请告诉我。
解决方案
推荐阅读
- http - Clojure:luminus 框架的默认服务器是什么?
- javascript - Javascript:数组、For循环和函数
- css - 垂直对齐项目列表
- asp.net - 添加实体时加载相关数据 - Entity Framework Core 2
- scala - Spark:窗口函数是否可以替代自定义分区器?
- java - RDS 到 S3 - 数据转换 AWS
- vue.js - vue组件方法通过变量改变数据
- node.js - 快速车把呈现为字符串而不是响应
- javascript - 使用 AJAX 向 API 发送参数
- firebase - Firebase 实时数据库提供了不正确的服务器时间偏移值