Linux 启动Java-jar脚本 以及开机自启

start.sh 启动命令:./start.sh start/stop/restart xxxx.jar

#!/bin/sh

startLogDir="temp" if [ ! -d "$startLogDir" ];then mkdir $startLogDir fi

### SERVICE_NAME="$2"

#ENVFILE="env"

PIDFILE=temp/"$2"_"pid"

checkRunning(){ if [ -f "$PIDFILE" ]; then if [ -z "`cat $PIDFILE`" ];then echo "ERROR: Pidfile $PIDFILE exists but contains no pid" return 2 fi PID="`cat ${PIDFILE}`" RET="`ps -p "${PID}"|grep java`" if [ -n "$RET" ];then return 0; else return 1; fi else return 1; fi }

status(){ if ( checkRunning );then PID="`cat $PIDFILE`" echo "$SERVICE_NAME is running (pid $PID)" exit 0 fi echo "$SERVICE_NAME not running" exit 1 }

#start start(){ if ( checkRunning );then PID="`cat $PIDFILE`" echo "INFO: Process with pid $PID is already running" exit 0 fi #ENVIRONMENT="`cat ${ENVFILE}`" java -jar -Xms128m -Xmx256m ${SERVICE_NAME} -XX:PermSize=128M -XX:MaxPermSize=256M >/dev/null 2>&1 & echo $! > "${PIDFILE}"; } #stop stop(){ if ( checkRunning ); then PID="`cat ${PIDFILE}`" echo "INFO: sending SIGKILL to pid $PID" kill -KILL $PID RET="$?" rm -f "${PIDFILE}" return $RET fi echo "INFO: not running, nothing to do" return 0 }

show_help() { cat << EOF Tasks provided by the sysv init script: stop - terminate instance in a drastic way by sending SIGKILL start - start new instance restart - stop running instance (if there is one), start new instance status - check if $SERVICE_NAME process is running EOF exit 1 }

# show help if [ -z "$1" ];then show_help fi

case "$1" in status) status ;; restart) if ( checkRunning );then $0 stop ${SERVICE_NAME} echo fi $0 start ${SERVICE_NAME} $0 status ${SERVICE_NAME} ;; start) start ;; stop) stop exit $? ;; *) esac

开机自启:

把./start.sh 放到/etc/profile.d/

经验分享 程序员 微信小程序 职场和发展