5

мой .plist выглядит ниже ... В /var/log.system.log я вижу

(com.example.exampled[24728]): posix_spawn("/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb", ...): No such file or directory
(com.example.exampled[24728]): Exited with exit code: 1
(com.example.exampled): Throttling respawn: Will start in 10 seconds

но если я запускаю /usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb скрипт работает нормально. Любая идея?

       <?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>Label</key>
    <string>com.example.exampled</string>
    <key>ProgramArguments</key>
    <array>
                 <string>/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb</string>
    </array>
    <key>KeepAlive</key>
    <true/>
       </dict>
       </plist>

2 ответа2

10

launchd не использует оболочку для запуска программ; он использует системный вызов exec . Вот почему вышеприведенный список использует массив.

Вы устанавливаете один элемент этого массива в строку, содержащую пробел, что приводит к тому, что launchd пытается выполнить exec("/usr/local/bin/ruby /Users/radek/Sites/sinatrasvn/web.rb") - что, конечно же, это не имя файла. Вместо этого вы хотите установить массив:

    <array>
                 <string>/usr/local/bin/ruby</string>
                 <string>/Users/radek/Sites/sinatrasvn/web.rb</string>
    </array>

Это передаст пути в качестве отдельных аргументов exec() , и все будет правильно.

0

У меня есть исполняемый файл, который в основном является самостоятельным хостингом. Он запускается без проблем, когда я запускаю его из терминала с кодом /Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json

Поэтому я создал скрипт plist, который хочу запустить при запуске, и сохранил его в папке LaunchAgent. При запуске я получаю сообщение об ошибке "Нет такого файла или каталога".

Вот картинка, показывающая почти всю информацию, которую я имею

Вся информация

И вот код plist

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">

<plist version="1.0">
    <dict>
        <key>KeepAlive</key>
        <dict>
            <key>SuccessfulExit</key>
            <false/>
        </dict>
        <key>Label</key>
        <string>com.wolftech.transcode.job</string>
        <key>RunAtLoad</key>
        <true/>
        <key>StandardErrorPath</key>
        <string>/tmp/com.wolftech.transcode.job.err</string>
        <key>StandardOutPath</key>
        <string>/tmp/com.wolftech.transcode.job.out</string>
        <key>StartInterval</key>
        <integer>60</integer>
        <key>ProgramArguments</key>
        <array>
            <string>/Users/user/Public/node_modules/codem-transcode/bin/codem-transcode -c /Users/user/Public/tmp/config.json</string>
        </array>
    </dict>
</plist>

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