首页 > 解决方案 > 使用 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 因为它是“首选”),请告诉我。

标签: pythonshellautomationcronlaunchd

解决方案


推荐阅读