crontab PATH変数を設定する方法

crontab PATH変数を設定する方法

crontabでスクリプトを実行する際に問題があります。調査した結果、PATHパラメータに/ sbinが含まれていないため、問題が発生することがわかりました。

/etc/crontabに含まれる内容を見てみました。

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

テスト - PATH変数を印刷する簡単なクローン操作:

* * * * * echo $PATH &> /root/TMP.log

出力は次のとおりです

cat /root/TMP.log
/usr/bin:/bin

この動作を理解していません。 PATH変数を設定する方法..?それとも、より良い方法は何ですか?パスを追加するには?

ベストアンサー1

同様ですが、ユーザーcrontab(crontab -eで編集)はシステムcrontab(/ etc / crontab編集で編集)とは異なり、システムcrontabとは別のパスに保持されます。

システムcrontabには7つのフィールドがあり、コマンドの前にユーザー名が挿入されます。ユーザーcrontabには6つのフィールドのみがあり、コマンドは時間フィールドの直後に挿入されます。

同様に、システムcrontabのPATHには通常/ sbinディレクトリが含まれていますが、ユーザーcrontabのPATHには含まれていません。ユーザーcrontabにPATHを設定するには、ユーザーcrontabでPATH変数を定義する必要があります。


cronのシェルコマンドに一般的なPATHを追加する簡単な回避策は、ログインシェルでbashを実行してcronjobに設定ファイルをインポートさせることです。たとえば、代わりに

* * * * * some command

代わりに実行できます

* * * * * bash -lc some command

これにより、構成ファイルがPATHまたは他の環境変数を特別なものに設定した場合、その内容がコマンドに含まれます。

おすすめ記事