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 中腳本的路徑;它會減少意外。

相關內容