Linux下怎么让jar开机自启动?怎么写shell脚本启动或者其他办法可以实现
1条回答 默认 最新
- fsaijj790814210 2018-12-11 07:06关注
把里面的xxxxxx替换成你真是情况。然后把这个脚本注册进系统服务并开机启动. 然后执行sh xxx.sh或者chmod +x xxx.sh -> ./xxx.sh 参数start|stop|force-stop|restart|status
#!/bin/bash # # :: xxxxxxxxxx Startup Script :: # ### BEGIN INIT INFO # Provides: xxxxxxxxxx # Required-Start: $remote_fs $syslog $network # Required-Stop: $remote_fs $syslog $network # Default-Start: 2 3 4 5 # Default-Stop: 0 1 6 # Short-Description: xxxxxxxxxx # Description: xxxxxxxxxx # chkconfig: 2345 99 01 ### END INIT INFO APP_NAME=xxxxxxxxxx WORKING_DIR="/xxxxxxxxxx" CONF_PATH="$WORKING_DIR/config" LIB_PATH="$WORKING_DIR/lib" APP_PATH="$WORKING_DIR/www" APP_JAR="$APP_PATH/xxxxxxxxxx.jar" LOG_PATH="/xxxxxxxxxx" STOP_WAIT_TIME=30 LOG_FILE="$LOG_PATH/startup.log" PID_FILE="$WORKING_DIR/${APP_NAME}.pid" JAVA_HOME=/xxxxxxxxxx JAVA_OPTS="-server -Xms1024m -Xmx1024m -XX:+UseParallelGC -Dfile.encoding=utf-8" RUN_ARGS= if [[ -d "$LIB_PATH" ]]; then CLASS_PATH=$(find "$LIB_PATH" -name '*.jar' -printf '%p:' | sed 's/:$//'):"${APP_JAR}":"${CONF_PATH}" else CLASS_PATH="${APP_JAR}":"${CONF_PATH}" fi MAIN_CLASS=org.springframework.boot.loader.JarLauncher arguments=($JAVA_OPTS -classpath $CLASS_PATH $MAIN_CLASS $RUN_ARGS) # ANSI Colors echoRed() { echo $'\e[0;31m'"$1"$'\e[0m'; } echoGreen() { echo $'\e[0;32m'"$1"$'\e[0m'; } echoYellow() { echo $'\e[0;33m'"$1"$'\e[0m'; } # Utility functions checkPermissions() { touch "$PID_FILE" &> /dev/null || { echoRed "Operation not permitted (cannot access pid file)"; return 4; } mkdir -p "$LOG_PATH" &> /dev/null || { echoRed "Operation not permitted (cannot log path)"; return 4; } touch "$LOG_FILE" &> /dev/null || { echoRed "Operation not permitted (cannot access log file)"; return 4; } } isRunning() { ps -p "$1" &> /dev/null } action="$1" # Find Java if [[ -n "$JAVA_HOME" ]] && [[ -x "$JAVA_HOME/bin/java" ]]; then javaexe="$JAVA_HOME/bin/java" elif type -p java > /dev/null 2>&1; then javaexe=$(type -p java) elif [[ -x "/usr/bin/java" ]]; then javaexe="/usr/bin/java" else echo "Unable to find Java" exit 1 fi # Action functions start() { if [[ -f "$PID_FILE" ]]; then pid=$(cat "$PID_FILE") isRunning "$pid" && { echoYellow "Already running [$pid]"; return 0; } fi do_start "$@" } do_start() { checkPermissions || return $? echo "$javaexe ${arguments[@]}" "$javaexe" "${arguments[@]}" >> "$LOG_FILE" 2>&1 & pid=$! disown $pid echo "$pid" > "$PID_FILE" [[ -z $pid ]] && { echoRed "Failed to start"; return 1; } echoGreen "Started [$pid]" } stop() { [[ -f $PID_FILE ]] || { echoYellow "Not running (pid file not found)"; return 0; } pid=$(cat "$PID_FILE") isRunning "$pid" || { echoYellow "Not running (process ${pid}). Removing stale pid file."; rm -f "$PID_FILE"; return 0; } do_stop "$pid" "$PID_FILE" } do_stop() { kill "$1" &> /dev/null || { echoRed "Unable to kill process $1"; return 1; } for i in $(seq 1 $STOP_WAIT_TIME); do isRunning "$1" || { echoGreen "Stopped [$1]"; rm -f "$2"; return 0; } [[ $i -eq STOP_WAIT_TIME/2 ]] && kill "$1" &> /dev/null sleep 1 done echoRed "Unable to kill process $1"; return 1; } force_stop() { [[ -f $PID_FILE ]] || { echoYellow "Not running (pidfile not found)"; return 0; } pid=$(cat "$PID_FILE") isRunning "$pid" || { echoYellow "Not running (process ${pid}). Removing stale pid file."; rm -f "$PID_FILE"; return 0; } do_force_stop "$pid" "$PID_FILE" } do_force_stop() { kill -9 "$1" &> /dev/null || { echoRed "Unable to kill process $1"; return 1; } for i in $(seq 1 $STOP_WAIT_TIME); do isRunning "$1" || { echoGreen "Stopped [$1]"; rm -f "$2"; return 0; } [[ $i -eq STOP_WAIT_TIME/2 ]] && kill -9 "$1" &> /dev/null sleep 1 done echoRed "Unable to kill process $1"; return 1; } restart() { stop && start } status() { [[ -f "$PID_FILE" ]] || { echoRed "Not running"; return 3; } pid=$(cat "$PID_FILE") isRunning "$pid" || { echoRed "Not running (process ${pid} not found)"; return 1; } echoGreen "Running [$pid]" return 0 } # Call the appropriate action function case "$action" in start) start "$@"; exit $?;; stop) stop "$@"; exit $?;; force-stop) force_stop "$@"; exit $?;; restart) restart "$@"; exit $?;; status) status "$@"; exit $?;; *) echo "Usage: $0 {start|stop|force-stop|restart|status}"; exit 1; esac exit 0
解决 无用评论 打赏 举报
悬赏问题
- ¥20 删除和修改功能无法调用
- ¥15 kafka topic 所有分副本数修改
- ¥15 小程序中fit格式等运动数据文件怎样实现可视化?(包含心率信息))
- ¥15 如何利用mmdetection3d中的get_flops.py文件计算fcos3d方法的flops?
- ¥40 串口调试助手打开串口后,keil5的代码就停止了
- ¥15 电脑最近经常蓝屏,求大家看看哪的问题
- ¥60 高价有偿求java辅导。工程量较大,价格你定,联系确定辅导后将采纳你的答案。希望能给出完整详细代码,并能解释回答我关于代码的疑问疑问,代码要求如下,联系我会发文档
- ¥50 C++五子棋AI程序编写
- ¥30 求安卓设备利用一个typeC接口,同时实现向pc一边投屏一边上传数据的解决方案。
- ¥15 SQL Server analysis services 服务安装失败