OSX与su一起推出

时间:2013-07-30 15:04:00

标签: perl bash sudo launchd

我想要每小时运行以下脚本。我已经将launchd设置为每小时运行一次,使用以下简单的bash脚本:

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

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

任何建议表示赞赏。

2 个答案:

答案 0 :(得分:0)

/etc/crontab中的Cron作业可以以root用户身份运行,因此无需运行sudo,您只需要sudo来编辑该文件。

尝试将您的作业添加到/etc/crontab,如果它不起作用,请提供您用于运行它的语法,以及尝试从那里运行它的输出,说明它无效的原因。

答案 1 :(得分:0)

sudo以root身份运行命令;默认情况下,启动守护进程以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>

另外,请确保正确运行脚本。 launchd .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>