crontab 内のシンボリックリンク、スクリプトが見つかりません

crontab 内のシンボリックリンク、スクリプトが見つかりません

Debian テストを実行していますが、シンボリックリンクされた PHP スクリプトを実行するための単純な cron を取得できません。

ホーム フォルダーのサブディレクトリに 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 に次のルールを追加しました ( whatever1 分ごとに実行):

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。ただし、$PATHcrontab で再定義できます。定義済みの cronjobs の前に次のようなものを置くだけです。

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

答え2

cron の $PATH 環境変数は制限されており、/usr/local/bin も /home/foobar/dir も含まれません。正しい答えは、あなたが見つけたように、crontab でスクリプトへのパスを完全に修飾することです。これにより、驚くようなことが減ります。

関連情報