でJavaプログラムを実行できませんcron
。次の簡単な例を使用して問題を再現できます。
ファイルで次のように変数を/path/to/javaenv.txt
定義します。CLASSPATH
export CLASSPATH=\
"/path/to/dir1":\
"/path/to/dir2":\
"/path/to/dirn":\
"/path/to/jar1":\
"/path/to/jar2":\
"/path/to/jarn"
コマンドラインで次のようにすると、Javaプログラムを非常に簡単に実行できます。
source "/path/to/javaenv.txt" && java pkgName.ClassName cmd-line-params > /tmp/test-$(date +%s).txt 2>&1
cron
ただし、私のエントリに次のものがあってもジョブcrontab
は実行されません。
* * * * * source "/path/to/javaenv.txt" && java pkgName.ClassName cmd-line-params > /tmp/test-$(date +%s).txt 2>&1
答え1
クローンスケジュールにはいくつかの問題があります。
この文字はcrontabで特別な意味を持ち、コマンドラインで通常どおりに使用する
%
ようにエスケープする必要があります。\%
バラよりcrontabジョブで「日付」を実行する方法は?source
計画のコマンドは、それを解釈するシェルではサポートされていない可能性があります。これは/bin/sh
システムのシェルによって異なります(dash
非標準コマンドはサポートされていませんsource
)。コマンドを移植可能にするには、.
(ドット)置換を使用する必要があります。source
たとえば、参照してください。cronで「ソース」を使用できませんか?java
3番目の問題は、cron環境の変数値に基づいて実行可能ファイルが見つかるかどうかです。ファイルが見つかったことPATH
を確認するには、crontabの正しいディレクトリ、取得した環境ファイルを含めるようにjava
設定するか、絶対パスを使用して実行可能ファイルを呼び出します。PATH