LoginSignup
3
0

More than 5 years have passed since last update.

crontabではほとんどPATHが通っていない事を確認する

Posted at

最近、oracleに対してSQLPlusやSQL*Loaderで定期的にデータを云々する必要があったのですが、crontabでハマって手間取ったので備忘録も兼ねて残しておきます。

前提

OS:CentOS Linux release 7.0.1406 (Core)

結論

  • crontabでは/usr/bin/binしかパスが通っていない
  • ちなみに実行時のカレントディレクトリはユーザのホームディレクトリ

確認

printenvでPATHを表示した場合

[kabu0404@DARIUS ~]$ printenv PATH
/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/kabu0404/.local/bin:/home/kabu0404/bin

crontabで同じコマンドを実行した場合

[kabu0404@DARIUS ~]$ crontab -l
*/1 * * * * printenv PATH > ~/path.txt
[kabu0404@DARIUS ~]$ cat path.txt
/usr/bin:/bin

crontab内でパスを通した場合

[kabu0404@DARIUS ~]$ crontab -l
*/1 * * * * printenv PATH > ~/path_before.txt; export PATH=/usr/local/bin:$PATH; printenv PATH > ~/path_after.txt
[kabu0404@DARIUS ~]$ cat path_before.txt
/usr/bin:/bin
[kabu0404@DARIUS ~]$ cat path_after.txt
/usr/local/bin:/usr/bin:/bin

実行時のカレントディレクトリ

ついでに調べてみた

[kabu0404@DARIUS ~]$ crontab -l
*/1 * * * * pwd > ~/pwd.txt
[kabu0404@DARIUS ~]$ cat pwd.txt
/home/kabu0404

チラシの裏

crontabを使用する場合は、実行するスクリプト内でパスを通すか、コマンドをフルパスで書くか、どちらかでしょうか。パスを通した方が、別環境でパスが違う時とかに対応しやすそうですかね。
いずれにせよwhichを使うなどして「自分が使うコマンドがどこにあるのか」というのは意識しておいた方が良さそうですね。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0