
こんにちは、質問をさせていただきます。
Linux(FC5)でCrontabコマンドとplファイルを利用して、JAVAを定期的に起動させようとしています。
plファイルのログでは処理が実行されたようになっているのですが、何故かJAVAが起動していません。(結果からJAVAが実行されていません)
Crontabでなく、手動でplファイルを実行すると問題なくJAVAは起動されます。
plファイルの詳細とcrontabの詳細およびファイルのモードは下記のとおりです。
よろしくお願いします。
・plファイル
cd /javaのディレクトリ
/usr/java/jdk1.5.0_08/bin/java javaファイル
echo "実行" >> date.log
date >> date.log
・Crontab
00 17 * * * /plファイル
・crontabのファイルモード
-rw------- 1 root root 42 12月 21 16:58 root
以上
No.4ベストアンサー
- 回答日時:
直接起動するとうまく行くのにcronで駄目なのは、99.9%環境変数の問題です。
cronで起動されるプロセスでは、
PATH=/usr/bin:/bin
HOME=/root
LOGNAME=root
SHELL=/bin/sh
PWD=/root
程度しか環境変数が設定されません。必要な環境変数は、起動されるプロセス内で定義するか、crontabファイル内に書く必要があります。この場合は、crontabファイルの先頭に、
PATH=...
JAVAHOME=...
CLASSPATH=...
と書けばいいです。
ご返答ありがとうございます。
ご指摘のとおりに、crontabファイルの先頭にPATH、JAVAHOME、CLASSPATHを追加したところ処理に成功いたしました。
plファイルに環境変数を追加しても駄目でしたので、環境変数ではないのかと思っていましたが、ご指摘のとおり問題は環境変数でした。
おかげで、仕事が越年せずに済みました。
大変助かりました。
ありがとうございました。
以上
No.3
- 回答日時:
前に似たような事をやってて、次のように解決しました。
cronの実行ユーザはrootではない可能性があるので
シェルスクリプト内で環境変数をセットしたんです。
#!/bin/bash
PATH=/usr/java/jdk1.5.0_08/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/java
JAVA_HOME=/usr/java/jdk1.5.0_08
CLASSPATH=.:/usr/java/jdk1.5.0_08/lib/tools.jar:/usr/java/jdk1.5.0_08/lib/postgresql-8.1407.jdbc3.jar:/usr/java/jdk1.5.0_08/lib/ojdbc14_g.jar:/usr/java/jdk1.5.0_08/lib/postgresql.jar:/usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc2.jar
/usr/java/jdk1.5.0_08/bin/java bumon >> date.log 2>&1
echo "部門 コピー" >> date.log
date >> date.log
こんな感じで。
ご返答ありがとうございます。
plファイルに環境変数を追加して、結果は駄目でしたが問題はご指摘のとおり問題は環境変数でした。
今回の件は,大変勉強になりました。
ありがとうございました。
以上
No.2
- 回答日時:
JavaのCLASSPATHなどの環境変数をcronを実行してるユーザにきっちり設定していますか?
ログインシェルに書いてあってもそれは無意味です。
簡単なのはそのcronで動かすperlファイルに必要な環境変数をきっちりと設定してみるとか。
この回答への補足
早速のお答えありがとうございます。
確かにJAVA実行時に「java.lang.ClassNotFoundException:org.postgresql.Driver」が発生していたので、envコマンドでCLASSPATHの環境変数を確認しましたが、問題になりそうな部分はありませんでした。
cronで起動する場合は、何か別の環境設定が必要なのでしょうか?
必要なのであれば、できればその設定方法も教えてください。
よろしくお願いします。
・envの結果(抜粋)
SHELL=/bin/bash
USER=root
PATH=/usr/java/jdk1.5.0_08/bin:/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin:/root/java
JAVA_HOME=/usr/java/jdk1.5.0_08
CLASSPATH=.:/usr/java/jdk1.5.0_08/lib/tools.jar:/usr/java/jdk1.5.0_08/lib/postgresql-8.1407.jdbc3.jar:/usr/java/jdk1.5.0_08/lib/ojdbc14_g.jar:/usr/java/jdk1.5.0_08/lib/postgresql.jar:/usr/java/jdk1.5.0_08/lib/postgresql-8.1-407.jdbc2.jar
・plファイル(ログを取得するように変更)
/usr/java/jdk1.5.0_08/bin/java bumon >> date.log 2>&1
echo "部門 コピー" >> date.log
date >> date.log
No.1
- 回答日時:
直接の回答ではありませんが、
/usr/java/jdk1.5.0_08/bin/java javaファイル
を
/usr/java/jdk1.5.0_08/bin/java javaファイル >> date.log 2>&1
として何かエラーが出力されてないかcronで実行して調べてみてはいかがでしょうか。
早速のお答えありがとうございます。
ご指摘のとおりにログにJAVAのエラーを吐き出すようにした結果、実行時に「java.lang.ClassNotFoundException:org.postgresql.Driver」が発生していました。
しかし、envコマンドでCLASSPATHの環境変数を確認しましたが、問題になりそうな部分はありませんでした。
他にも気をつけるべきところなどがあればお教えください。
よろしくお願いします。
・plファイル(ログを取得するように変更)
/usr/java/jdk1.5.0_08/bin/java bumon >> date.log 2>&1
echo "部門 コピー" >> date.log
date >> date.log
以上
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux cronの@rebootでのdateコマンドの実行につきまして 2 2023/06/11 16:23
- UNIX・Linux ubuntuのサーバー(virtual box)が、再起動するとデータが消えてしまいます。 4 2022/04/27 21:29
- Java マイクラjavaでForgeを入れたいのですが、インストールした.jarファイルが展開されてしまい中 1 2023/07/28 22:30
- ゲーム Java 版のマインクラフトでwindows11のパソコンなんですけど、友達から1.7.10のワール 1 2023/08/12 00:28
- C言語・C++・C# 至急お願いします。C言語で.imgのファイルを読み込んで1バイトづつ出力するプログラムを作りたいので 3 2023/01/16 22:49
- JavaScript [Java] Edgeでのアドレスバー非表示について 3 2022/04/20 17:51
- システム CSVファイルのマッピング処理の省力化 1 2022/11/24 00:01
- Java jdk17.06のインストーラーが起動しない 1 2023/03/27 21:58
- UNIX・Linux Kali Linuxで起動できない - Minimal BASH Like Line Editing 1 2022/06/03 13:14
- Java java 次の機能を有するメソッドを自クラスに作成し、実装したいです。 機能 名前判定機能 →名前が 3 2022/06/16 16:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Telnetのメニュー選択形式
-
DebianLinuxのコマンドプロンプ...
-
sudoの動作について
-
vipwの不具合につきまして、
-
pLaTeXとxdviを一気に行わせる...
-
phpファイルをcronで動かすには?
-
シェルスクリプトでPHPを実行し...
-
サーチPathに付きまして
-
主モニタと副モニタを切り替え...
-
PATH環境変数
-
ルートのパスワードを変更する...
-
スクリプトのエラー「unexpecte...
-
chmodをapplescriptで実行したい。
-
シンボリックリンクの作成
-
crontab が想定とおりに処理さ...
-
Mac OSXのターミナルに関して
-
Apache2.0のバージョンを確認す...
-
cronでシェルスクリプト実行時...
-
/usr のリネーム
-
お気に入りの処理について。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
スクリプトのエラー「unexpecte...
-
bashでシングルクォート内の変...
-
シェルスクリプト実行で”そのよ...
-
Linux 月を英語表示したい
-
crontabでjavaだけが上手く動い...
-
Linuxでシェルスクリプトがフル...
-
crontabでsql/plusの起動
-
Cシェルのかっこいいプロンプト...
-
UNIXのbashエラーでnot a valid
-
Linuxで自作バッチファイルの置...
-
cron設定で正常に動作しない
-
sudoでシェルスクリプトを実行...
-
ロケールをutf8からsjisにする...
-
CygwinでX Windiws Systemが起...
-
cronの@rebootでのdateコマンド...
-
hp-uxで時間(時計)を合...
-
自動パスワード入力でscpするス...
-
apachectl start command not f...
-
cronでシェルスクリプト実行時...
-
ldapaddコマンドでエラー
おすすめ情報