Debian クローンのマニュアルページで、
/etc/cron.d/のファイルは/etc/crontabとは無関係です。たとえば、独立していません。継承する環境変数の設定は以下から取得します。それ。
そしてLinuxQuestions.orgフォーラムで:/etc/crontab および /etc/cron.d および /var/spool/cron/crontabs/、
/etc/cron.d/のスクリプトは環境変数をロードしません。
ルートとしてコマンドを追加したとします。/etc/crontab ファイルから。それが本当ならcrontab行を実行すると、ユーザーの環境変数がロードされます。どのスクリプトを/etc/cron.dに入れてもロードされません。
私が強調した文が何を意味するのか知りたいです。 「継承」は何から来たのか?
のために
/etc/cron.d/*
、cronは環境変数をリセットするため、タスク定義行から特定のユーザーの環境変数をロードしません。作成後
/etc/cron.d/myjob
35 * * * * t echo $PATH > /tmp/cron.log 2>&1
/tmp/cron.log
表示PATHのデフォルト値は次のとおりです。/usr/bin:/bin
これはルートディレクトリへのパスではありません。
$ sudo su # echo $PATH /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games
で
/etc/crontab
私は追加しました* * * * * root echo $PATH > /tmp/cron.log 2>&1 * * * * * t echo $PATH > /tmp/cron.log.1 2>&1
これにより、ルートのcronジョブPATH値がルートの値ではありません。
$ cat /tmp/cron.log /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
私のcronジョブのPATH値は私のものではありません(で修正されました
~/.profile
)。$ cat /tmp/cron.log.1 /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin $ echo $PATH /home/t/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games:/usr/local/games:/opt/mssql-tools/bin $ less ~/.profile | grep PATH PATH="$HOME/bin:$PATH" PATH="$PATH:/opt/mssql-tools/bin"
ありがとうございます。
ベストアンサー1
からman 5 crontab
:
crontabのアクティブな行は次のとおりです。環境設定またはcronコマンド。
つまり、コメントアウトされていない行(#
)は次のようになります。
PATH = /bin:/sbin
PATH
これにより、ファイル全体の値が設定されますcrontab
。
値を設定しない場合、組み込み値(コード内)この回答に示すように使用される。
PATHを設定するcrontabファイルの例:
SHELL=/bin/bash
MAILTO=root
PATH=~/bin:/usr/bin/:/bin
# Edit this file to introduce tasks to be run by cron.
#.---------------- minute (m) (0 - 59)
#| .------------- hour (h) (0 - 23)
#| | .---------- day of month (dom) (1 - 31)
#| | | .------- month (mon) (1 - 12) OR jan,feb,mar,apr ...
#| | | | .---- day of week (dow) (0 - 6) (Sunday=0 or 7) OR sun,mon,tue,wed,thu,fri,sat
# .---- user
#| | | | | |
#* * * * * root echo "the command to be executed"
#
#m h dom mon dow user command
* * * * * root echo "A crontab file test"