launchctl load -w Нет такого файла или каталога - PullRequest
0 голосов
/ 27 декабря 2018

Я пытаюсь установить автоматически программу для getintraday.py в Mac, используя launchctl.

1.Создайте файл run.sh

, перейдите в каталог getintraday.py

cd /Users/yindeyong/Desktop/Django_Projects/pythonstock


vi run.sh

Ниже следует файл run.sh:

#!/bin/sh

# record start time
echo `date` >> /Users/yindeyong/Desktop/Django_Projects/pythonstock/log &&

# go to getintraday.py directory

cd /Users/yindeyong/Desktop/Django_Projects/pythonstock &&

# Execute python scripts according to my virtual environment
/Users/yindeyong/Desktop/Django_Projects/envs/stockenv/bin/python3.6 getintraday.py
# Execute done
echo 'finish' >> /Users/demo/log/Users/yindeyong/Desktop/Django_Projects/pythonstock/log

Затем сохраните и вполне

 :wq
chmod 777 run.sh

2.Создайте документ plist

перейдите в ~ / Library / LaunchAgents , создайте com.demo.plist

Ниже приведено описание создания com.demo.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>
      <!-- Label -->
      <key>Label</key>
      <string>com.demo.plist</string>
      <!-- the script to Execute -->
      <key>ProgramArguments</key>
      <array>
        <string>/Users/yindeyong/Desktop/Django_Projects/pythonstock/run.sh</string>
      </array>
      <!-- the time to Execute  -->
      <key>StartCalendarInterval</key>
      <dict>
            <key>Minute</key>
            <integer>37</integer>
            <key>Hour</key>
            <integer>10</integer>
      </dict>
    <!-- Standard output file -->
    <key>StandardOutPath</key>
    <string>/Users/yindeyong/Desktop/Django_Projects/pythonstock/run.log</string>
    <!-- 
Standard error output file, error log -->
    <key>StandardErrorPath</key>
    <string>/Users/yindeyong/Desktop/Django_Projects/pythonstock/run.err</string>
    </dict>
    </plist>

Команда загрузки

launchctl load -w com.demo.plist

Но я получаю / Users / yindeyong / Рабочий стол / Django_Projects /pythonstock / com.demo.plist: Нет такого файла или каталога

1 Ответ

0 голосов
/ 28 декабря 2018

Поскольку вы не указали путь к файлу plist, он предполагал, что вы используете текущий рабочий каталог (/ Users / yindeyong / Desktop / Django_Projects / pythonstock).Попробуйте указать фактическое местоположение файла plist:

launchctl load -w ~/Library/LaunchAgents/com.demo.plist

Кстати, вы должны использовать другое имя и метку для вашего агента запуска.Текущее имя подразумевает, что оно создано владельцами домена demo.com, который, как я предполагаю, принадлежит вам (см .: обратная запись доменного имени ).Если у вас нет собственного доменного имени, к которому можно приписать агента, используйте что-то с «local».префикс (например, "local.demo").Кроме того, метка не должна содержать «.plist», это суффикс, добавляемый к имени файла.Таким образом, вы можете использовать метку «local.demo» и назвать файл «local.demo.plist».

...