Linux:处理成服务
我正在尝试将一个Linux可执行文件作为一项服务
我执行我的程序,如下所示
java -jar mytestprogram.jar
创build一个连续运行并提供REST请求的进程。 但是我想把它作为一个服务来运行
service mytestprogram start service mytestprogram stop service mytestprogram status chkconfig mytestprogram on
等什么是最简单的方法呢?
这取决于你的系统pipe理员
在debian / ubuntu上最常用的方法是build立一个initscript并将其放在/etc/init.d
或/etc/rc/init.d
并在其中放置一个名为mytestprogram
的脚本。
这是一个例子initscript:
#!/bin/sh ### BEGIN INIT INFO # Provides: testone # Required-Start: $local_fs # Required-Stop: $local_fs # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # X-Interactive: false # Short-Description: Example init script # Description: Start/stop an example script ### END INIT INFO DESC="test script" NAME=testone #DAEMON= do_start() { echo "starting!"; } do_stop() { echo "stopping!" } case "$1" in start) do_start ;; stop) do_stop ;; esac exit 0
我build议你在那个目录下看一些脚本,如果你知道一点点,这很简单;)
以下是一个示例shell脚本(请确保将MAT名称replace为您的应用程序的名称):
#!/bin/bash ### BEGIN INIT INFO # Provides: MATH # Required-Start: $java # Required-Stop: $java # Short-Description: Start and stop MATH service. # Description: - # Date-Creation: - # Date-Last-Modification: - # Author: - ### END INIT INFO # Variables PGREP=/usr/bin/pgrep JAVA=/usr/bin/java ZERO=0 # Start the MATH start() { echo "Starting MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "The service is already running" else #Run the jar file MATH service $JAVA -jar /opt/MATH/MATH.jar > /dev/null 2>&1 & #sleep time before the service verification sleep 10 #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Service was successfully started" else echo "Failed to start service" fi fi echo } # Stop the MATH stop() { echo "Stopping MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then #Kill the pid of java with the service name kill -9 $($PGREP -f MATH) #Sleep time before the service verification sleep 10 #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Failed to stop service" else echo "Service was successfully stopped" fi else echo "The service is already stopped" fi echo } # Verify the status of MATH status() { echo "Checking status of MATH..." #Verify if the service is running $PGREP -f MATH > /dev/null VERIFIER=$? if [ $ZERO = $VERIFIER ] then echo "Service is running" else echo "Service is stopped" fi echo } # Main logic case "$1" in start) start ;; stop) stop ;; status) status ;; restart|reload) stop start ;; *) echo $"Usage: $0 {start|stop|status|restart|reload}" exit 1 esac exit 0