私はcronとcrontabでタスクをスケジューリングするのが初めてです。あたかも私がログオンして、端末を開いて、自分で実行したかのように、タスクの実行をスケジュールしようとしています。crontab PATHとUSER
はしかし、私は私がスケジュールされたタスクがで実行されているものを$ USERおよび$ PATH観察を支援するタスクをスケジュールし、そしてこれは私が見つけたものです:
$ crontab -l
41 11 * * * echo "USER: $USER" > ~/Desktop/cron_env.log; echo "PATH: $PATH" >> ~/Desktop/cron_env.log
$ cat ~/Desktop/cron_env.log
USER:
PATH: /usr/bin:/bin
の$ USERが設定されていないかのようにそれが表示されます$ PATHは非常に基本的なもので、デフォルトのものです。逆に、これは私が(ログイン)ターミナルを開き、この同じ情報をエコーするとき、私が見たものである。
USER: aschirma
PATH: /usr/lib/jvm/java-6-sun/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/pkg/icetools/bin:/pkg/hwtools/bin:/pkg/netscape/bin:/pkg/gnu/bin
私は私のcrontabのタスクは、私が好きな方法を実行するために行うには何が必要ですか?
OPを:研究のいくつかの量の後、それは根の環境を取得する最も簡単な方法は、我々がそうであるように、我々は発行されて、他のすべてのアプリケーションのルートに同じ技術を使用することであることを私たちに夜が明けました。 cronから起動されたスクリプトは正しいPATHを継承していません。実際には、それは私が最初に問題にぶつかり始めたところです:PATHが正しくないので、cronから実行されたbashスクリプトはPATH内のものを見つけられませんでした。 –
@AdamSそれは問題です、彼らはあなたのログインシェルから取得したものと同じではないcronデーモンによって与えられたPATH(および他のいくつかの変数)を継承します。もし必要ならcrontabファイルにPATHを設定できます。 – KurzedMetal
マンページから: '環境変数の置換や置換のために値の文字列が解析されないため、PATH = $ HOME/bin:$ PATHのような行は期待通りに機能しません。 ' – blujay