Запуск сценариев оболочки и Python (которые записывают в файлы) с помощью Launchd - PullRequest
0 голосов
/ 13 ноября 2018

Я удивлен отсутствием информации / видео в интернете о запуске.В любом случае, я довольно новичок в написании сценариев оболочки и python в терминале Mac, но я пытаюсь автоматизировать сценарий для записи даты и времени каждые 20 секунд в файл.

Ниже приведен мой plist-файл, написанный в ~ /Library / LaunchAgents.

<?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, я нахожу "- 1 com.example.py.plist"Я запустил то же самое для сценария оболочки ниже и снова получил код состояния «1», который согласно LaunchD Plist не работает означает «Код выхода 1 означает, что скрипт завершился с ошибкой.Если он завершится с 0, это будет означать, что ошибок не было ».

#!/bin/bash
echo "Hello World!" >> file.txt

Моя конечная цель - ежедневно запускать сложные сценарии Python без необходимости постоянно запускать программу.Если кто-нибудь знает лучшее решение (я выбираю launchd вместо cron, потому что оно «предпочтительнее»), пожалуйста, дайте мне знать.

...