Я динамически добавляю задачи cron к пользователю crontab

Задачи, кажется, получают adde, crontab -e выглядит так:

*/10 * * * * /bin/sh /Users/john/Kiosk/app/content/update.sh
@reboot /usr/bin/open /Users/john/Kiosk/startup.command

Проблема в том, что это, похоже, не имеет никакого эффекта.

Содержание startup.command:

cd /Users/john/Kiosk/app && /usr/bin/python -m SimpleHTTPServer &
sleep 5 && open http://localhost:8000

Что я делаю не так?

3 ответа3

2

Не используйте относительные пути, но полные. Также с двоичными файлами.

Тогда ваша строка должна быть

*/10 * * * * /usr/bin/sh /home/<username>/Kiosk/app/content/update.sh
@reboot open /home/<username>/Kiosk/startup.command
1

Снятие открытой команды сделало свое дело

@reboot yourscript.command
0

Путь по умолчанию /usr/bin:/bin , и тильды работают в пользовательском crontab, так что это должно работать:

*/10 * * * * bash ~/Kiosk/app/content/update.sh

Вы пытались заменить update.sh чем-то вроде команды say для его тестирования?

@reboot работает для меня при перезапуске, но не при выходе и повторном входе. @reboot open /test.txt не работает, но * * * * * open /test.txt сделал.

Вы также можете сохранить этот список как ~/Library/LaunchAgents/simplehttpserver.plist:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
    <key>KeepAlive</key>
    <true/>
    <key>Label</key>
    <string>simplehttpserver</string>
    <key>ProgramArguments</key>
    <array>
        <string>python</string>
        <string>-m</string>
        <string>SimpleHTTPServer</string>
        <string>8000</string>
    </array>
    <key>RunAtLoad</key>
    <true/>
    <key>WorkingDirectory</key>
    <string>/Users/john/Kiosk/app</string>
</dict>
</plist>

Его можно загрузить с помощью launchctl load ~/Library/LaunchAgents/simplehttpserver.plist или путем выхода из системы и обратно.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .