2013-07-30 4 views
0

매시간마다 다음 스크립트를 실행하고 있습니다. 나는 다음과 같은 간단한 bash는 스크립트에 모든 시간을 실행하기 위해 launchd에를 설정 한 : 그것은 sudo를 함께하거나 sudo는하지 않고 실행되지 않습니다su와 OSX 발사

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

. 스크립트가 작동하려면 sudo가 필요합니다. 이 문제를 어떻게 해결할 지 잘 모릅니다.

감사의 말.

+4

사람들은'launchd'를'launch' 편집을 중단하십시오. 'launchd'는 오타가 아닌 OS x 프로그램입니다. – Jasper

답변

0

/etc/crontab의 Cron 작업은 루트로 실행할 수 있으므로 sudo을 실행할 필요가 없으므로 처음에는 파일을 편집하려면 sudo이 필요합니다.

/etc/crontab에 작업을 추가하고 작동하지 않는 경우 실행에 사용 된 구문과 그로부터 실행을 시도한 결과가 작동하지 않는 이유를 보여줍니다.

+0

OSX에서 crontab이 사용되지 않으므로 launchd로 이동합니다. –

0

sudo은 루트 권한으로 명령을 실행합니다. 데몬은 기본적으로 루트로 실행되므로 sudo은 불필요하고 관련이 없습니다. 스크립트가 시작 데몬으로 실행되고 있지 않으면 다른 것이 잘못되었습니다. launchd에 스크립트를 실행하려고 발생한 오류에 대한 /var/log/system.log 확인하고 어쩌면 .plist 파일에 이런 식으로 뭔가를 추가하여 스크립트의 출력을 캡처 : 또한

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

, '당신이 있는지 확인 스크립트를 제대로 실행하십시오. launchd .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

권한이없는 것 같습니다. 스크립트가 호출되어야하지만 응용 프로그램에서 사용 권한 문제를보고하고 있습니다. 나는 또한 펄 스크립트를 직접 호출하는 것을 보았다. 내 bash 스크립트는 4 개의 펄 스크립트를 실행합니다. 그래서 launchd 항목과 실행되는 실제 스크립트를 구분했습니다. –