アプリ版:「スタンプのみでお礼する」機能のリリースについて

シェル初心者です。
宜しくお願い致します。

bashコマンドで起動させると上手く動くのですが、
crontabコマンドで登録すると、全く動いてくれないのです。

ネットで色々調べましたが、原因がさっぱりわかりません。
何卒ご教示お願い致します。

【シェルの内容】
●オラクルに接続し、hoge.sqlにかかれているsql文を実行するシェルです。
cd /h/ho/hog/hoge/
sqlplus hoge/hoge2@hogehoge @/h/ho/hog/hoge/hoge.sql

ちなみにhoge.sqlは、以下のような内容です。
(⇒test.sqlの内容をcsvファイルに出力する)
set echo off
set heading off
set pause off
set pagesize 0
set linesize 32767
set feedback off
set trimspool on
set termout off

column log_date new_value log_date_text noprint
select to_char(sysdate,'yyyymmddhh24miss') log_date from dual;
spool TEST_&log_date_text..csv

@/h/ho/hog/hoge/test.sql
※test.sqlはselect文です。

spool off

exit

納期が近づいているため、かなり焦っています。
宜しくお願い致します。

●その他
サーバ:Sun OS 5.9
oracle:9.2.0.1.0

                         以上

A 回答 (1件)

crontabから起動すると、.profileが読まれません。


つまり、環境変数がセットされない状態でシェルが起動されます。

ですので、sqlplusパスやORACLE_SIDなどもセットされていません。
各種設定ファイルを別ファイル化しておいて
起動時に読み込ませる必要があります。

あと、crontabに登録する際は標準出力、標準エラーを
リダイレクトしてログに書き込めば原因がわかりやすいです。

この回答への補足

環境変数を設定するよう、SQLPLusを実行する前にスクリプトを改修しましたら、できました!!

本当にありがとうございます。これで一安心です。

補足日時:2008/11/17 15:48
    • good
    • 0
この回答へのお礼

ご教示頂いたとおりにログを出力しましたら、
bashとcron起動時のログでかなり異なっておりました。

具体的に以下のどの環境変数を設定すればいいのでしょうか。
(bashコマンドで実行した際に以下の変数名が出ておりました)
大変恐縮ですが、ご教示頂ければ幸いです。
※設定はexportコマンドで宜しいでしょうか。

PWD
TZ
HZ
HOSTNAME
LD_LIBRARY_PATH
CLASSPATH
HTTP_PROXY
MACHTYPE
MAIL
OLDPWD
LANG
ORACLE_BASE
ORACLE_HOME
LOGNAME
SHLVL
ORA_NLS33
SHELL
HOSTTYPE
OSTYPE
HOME
TERM
NLS_LANG
PATH

お礼日時:2008/11/17 15:24

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

関連するカテゴリからQ&Aを探す


このQ&Aを見た人がよく見るQ&A