0

我有以下脚本,我想每小时运行一次。在以下简单的 bash 脚本中,我已将 launchd 设置为每小时运行一次:

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

它不能与 sudo 一起运行,也不能在没有 sudo 的情况下运行。我需要 sudo 才能使脚本正常工作。不太确定如何解决这个问题。

任何建议表示赞赏。

4

2 回答 2

0

中的 Cron 作业/etc/crontab可以以 root 身份运行,因此它们不需要sudo运行,您只需sudo最初编辑文件即可。

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

于 2013-07-30T15:34:05.263 回答
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>

另外,请确保您正确运行脚本。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>
于 2013-07-30T16:28:02.673 回答