crontabに設定書いて実行した場合の環境変数を調べてみた
cronって実行ユーザーや環境変数がどうなるのかよく分からず、なんとなく避けてたんですが、いい加減調べてみる事にしました。
crontabで色々設定したのとsshでログインしてる際の環境変数を比べます。
ちょっと色々と入れてあったりと雑多な環境なので、こういうの確認するにはあんまり良くなかったかもしれないけど。
crontabでただ実行するだけ
$ crontab -l 10 17 * * * printenv
SHELL=/bin/sh USER=myuser PATH=/usr/bin:/bin PWD=/home/myuser SHLVL=1 HOME=/home/myuser LOGNAME=myuser _=/usr/bin/printenv
crontabでSHELL
を設定
$ crontab -l SHELL = /bin/bash 13 17 * * * printenv
SHELL=/bin/bash USER=myuser PATH=/usr/bin:/bin PWD=/home/myuser SHLVL=1 HOME=/home/myuser LOGNAME=myuser _=/usr/bin/printenv
crontabでbashをログインシェルとして起動する
$ crontab -l 16 17 * * * bash --login -c 'printenv'
GRAILS_HOME=/usr/local/grails HOSTNAME=localhost.localdomain SHELL=/bin/sh HISTSIZE=1000 APPENGINE_HOME=/usr/local/appengine-java-sdk-1.3.0 USER=myuser LS_COLORS= MAVEN_HOME=//usr/local/apache-maven-2.2.1 MAIL=/var/spool/mail/myuser PATH=/usr/kerberos/bin:/usr/bin:/bin:/usr/java/latest/bin:/usr/local/groovy/bin:/usr/local/grails/bin://usr/local/apache-maven-2.2.1/bin:/usr/local/appengine-java-sdk-1.3.0/bin:/home/myuser/bin INPUTRC=/etc/inputrc PWD=/home/myuser JAVA_HOME=/usr/java/latest LANG=ja_JP.UTF-8 HOME=/home/myuser SHLVL=2 LOGNAME=myuser GROOVY_HOME=/usr/local/groovy CVS_RSH=ssh CLASSPATH=.:/usr/java/latest/jre/lib:/usr/java/latest/lib:/usr/java/latest/lib/tools.jar:/usr/local/groovy/embeddable/groovy-all-1.6.7.jar LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/usr/bin/printenv
sshでログインした場合
$ printenv GRAILS_HOME=/usr/local/grails HOSTNAME=localhost.localdomain TERM=xterm SHELL=/bin/bash HISTSIZE=1000 SSH_CLIENT=192.168.35.74 4102 22 APPENGINE_HOME=/usr/local/appengine-java-sdk-1.3.0 SSH_TTY=/dev/pts/35 USER=myuser LS_COLORS=no=00:fi=00:di=00;34:ln=00;36:pi=40;33:so=00;35:bd=40;33;01:cd=40;33;01:or=01;05;37;41:mi=01;05;37;41:ex=00;32:*.cmd=00;32:*.exe=00;32:*.com=00;32:*.btm=00;32:*.bat=00;32:*.sh=00;32:*.csh=00;32:*.tar=00;31:*.tgz=00;31:*.arj=00;31:*.taz=00;31:*.lzh=00;31:*.zip=00;31:*.z=00;31:*.Z=00;31:*.gz=00;31:*.bz2=00;31:*.bz=00;31:*.tz=00;31:*.rpm=00;31:*.cpio=00;31:*.jpg=00;35:*.gif=00;35:*.bmp=00;35:*.xbm=00;35:*.xpm=00;35:*.png=00;35:*.tif=00;35: MAVEN_HOME=//usr/local/apache-maven-2.2.1 MAIL=/var/spool/mail/myuser PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/java/latest/bin:/usr/local/groovy/bin:/usr/local/grails/bin://usr/local/apache-maven-2.2.1/bin:/usr/local/appengine-java-sdk-1.3.0/bin:/home/myuser/bin INPUTRC=/etc/inputrc PWD=/home/myuser JAVA_HOME=/usr/java/latest LANG=ja_JP.UTF-8 SHLVL=1 HOME=/home/myuser LOGNAME=myuser GROOVY_HOME=/usr/local/groovy CVS_RSH=ssh CLASSPATH=.:/usr/java/latest/jre/lib:/usr/java/latest/lib:/usr/java/latest/lib/tools.jar:/usr/local/groovy/embeddable/groovy-all-1.6.7.jar SSH_CONNECTION=192.168.35.74 4102 192.168.14.56 22 LESSOPEN=|/usr/bin/lesspipe.sh %s G_BROKEN_FILENAMES=1 _=/usr/bin/printenv
PATHの比較
色々ごちゃごちゃとしてる環境だったからかもしれないけど、若干PATHが違いました。
crontabでbashをログインシェルとして起動する
PATH=/usr/kerberos/bin:/usr/bin:/bin:/usr/java/latest/bin:/usr/local/groovy/bin:/usr/local/grails/bin://usr/local/apache-maven-2.2.1/bin:/usr/local/appengine-java-sdk-1.3.0/bin:/home/myuser/bin
sshでログインした場合
PATH=/usr/kerberos/bin:/usr/local/bin:/bin:/usr/bin:/usr/java/latest/bin:/usr/local/groovy/bin:/usr/local/grails/bin://usr/local/apache-maven-2.2.1/bin:/usr/local/appengine-java-sdk-1.3.0/bin:/home/myuser/bin