我有以下脚本,我想每小时运行一次。在以下简单的 bash 脚本中,我已将 launchd 设置为每小时运行一次:
sudo perl /Library/WebServer/CGI-Executables/awstats.pl -config=alpha -update
它不能与 sudo 一起运行,也不能在没有 sudo 的情况下运行。我需要 sudo 才能使脚本正常工作。不太确定如何解决这个问题。
任何建议表示赞赏。
中的 Cron 作业/etc/crontab
可以以 root 身份运行,因此它们不需要sudo
运行,您只需sudo
最初编辑文件即可。
尝试将您的作业添加到/etc/crontab
,如果它不起作用,请提供您用于运行它的语法,以及尝试从那里运行它的输出,说明它为什么不起作用。
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>