Linuxがjavaプログラムをタイミングよく実行する方法
2582 ワード
linuxの下でjavaプログラムを実行します.一般的にはjarファイルにパッケージ化し、linuxの下に置いてスクリプトで実行します.
一、javaプロジェクトをパッケージします.一般的にeclipseとnetbeansで直接プロジェクトをjarにパッケージすればいいので、jarを同じディレクトリの下のlibライブラリフォルダと一緒にlinuxフォルダの下に置きます.ここは/opt/ftpcounterの下に置いてあります.私のこのプログラムの役割は、あるftp上のファイル情報を読み取ることです.
二、linuxの下のshellスクリプトは、私のftpcounterです.shを例にとると、私が実行するのはFtpCounterです.jar.
次にjarを実行するコマンドはjava-jarにjarファイル名を加えればいいです.このコマンドはプラットフォームをまたいでいます.
三、モニタは、linuxの下でjavaプログラムを実行するときに不思議な自動停止があるので、モニタスクリプトを追加しました.ftpcounterwatchと言います.sh.
linux端末にcrontab-eを入力するとタイマの設定viインタフェースを呼び出すことができます.次の文を入力してください
一、javaプロジェクトをパッケージします.一般的にeclipseとnetbeansで直接プロジェクトをjarにパッケージすればいいので、jarを同じディレクトリの下のlibライブラリフォルダと一緒にlinuxフォルダの下に置きます.ここは/opt/ftpcounterの下に置いてあります.私のこのプログラムの役割は、あるftp上のファイル情報を読み取ることです.
二、linuxの下のshellスクリプトは、私のftpcounterです.shを例にとると、私が実行するのはFtpCounterです.jar.
#!/bin/bash
#
export LANG="en_US.UTF-8"
export JAVA_HOME=/usr/javak1.6.0_31
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOMEb/dt.jar:$JAVA_HOMEb/tools.jar
FTP_HOME=/opt/ftpcounter
CONFIG=$FTP_HOME/configer.properties
echo "【`date +%Y-%m-%d_%H:%M:%S`】 ......"
sed -i "/OVER/ s/=.*/=0/g" $CONFIG
cd $FTP_HOME && echo " :$FTP_HOME"
java -jar $FTP_HOME/FtpCounter.jar && echo " FtpCounter.jar !" && sed -i "/OVER/ s/=.*/=1/g" $CONFIG || echo " FtpCounter.jar !"
echo "【`date +%Y-%m-%d_%H:%M:%S`】 , ."
まずjavaの環境変数をインポートする必要があります.中国語を実行するときに文字化けしないようにするには、中国語コードもインポートします.これらのコンテンツをインポートするのは、crontabタイミングプログラムがスクリプトを呼び出すと、システムの環境変数がロードされないためです.次にjarを実行するコマンドはjava-jarにjarファイル名を加えればいいです.このコマンドはプラットフォームをまたいでいます.
三、モニタは、linuxの下でjavaプログラムを実行するときに不思議な自動停止があるので、モニタスクリプトを追加しました.ftpcounterwatchと言います.sh.
#!/bin/bash
FTP_HOME=/opt/ftpcounter
CONFIG=$FTP_HOME/configer.properties
while [ `cat $CONFIG | awk -F'=' '/OVER/ {print$2}'` -eq 0 ]
do
FTPCOUNTERPID=`pgrep ftpcounter.sh`
FTPCOUNTERJARPID=`ps -ef | grep FtpCounter.jar | grep -v grep | awk '{print $2}'`
if [ a$FTPCOUNTERPID != "a" ];then
echo $FTPCOUNTERPID
kill -9 $FTPCOUNTERPID && echo "【`date +%Y-%m-%d_%H:%M:%S`】 >, ftpcounter.sh !"
fi
if [ a$FTPCOUNTERJARPID != "a" ];then
echo $FTPCOUNTERJARPID
kill -9 $FTPCOUNTERJARPID && echo "【`date +%Y-%m-%d_%H:%M:%S`】
, FtpCounter.jar !"
fi
sh $FTP_HOME/ftpcounter.sh &
sleep 5m
done
四、タイマーの設定.linux端末にcrontab-eを入力するとタイマの設定viインタフェースを呼び出すことができます.次の文を入力してください
15 9 * * * sh /opt/ftpcounter/ftpcounter.sh >> /opt/ftpcounter/ftpcounter.log
20 9 * * * sh /opt/ftpcounter/ftpcounterwatch.sh >> /opt/ftpcounter/ftpcounter.log
は、jarを実行するshellスクリプトを9時15分に起動し、ftpcounterを20分割して監視することを意味する.shとFtpCounter.jarのプロセスはまだあるかどうか、もしあるならプログラムが詰まっていることを説明して、城に入った後に殺して、再び実行を開始します.