Linux環境でのjar ファイルの実行
【コマンド】
nohup java -jar sample.jar > out.log > err.log
言い訳から入りますが、Webが専門なもんで、中々実行可能なjarファイルを作って実行するってやったことなかった。そのため、めちゃくちゃ基礎的な内容が含まれている可能性があります。
Javaエンジニアなら、これくらいのことは知っておいた方が良いね。これならJavaでバッチを作るときにも役に立つ!(ハズ)
というコトで、今回は、Linux環境でのJavaコマンドの設定とEclipse3.7から実行可能なjarファイルを生成してLinuxサーバで実行す るところまでを解説します。合わせて、リモートコンソールを閉じてもコマンドを実行し続けるための方法(nohup)も合わせて解説します。
・実行可能Jarの作成
前提として、Mainクラスを1つ持ったプロジェクトで実施します。(2つ以上持っていると上手く出来なかったので…)
まず、プロジェクトを選択して『エクスポート』→Javaの『実行可能Jarファイル』→次へ→起動構成からMainクラスを選択→任意のエクスポート先を指定して完了(他に必要な設定があれば適宜)
・Linux環境でのJavaコマンドの設定
/etc/profileにJava関連の環境変数を登録します。このファイルは、ユーザがログインした際に最初に読み込まれるファイルです。私の環境では、オーナーはroot、パーミッションは644なのでrootで編集します。
末尾に以下を追加。パスなどは都度、読み替えてください。
export JAVA_HOME=/usr/local/java export PATH=$PATH:$JAVA_HOME/bin export CLASSPATH=.:$JAVA_HOME/jre/lib:$JAVA_HOME/lib:$JAVA_HOME/lib/tools.jar
・実行可能Jarの実行
JarファイルをLinux環境の任意のパスに置いたら以下のようなコマンドを実行。
> java -jar sample.jar
これで、実行できると思います。
・nohupを使ったコマンドの実行
SSH などで接続してコマンドを実行すると、SSHを切断したタイミングで処理が終了してしまいます。処理時間が短いコマンドなら良いのですが、ひたすら実行し 続けるようなコマンドの場合コンソールを開きっぱなしにしておくわけにはいきません。『nohup』コマンドを使用することでSSHを切断しても処理を継続するようにします。
> nohup java -jar sample.jar > out.log > err.log &
nohupコマンドの後続は通常のコマンドを記載し、リダイレクションで出力ファイルを指定します。
プロセスが終了したかはpsコマンドで確認してください。以下のような形で出力されます。
> ps ax | grep java 32345 ? Sl 115:02 java -jar sample.jar
【参考サイト】
Java開発実行環境を構築する(J2SDK-Linux編) - Fedoraで自宅サーバー構築
ログアウトしてもバックグラウンド ジョブを継続する方法