crontab 中的符号链接,未找到脚本

crontab 中的符号链接,未找到脚本

我正在运行 Debian 测试,无法获取简单的 cron 来运行符号链接的 PHP 脚本。

我的主文件夹子目录中有一个 php 脚本/home/foobar/dir/script.php(以以下 shebang 开头#!/usr/bin/env php)。

我创建了一个指向它的符号链接:

sudo ln -s ~/dir/script.php /usr/local/bin/whatever
ls -la /usr/local/bin
lrwxrwxrwx 1 root staff 24 Feb 27 17:46 whatever -> /home/foobar/dir/script.php*

并将以下规则添加到我的 crontab(whatever每分钟执行一次):

crontab -e
* * * * * whatever

它不起作用,出现以下错误:

cat /var/mail/foobar
...
/bin/sh: 1: whatever: not found

尽管不使用符号链接即可指向脚本

crontab -e
* * * * * /home/foobar/dir/script.php

任何想法?

答案1

/usr/local/bin和等目录/usr/local/sbin默认不包含在 cronjobs 中$PATH。但你可以$PATH在 crontab 中重新定义,只需在任何定义的 cronjobs 之前添加类似这样的内容即可

PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin

答案2

cron 下的 $PATH 环境变量是有限的,既不包括 /usr/local/bin,也不包括 /home/foobar/dir。正如您所发现的,正确的答案是完全限定 crontab 中脚本的路径;这样可以减少意外。

相关内容