2013-07-30 2 views
0

У меня есть следующий скрипт, который я хочу запускать каждый час. Я настроить запуск программ для запуска каждый час, на следующей простой Баш скрипт:OSX launchd с su

sudo perl /Library/WebServer/CGI-Executables/awstats.pl -config=alpha -update 

Она не работает с Судом, ни без Судо. Мне нужно sudo для работы скрипта. Не совсем уверен, как обойти это.

Любые советы, оцененные.

+4

Люди, пожалуйста, прекратите редактирование 'launchd'' '' запущен'. 'launchd' - это программа OS x, а не опечатка. – Jasper

ответ

0

Работы Cron в /etc/crontab могут выполняться от имени пользователя root, поэтому для их работы не требуется sudo, вам нужно только sudo, чтобы отредактировать файл.

Попробуйте добавить свою работу в /etc/crontab, и если это не сработает, укажите синтаксис, который вы использовали для его запуска, и выход из попытки запустить его там, показывая, почему он не работает.

+0

Переход на запуск, поскольку crontab устарел в OSX. –

0

sudo выполняет команду как корень; Запуск демонов выполняется как root по умолчанию, поэтому sudo не нужен и не имеет значения. Если сценарий не запущен как демон запуска, что-то еще не так. Проверьте /var/log/system.log за любые ошибки, с которыми сталкиваются, пытаясь запуск программ, чтобы запустить сценарий, и, возможно, захватить вывод скрипта, добавив что-то вроде этого к .plist файла:

<key>StandardOutPath</key> 
<string>/var/root/awstats.out</string> 
<key>StandardErrorPath</key> 
<string>/var/root/awstats.err</string> 

Кроме того, убедитесь, что вы» перезапустите скрипт правильно. Файл запуска .plist не анализирует команды, такие как командная строка оболочки, он ожидает, что вы передадите ему предварительно проанализированные элементы, например. каждый аргумент команды в виде отдельной строки:

<key>ProgramArguments</key> 
    <array> 
     <string>/usr/bin/perl</string> 
     <string>/Library/WebServer/CGI-Executables/awstats.pl</string> 
     <string>-config=alpha</string> 
     <string>-update</string> 
    </array> 
+0

Кажется, у меня нет разрешений. Сценарий должен быть вызван, но приложение сообщает о проблемах с разрешениями. Я также вижу, что вы вызываете скрипт perl напрямую. Мой скрипт bash запускает 4 perl-скрипта. Поэтому я отделил запись launchd и фактический скрипт, который он запускает. –

Смежные вопросы