- ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:crontabで登録したシェルが動かなくなってしまいました)
crontabでシェルが動かない原因と解決方法
このQ&Aのポイント
- シェル初心者の方からいただいた質問です。bashコマンドでは問題なく動くシェルが、crontabコマンドで登録した場合に動かなくなってしまうという問題が発生しています。原因を特定し、解決策をご教示いただけますか?
- 質問者さんが使用しているシェルは、オラクルに接続し、hoge.sqlにかかれているsql文を実行するものです。bashコマンドで実行すると正常に動作しますが、crontabで登録すると動かないという問題が発生しています。
- 納期が近づいているため、質問者さんはかなり焦っています。この問題を解決するために、何かアドバイスや解決策があれば教えていただけると助かります。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
crontabから起動すると、.profileが読まれません。 つまり、環境変数がセットされない状態でシェルが起動されます。 ですので、sqlplusパスやORACLE_SIDなどもセットされていません。 各種設定ファイルを別ファイル化しておいて 起動時に読み込ませる必要があります。 あと、crontabに登録する際は標準出力、標準エラーを リダイレクトしてログに書き込めば原因がわかりやすいです。
お礼
ご教示頂いたとおりにログを出力しましたら、 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
補足
環境変数を設定するよう、SQLPLusを実行する前にスクリプトを改修しましたら、できました!! 本当にありがとうございます。これで一安心です。