(Red Hat 6.4)LinuxでサービスとしてJavaプロセスを実行する必要があります(ブート時に実行して起動する必要があります)。私はそれが主に働いていますが、それは "サービス設定"ウィンドウで正しくステータスがないようです。説明するためにJavaプロセスをLinuxでサービスとして実行する
、私は単純なJavaプログラム作っ:
package service;
public class JavaService {
public static void main(String args[]){
System.out.println("Starting Java-Service");
while(true){
try {
Thread.sleep(5000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
System.out.println("Java-Service is still running..");
}
}
}
私はそれを瓶詰めし、そしてこの場所でそれを置く:
その後は/ opt /サービス/ libに、私はこのスクリプトを作成しました:/opt /サービス/ binに/ run_java_service
#!/bin/tcsh
#
# chkconfig: 2345 80 30
# description: java-service Service
setenv JAVA_SERVICE_HOME /opt/service
setenv CLASSPATH $JAVA_SERVICE_HOME/lib/JavaService.jar
setenv SERVICE_PID `ps aux | grep JavaService | grep -v grep | awk '{print $2}'`;
if ((stop == $1 || restart == $1)) then
echo "java-service stop";
kill -9 $SERVICE_PID
setenv SERVICE_PID
endif
if (start == $1 || restart == $1) then
if($SERVICE_PID) then
echo "java-service is already running"
else
echo "java-service start";
java service.JavaService&
endif
endif
if (status == $1) then
if($SERVICE_PID) then
echo "java-service (pid $SERVICE_PID) is running...";
else
echo "java-service is stopped";
endif
endif
私はその後/etc/rc.d/init.dのディレクトリにこれにシンボリックリンクを作成し、chkconfigのにこれを追加しました:
コマンドラインから予想されるようにこの時点でsudo ln –s /opt/service/bin/run_java_service /etc/rc.d/init.d/java-service
sudo chkconfig --add java-service
が、この作品のようにコマンド:
sudo service java-service stop
sudo service java-service start
sudo service java-service status
問題は、物事は、「サービス設定」ダイアログに正しく状態管理されていないということです。たとえば、このスクリーンショットでは、「停止ボタン」をクリックしても、「プラグイン」として表示されます。
私はパズルの一片何をしないのですか?
どのユーザーがジョブを開始していて、何をクリックして停止していますか? –
rootはジョブを開始し、rootはジョブを停止します。 – systemoutprintln