我有一些需要每小时安排一次的 php 脚本。
(a)如何从命令行/shell 调度它们?
(b)我应该对它们设置什么权限/所有权?
编辑1:
大家好 - 该网站由“apache”用户运行。cron 脚本以哪个用户身份运行?root 还是 apache 还是其他?
答案1
crontab -e
将打开你的个人 crontab 的 crontab 编辑器(假设管理员允许)。在这里,你可以输入如下一行
0 * * * * /usr/bin/php /home/matt_tm/php/runme.php
每个脚本一次,其中/usr/bin/php
包含命令行 php 二进制文件的完整路径以及要运行的 php 文件的完整路径。
这将在每小时的第 0 分钟 (:00)、每月的每一天、每月的每一天以及每周的每一天运行脚本(您可能希望将它们分散开来,以便一个脚本从 0 开始,另一个从第 5 分钟开始,依此类推)。您个人 crontab 中的命令以您的帐户运行,因此在这种情况下,您的脚本所需要的只是您的帐户能够读取脚本、执行 php 二进制文件并有权访问脚本所需的所有文件。
答案2
作为 DerfK 答案的替代,您也可以用该行启动每个 PHP。
#!/path/to/php
并将该文件设置为可执行文件。
你的 crontab 行现在将如下所示:
0 * * * * /path/to/php/script.php
答案3
(a) 您可以使用 php-cli 或 wget/curl (其他实用程序) (b) 执行权限。如果 php 脚本需要创建文件,请确保权限与运行的用户相同。
答案4
要安排它们,请为它们应该以之运行的用户编辑 cronfile。“man crontab”应该会告诉您如何做到这一点。
至于所有权,这完全取决于脚本应该做什么。如果它们修改某些资源,则脚本必须具有用户或组权限才能修改资源(假设该资源是本地文件)。在类 Unix 系统上执行此操作的最明智方法通常是通过组权限。