launchctl load -w Нет такого файла или каталога
Я пытаюсь установить автоматически программу для 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/Desktop/Django_Projects/pythonstock/com.demo.plist: нет такого файла или каталога
1 ответ
Поскольку вы не указали путь к файлу 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".