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 に次のルールを追加しました ( whatever
1 分ごとに実行):
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 でスクリプトへのパスを完全に修飾することです。これにより、驚くようなことが減ります。