shell스크립를 만들어 놓고 잘 구동되는것을 확인한다음 crontab에 등록하게 되면
잘 될꺼라는 무한신뢰를 나타낸다.
하지만 간혹 crontab에서 구동을 시켜도 잘 안되는 경우가 있다.
대표적인 사례로 shell스크립 를 이용해서 ruby나 grovy같은 외부 라이브러리를 import 해서
사용하는 사례가 대표적이다.

crontab이 만들어낸 오류

/usr/local/lib/ruby/site_ruby/1.8/dbi.rb:344:in `load_driver': Could not load driver (libclntsh.so.10.1: cannot open shared object file: No such fi
le or directory - /usr/local/lib/ruby/site_ruby/1.8/i686-linux/oci8lib.so) (DBI::InterfaceError)
    from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:227:in `_get_full_driver'
    from /usr/local/lib/ruby/site_ruby/1.8/dbi.rb:213:in `connect'
    from /neouser/script/work/common/dbi.rb:45:in `connectHDBOracle'
    from /neouser/script/work/common/dbi.rb:149:in `getResultHDB'
    from /test/work/neouser/work_ebook/report.rb:21:in `userCnt'
    from /test/work/neouser/work_ebook/report.rb:68


이상하다.. 그냥 shell 명령어를 실행했을때는 잘 나오던 결과가 crontab에서는 해당 명령어가
잘 실행되지 않는다.  그래서 내가 사용하는  test계정을 살펴본다.

[test@test ~/work/neouser/work] env
..
..
USER=test
export LD_LIBRARY_PATH=/usr/lib/oracle/10.0.0.0/client/lib
export ORACLE_SID=TESTDB
export MYSQL_INCLUDE=/test/mysql/include
export ORACLE_HOME=/usr/lib/oracle/10.0.0.0/client
export G_BROKEN_FILENAMES=1
..


계정이 실행된 배경에는 이와같은 환경 변수가 내포 되어있던 것이다.
그렇다면 스크립트안에 뭔가 더 넣어줘야겠네.. ㅎㅎ

#!/bin/bsh
export LD_LIBRARY_PATH=/usr/lib/oracle/10.2.0.4/client/lib
export ORACLE_SID=BLOGDB
export MYSQL_INCLUDE=/test/mysql/include
export ORACLE_HOME=/usr/lib/oracle/10.2.0.4/client
export G_BROKEN_FILENAMES=1

cd /test/work/neouser/work
./test.rb >> log.log




내가 이것으로 2시간을 허비한 것을 생각하면.. 애효..
월급주는 회사가 고맙다.



글 보관함

카운터

Total : / Today : / Yesterday :
get rsstistory!