Linuxがjavaプログラムをタイミングよく実行する方法

2582 ワード

linuxの下でjavaプログラムを実行します.一般的にはjarファイルにパッケージ化し、linuxの下に置いてスクリプトで実行します.
一、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のプロセスはまだあるかどうか、もしあるならプログラムが詰まっていることを説明して、城に入った後に殺して、再び実行を開始します.