2019-10-22 13:51:16 shenjuntao520 阅读数 355
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11064 人正在学习 去看看 郭宏志

经常需要在Linux服务器上设置开机启动jar包,这样服务器重启的时候就会自动运行项目,实现半自动化,实现思路如下。

首先编写一个启动jar包的脚本,位置随意,这里以/home/java为例,文件名叫startup.sh。

export JAVA_HOME=/opt/jdk8
export PATH=$JAVA_HOME/bin/:$PATH
nohup java -jar /home/java/test.jar > /home/java/out.log 2>1&
chmod 777 /home/java/out.log

请注意,这里的export设置环境变量不可少,如果不知道本机的环境变量,可以通过more /etc/profile来查看。nohup命令可以让java在后台运行,即使关闭窗口也会继续运行。chmod改变out.log输出日志的读写权限,使得普通用户也可查看。

然后运行chmod命令,使其可运行。

chmod +x /home/java/startup.sh

接着编辑/etc/rd.local,加上一行

/home/java/startup.sh

系统启动后,在加载完所有组件后会以root身份执行rd.local的命令。

给rd.local可运行权限

chmod +x /etc/rd.local

保存后reboot重启服务器,待重启后通过命令查看是否运行了java

ps -ef|grep java

大功告成

2019-09-16 12:03:19 yiwangC 阅读数 616
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11064 人正在学习 去看看 郭宏志

以CentOS 7.0 为例

项目目录为 /project

1、在项目目录创建shell脚本

vi /project/ylkj-service.sh

以下为脚本内容: 

#!/bin/bash

#export JAVA_HOME=/usr/lib/jvm/java-1.8.0
#export JRE_HOME=/usr/lib/jvm/java-1.8.0/jre
#export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
#export PATH=$JAVA_HOME/bin:$PATH

echo "=============restart firewall =================="
service iptables restart
echo "==============start java server============"
cd /project
nohup java -jar AIServicePlatform.jar &
echo "==============start nginx============"
cd /usr/local/nginx/sbin
./nginx -c /usr/local/nginx/conf/nginx.conf

Java环境变量导入可以 通过以下命令查询得到,根据情况Java环境变量可以不需要

whereis java
which java 
echo $JAVA_HOME
echo $PATH

 

2、编辑开机启动文件 /etc/rc.d/rc.local 

vi /etc/rc.d/rc.local 

增加行 /project/ylkj-service.sh

3、执行文件授权命令:

chmod +x /etc/rc.d/rc.local

 chmod +x /project/ylkj-service.sh

4、检查脚本是否配置正常  

bash /etc/rc.d/rc.local

显示执行正常使用reboot命令重启

可能出现的错误:由于shell脚本使用windows编辑拷贝到Linux下就会出现类似情况

执行以下命令即可:

sed -i 's/\r$//' /etc/rc.local 

sed -i 's/\r$//' /project/ylkj-service.sh

 

2018-08-23 20:58:57 qq_20696007 阅读数 859
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11064 人正在学习 去看看 郭宏志

#!/bin/bash

# The three branches of the scouting program,Add to auto.
# chkconfig: 2345 20 80
# description: py-0.0.1-SNAPSHOT-exec.jar
# author: Love丶TG

# 这样的启动方式不是最好的,一般都是:友好的控制nginx执行连接端口,再处理启动与停止操作
echo "******************************************************"
echo "******* Welcome to launch the puzzle App *************"
echo "******************************************************"

# import JDK config 
JAVA_HOME=/usr/java/jdk1.8.0_111
JRE_HOME=/usr/java/jdk1.8.0_111/jre
PATH=$PATH:$JAVA_HOME/bin:$JRe_HOME/bin:$TOMCAT_HOME/bin
CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib
export JAVA_HOME JRE_HOME PATH CLASSPATH

# Second parameter : project url   |   PRO_URL expression
#PRO_URL=/project/py/pyapp2018-07-25

# The file stores the startup path
PRO_URL=/project/py/py_path

function initialize(){
    # 判断PRO_URL文件是否存在,不存在就新建这么一个文件,用于当每次调用第二个参数启动时都会随着更改文件里面的内容
    if [ ! -f "$PRO_URL" ]; then
        touch $PRO_URL
        chmod 777 $PRO_URL
    fi
    # 取项目的待执行目录
    readFile=`cat $PRO_URL`
    if [ "$readFile" == "" ];then
        echo "-----> The read file was empty and failed to start <-----"
        # echo "" > $PRO_URL
        # echo "$1 cleaned up."
    else
        echo "-----> The project is being restarted <-----"
        cd $readFile
        # 检查8088 8089 8090端口是否启动状态
        process1=`netstat -an|grep LISTEN|grep :8088`
        # 如果端口检查为空就重启8088服务
        if [ "$process1" == "" ];then
            fStart 8088
            echo "-----> 8088 Port started successfully <-----"
        else
            echo "-----> The 8088 port is running <-----"
        fi
        process2=`netstat -an|grep LISTEN|grep :8089`
        # 如果端口检查为空就重启8089服务
        if [ "$process2" == "" ];then
            fStart 8089
            echo "-----> 8089 Port started successfully <-----"
        else
            echo "-----> The 8089 port is running <-----"
        fi
        process3=`netstat -an|grep LISTEN|grep :8090`
        # 如果端口检查为空就重启8090服务
        if [ "$process3" == "" ];then
            fStart 8090
            echo "-----> 8090 Port started successfully <-----"
        else
            echo "-----> The 8090 port is running <-----"
        fi
    fi
    
}

# nohup也可新创一个函数
fStart()
{
    pid=`lsof -F p  -i:$1 | cut -b 2-`
    if [ "$pid" != "" ];then
        kill -9 $pid;
        nohup java -Xmx24000m  -Xss10m -jar py-0.0.1-SNAPSHOT-exec.jar --server.port=$1  &
        echo "-----> $1 Port occupancy forced offline and start again <-----"
    else
        nohup java -Xmx24000m  -Xss10m -jar py-0.0.1-SNAPSHOT-exec.jar --server.port=$1  &
        echo "-----> The $1 port starting success <-----"
    fi
}

fStop()
{
    pid=`lsof -F p  -i:$1 | cut -b 2-`
    if [ "$pid" != "" ];then
        kill -9 $pid;
        echo "-----> $1 Port Stop success <-----"
    else
        echo "-----> The $1 port Has been discontinued <-----"
    fi
}

case "$1" in
     start)
        # 如果$1等于空,这种情况下大多是服务器重启
        if [ "$2" == "" ];then
            initialize
            echo "-----> Restart through boss Ben,Verification is recommended. <-----"
        else
            # 判断2是否目录为空
            if [ ! -d "$2" ];then
                echo "-----> The specified file directory does not exist <-----"
            else
                cd $2
                readFile=`cat $PRO_URL`
                if [ "$2" != "$readFile" ];then
                    echo "" > $PRO_URL
                    echo "$2" > $PRO_URL
                fi
                if [ "$3" == "" ];then
                    #nohup java -Xmx24000m  -Xss10m -jar py-0.0.1-SNAPSHOT-exec.jar --server.port=8088  &
                    #nohup java -Xmx24000m  -Xss10m -jar py-0.0.1-SNAPSHOT-exec.jar --server.port=8089  &
                    #nohup java -Xmx24000m  -Xss10m -jar py-0.0.1-SNAPSHOT-exec.jar --server.port=8090  &
                    fStart 8088
                    fStart 8089
                    fStart 8090
                else
                    fStart $3
                fi
            fi
        fi
     ;;
     
     stop)
        # 停止不需要传路径 2就代表待停端口
        if [ "$2" == "" ];then
            # 这儿:当start启动没有成功执行完时,执行stop会失败。
            # 8088 8089 8090端口全部停止
            fStop 8088
            fStop 8089
            fStop 8090
        else
            # 指定性端口停止
            fStop $2
        fi
        #process=`netstat -an|grep LISTEN|grep :8088`
        #process = `lsof -i:8088`
        #if [ "$process" != "" ];then
        #    echo "JAR8088 is running"
        #else
        #    echo "JAR8088 is not running"
        #fi
     ;;

     *) 
        # 如果$1等于空,这种情况下大多是服务器重启
        #if [ "$1" == "" ];then
        #    initialize
        #fi
        echo " ---> service py_start [start|stop] [start:project path] [8088|8089|8090] <---"
     ;; 

esac

===========================END===============================

* 注:

1. 需优化,当start刚执行就执行stop再执行start会出问题。

2. 第二个参数是版本控制jar的指定文件夹路径

2018-06-11 12:05:30 m0_37974328 阅读数 6128
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11064 人正在学习 去看看 郭宏志

使用 /etc/rc.d/rc.local配置:

输入命令:

chmod +x /etc/rc.d/rc.local

这句话的意思是 授予 /etc/rc.d/rc.local 文件执行权限

然后我们创建启动文件 runJar.sh

#!/bin/bash

export JAVA_HOME=/usr/local/jdk1.8.0_171
export JRE_HOME=/usr/local/jdk1.8.0_171/jre
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar:$JRE_HOME/lib:$CLASSPATH
export PATH=$JAVA_HOME/bin:$PATH

cd /home/
nohup java -jar jcmes-center-0.0.1-SNAPSHOT.jar >center.log 2>&1 &
nohup java -jar jcmes-security-login-0.0.1-SNAPSHOT.jar >login.log 2>&1 &
nohup java -jar jcmes-card-0.0.1-SNAPSHOT.jar >card.log 2>&1 

这里我们选择是以生成log的方式启动jar包。

启动几个jar 就在后边添加,注意jdk的环境变量填写正确

cd /home/ 的意思是 进入jar包目录

接下来我们赋予runJar.sh 执行权限

chmod +x /home/runJar.sh

最关键的步骤

运行命令 

vi /etc/rc.d/rc.local

编辑 rc.local文件

#!/bin/bash
# THIS FILE IS ADDED FOR COMPATIBILITY PURPOSES
#
# It is highly advisable to create own systemd services or udev rules
# to run scripts during boot instead of using this file.
#
# In contrast to previous versions due to parallel execution during boot
# this script will NOT be run after all other services.
#
# Please note that you must run 'chmod +x /etc/rc.d/rc.local' to ensure
# that this script will be executed during boot.

touch /var/lock/subsys/local
/home/runJar2.sh

注意最后一行 加入我们的启动文件

最后 重启服务器

[root@localhost ~]# reboot

我们看是否已经启动

[root@localhost ~]# ps -ef | grep java
root        917      1 48 23:40 ?        00:00:11 java -jar jcmes-center-0.0.1-SNAPSHOT.jar
root        918      1 42 23:40 ?        00:00:09 java -jar jcmes-security-login-0.0.1-SNAPSHOT.jar
root       1091   1070  0 23:40 pts/0    00:00:00 grep --color=auto java

OK~!



2014-11-20 11:22:45 zzc1684 阅读数 50
  • Android Studio 开发详解

    Android Studio教程,该教材会详细介绍Android Studio如何使用,包括在Windows平台下载安装Android Studio、配置、代码重构、项目调试、jar包管理等。

    11064 人正在学习 去看看 郭宏志
linux下tomcat开机自启动
 
方法一:
修改Tomcat/bin/startup.sh 为:
 
export JAVA_HOME=/home/java1.6.0_27  
export CLASSPATH=$CLASSPATH:$JAVA_HOME/lib/tools.jar:$JAVA_HOME/lib/dt.jar:.  
export PATH=$JAVA_HOME/bin:$PATH  
export CATALINA_HOME=/home/tomcat  
/home/tomcat/bin/catalina.sh start  
在/etc/rc.d/rc.local中加入:
 
/home/tomcat/bin/startup.sh  
方法二:
1、把下面的代码保存为tomcat文件,并让它成为可执行文件 chmod 755 tomcat.
 
#!/bin/bash  
#  
# /etc/rc.d/init.d/tomcat  
# init script for tomcat precesses  
#  
# processname: tomcat  
# description: tomcat is a j2ee server  
# chkconfig: 2345 86 16  
# description:  Start up the Tomcat servlet engine.  
  
if [ -f /etc/init.d/functions ]; then  
        . /etc/init.d/functions  
elif [ -f /etc/rc.d/init.d/functions ]; then  
        . /etc/rc.d/init.d/functions  
else  
        echo -e "\atomcat: unable to locate functions lib. Cannot continue."  
        exit -1  
fi  
  
RETVAL=$?  
CATALINA_HOME="/home/tomcat"  
  
case "$1" in  
start)  
        if [ -f $CATALINA_HOME/bin/startup.sh ];  
          then  
            echo $"Starting Tomcat"  
            $CATALINA_HOME/bin/startup.sh  
        fi  
        ;;  
stop)  
        if [ -f $CATALINA_HOME/bin/shutdown.sh ];  
          then  
            echo $"Stopping Tomcat"  
            $CATALINA_HOME/bin/shutdown.sh  
        fi  
        ;;  
*)  
        echo $"Usage: $0 {start|stop}"  
        exit 1  
        ;;  
esac  
  
exit $RETVAL  
 
2、将tomcat文件拷贝到/etc/init.d/下,并运行:chkconfig --add tomcat
 
3、在tomcat/bin/catalina.sh文件中的前面加入以下语句:
 
export JAVA_HOME=/home/jdk1.6.0_27  
export CATALINA_HOME=/home/tomcat  
export CATALINA_BASE=/home/tomcat  
export CATALINA_TMPDIR=/home/tomcat/temp  
测试tomcat能不能启动 启动tomcat: service tomcat start
测试tomcat能不能停止 停止tomcat:  service tomcat stop
 
启动方式中该服务是启动 #chkconfig tomcat on  
#chkconfig --list tomcat
 
至此,即完成自启动脚本
 
注意:
在tomcat文件的头两行的注释语句中,需要包含chkconfig和description两部分内容(确认不要拼写错误,),否则在执行“chkconfig --add tomcat”时,会出现“tomcat服务不支持chkconfig”的错误提示。
chkconfig这行表示缺省启动的运行级别以及启动和停止的优先级,如该服务缺省不再任何运行级启动,则以 - 代替运行级别。如#chkconfig:345 61 61 //此行的345参数表示,在哪些运行级别启动,345表示tomcat脚本在运行级2、3、4、5启动,启动序号(S61);关闭序号(K61)
 
description行对服务进行描述,可以用 “\” 跨行注释。
 
没有更多推荐了,返回首页