zoukankan      html  css  js  c++  java
  • paip.注册java程序为LINUX系统服务的总结。


    paip.注册java程序为LINUX系统服务的总结。

    实现开机启动。
    标准方法是按照/etc/init.d/下面的文件,修改一下;然后chkconfig xxx on 即可。比较麻烦。。放弃..
    可以简单实现开机自启动就是了。。
    2.在/etc/rc.local里面写
    /bin/bash  /xxxx.sh
     
    编写服务脚本。运行。。locationServc.sh start/stop/restart/?
    运行sh,提示权限不不够,winwcp>>proerty>>auth所有的打钩..
    运行在, /bin/bash^M: bad interpreter:...原因:window,linux行结尾格式不一样,notepad++ >>edit>doc format convert>>convert to unix format..

     
    //服务的关闭 locationServc.sh stop 实现原理。
    程序启动的时候儿,打开一个端口,关闭的时候儿ps | grep port | grep progrmName | grep java | kill

    作者Attilax  艾龙, EMAIL:1466519819@qq.com
    来源:attilax的专栏
    地址:http://blog.csdn.net/attilax

    ------------------------------打开端口
    core.openPort(port);
    public static void openPort(final int port) {
            god.newThread(new Runnable() {

                @Override
                public void run() {
                    server( port);

                }
            }, "open port thrd");

        }

        // 服务端Socket
        public static void server(int port) {
            try {
                ServerSocket ss = new ServerSocket(port);
                // accept接受连接请求,接受到请求返回一个Socket套接字
                Socket s = ss.accept();
                OutputStream os = s.getOutputStream(); // 创建socket输出流
                InputStream is = s.getInputStream(); // 创建socket输入流
                os.write("The information comes from server!".getBytes());// 将字符串转为字节
                byte[] buf = new byte[100];

                while (true) {
                    int len = is.read(buf);
                    System.out.println(new String(buf, 0, len)); // 将字节数组转为字符串
                    core.sleep(1000);
                }
                // os.close();
                // is.close();
                // s.close();
            } catch (Exception e) {
                e.printStackTrace();
            }

        }

    -----------------查看此端口程序command
    ps aux| grep 9999 | grep com.xxx.linuxServiceTest |grep java


    /通过端口杀死进程 (取的pid,kill)
    netstat -nlp | grep :9999 | awk '{print $7}' | awk -F"/" '{ print $1 }'

    “xargs kill -s 9”中的xargs命令是用来把前面命令的输出结果(PID)作为“kill -s 9”命令的参数,并执行该命令。“kill -s 9”会强行杀掉指定进程。
      netstat -nlp | grep :9999 | awk '{print $7}' | awk -F"/" '{ print $1 }' | xargs  kill
     
     
     需要用到"[']"操作符,它可以执行一个语句,这个可以如此执行:这个不行..
    kill [']netstat -nlp | grep :3306 | awk '{print $7}' | awk -F"/" '{ print $1 }'[']
     使用' kill 'xxxx'  也不行...子能xargs..

     
     
    -----------------最终编写的服务脚本


    #!/bin/bash
    # /etc/rc.d/init.d/locationServc.sh

    JAVA_HOME=/usr/java/jdk1.6.0_21
    JAVA_BIN=/usr/java/jdk1.6.0_21/bin
    PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH
    CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
    export JAVA_HOME JAVA_BIN PATH CLASSPATH

    CATALINA_HOME=/home/focustar/apache-tomcat-6.0.37
    export  CATALINA_HOME

    #o313 -----------------
    apphome=/imServer
    export  apphome
    CLASSPATH=$CLASSPATH:$apphome/WebRoot/WEB-INF/classes
    export   CLASSPATH
    jardirs=$apphome/lib
    export   jardirs
    ERP_PORT=10999
    #o313 end---------------------------

    start()
    {
      echo "Starting locationServc..."
      #rem不过,作业在后台运行一样会将结果输出到屏幕上,干扰你的工作。如果放在后台运行的作业会产生大量的输出,最好使用下面的方法把它的输出重定向到某个文件中

      java   -Djava.ext.dirs=$jardirs -classpath  $CLASSPATH com.attilax.util.linuxServiceTest 9999
      echo "Starting ok!!!"
    }
     #pkill locationServc.sh
    stop()
    {
            echo "Stopping locationServc..."        
              netstat -nlp | grep :9999 | awk '{print $7}' | awk -F"/" '{ print $1 }' | xargs  kill
               echo "Stopping locationServc ok!!!"
              

    }
    testx()
    {
      echo "testxx echo"
    }

    case "$1" in
    start)
            #invoke function start()
             start
             ;;
               #case的格式要求,lyag lyedin comma  
    stop)
             stop
           ;;
    test)  
            echo "test echo...";
            testx
            ;;
    restart)     
             stop   
            sleep  3;  
           start
             ;;
    ?)
            echo "Usage locationServc.sh start/stop/restart"
            exit 1
            ;;
    *)
            start
            ;;
     
    esac


    #"C:\jre\bin\java.exe"   -Dfile.encoding=UTF-8  -Djava.ext.dirs="C:\jar;c:\jar1;%~dp0\lib" -classpath ".;.\classes;%~dp0\classes" homi.convert2atian f:\Contact_QQPhoneManager(2013-12-03).csv  gbk f:\Contact_QQPhoneManager(2013-12-03)_atian333_a.csv c:\deeng\hezi_deeng_deduli.txt


     
    参考
    注册程序为LINUX系统服务并设置成自启动的方法 - Linux操作系统:Ubuntu_Centos_Debian - 红黑联盟.htm
    Linux下通过端口杀死进程 - 站在高处眺望 - 博客园.htm
    Linux Shell编程case语句 - 非淡泊无以明志,非宁静无以致远 - 博客频道 - CSDN.NET.htm

  • 相关阅读:
    PAT B1045 快速排序 (25 分)
    PAT B1042 字符统计 (20 分)
    PAT B1040 有几个PAT (25 分)
    PAT B1035 插入与归并 (25 分)
    PAT B1034 有理数四则运算 (20 分)
    PAT B1033 旧键盘打字 (20 分)
    HDU 1231 最大连续子序列
    HDU 1166 敌兵布阵
    HDU 1715 大菲波数
    HDU 1016 Prime Ring Problem
  • 原文地址:https://www.cnblogs.com/attilax/p/15199297.html
Copyright © 2011-2022 走看看