gpt4 book ai didi

ubuntu - 在crontab中执行php

转载 作者:行者123 更新时间:2023-12-04 18:57:58 24 4
gpt4 key购买 nike

我有一个 usr/local/bin/test.sh 文件:

#!/bin/bash
rm -f /tmp/stat/top-1m.csv.zip
wget -P /tmp/stat/ http://s3.amazonaws.com/alexa-static/top-1m.csv.zip
rm -f /tmp/stat/top-1m.csv
unzip -d /tmp/stat/ /tmp/stat/top-1m.csv.zip
php test.php /tmp/stat/top-1m.csv

我正在尝试使用 crontab 在服务器上运行它。/etc/crontab 中的代码:
SHELL=/bin/bash
PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin:/tmp/stat
MAILTO=root
HOME=/

25 12 * * * root /usr/local/bin/test.sh

.zipped 文件被下载并解压缩(非常缓慢,但完成了)。我的 test.php 文件应该从文件中收集数据并将其插入 mysql 数据库。测试。
如果我在终端中执行 test.sh,一切都很好。但是没有任何东西通过 cron 作业写入数据库。为什么是这样?我什至不知道它是否开始 ezecuting test.php。

帮助?

最佳答案

cron 中的 PATH 变量不是您登录时获得的变量。很简单:cron 不会让您(或任何其他用户)登录。

同样,您在登录时拥有一个当前目录,这与 root 的 cron 作业将使用的目录不太可能相同。

最简单和最健壮的解决方案是在所有命令前添加完整路径,例如 php、unzip、wget ...
并 cd 到您需要所在的目录。

要找出您在登录时执行命令时使用的路径,请使用“which”:

所以例如:

$ which php
/weird/place/php

将意味着您替换行 php test.php /tmp/stat/top-1m.csv/weird/place/php test.php /tmp/stat/top-1m.csv同样,也将位置添加到脚本 test.php 中。所以你最终会得到像 /weird/place/php /home/user/subdir/test.php /tmp/stat/top-1m.csv 这样的东西

通常,unix 系统设置为将 cronjobs 的输出通过电子邮件发送给拥有 crontab 的用户。从外观上看,可能是您的根源。检查该电子邮件并尝试将其发送给您,以便您可以查看这些错误并根据需要对其使用react。

关于ubuntu - 在crontab中执行php,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30302057/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com