2013-07-30 64 views
0

我有以下脚本我想每小时运行一次。我已经设置了launchd会为每小时运行,在下面的内容:OSX与su启动

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

它不使用sudo也没有sudo运行。我需要sudo脚本才能工作。不确定如何解决这个问题。

任何意见赞赏。

+4

人们,请停止编辑'launchd'到'launch'。 'launchd'是一个OS X程序,不是拼写错误。 – Jasper

回答

0

/etc/crontab中的Cron任务可以作为root运行,因此他们不需要sudo来运行,您只需要sudo来初始编辑文件。

尝试将作业添加到/etc/crontab,如果它不起作用,请提供您用来运行它的语法以及试图从那里运行它的语法输出,以说明为什么它不起作用。

+0

由于在OSX中不推荐使用crontab,因此转移到启动状态。 –

0

sudo以root身份运行一个命令;启动守护进程默认以root用户身份运行,因此sudo是不必要的也是不相关的。如果该脚本没有作为启动守护进程运行,则其他问题是错误的。检查/var/log/system.log为launchd会遇到试图运行脚本的任何错误,并可能通过增加像这样的文件的.plist拍摄脚本的输出:

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

此外,还要确保你”正确地重新运行脚本。启动的.plist文件不会像shell命令行那样分析命令,它希望您将预先分析的元素每个命令参数作为单独的字符串:

<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条目和它运行的实际脚本。 –