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

paip.注册java程序为LINUX系统服务的总结。的更多相关文章

  1. paip. 解决java程序不能自动退出

    paip. 解决java程序不能自动退出 原因:有东西在运行,所以,不能自动退出.. 作者Attilax  艾龙,  EMAIL:1466519819@qq.com 来源:attilax的专栏 地址: ...

  2. 如何注册java程序为windows服务

    如何注册java 程序为windows 服务 最近想找个软件来控制电脑的关机时间,在网上找了几个,都是可视化界面的可以设置具体的关机时间的软件.由于我想编写的关机程序是运行在别人机器上,只能让该机器在 ...

  3. 树莓派上Java程序作为linux服务并开机自动启动

    http://www.iigrowing.cn/shu_mei_pai_shang_java_cheng_xu_zuo_wei_linux_fu_wu_bing_kai_ji_zi_dong_qi_d ...

  4. Java程序执行Linux命令

    Java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: ProcessBuilder.start() 和 Runtime.exec 方法创建一个 ...

  5. Java程序执行Linux命令(JSP运行其他程序)

    java程序中要执行linux命令主要依赖2个类:Process和Runtime 首先看一下Process类: ProcessBuilder.start() 和 Runtime.exec 方法创建一个 ...

  6. java 程序从linux 上接收不可见字符

    近期在写一个简单的小java程序,希望在运行java 程序时,从shell 中接收参数,并且参数的内容为不可见字符. 开始时还觉得可以使用"\"之类的转义符来写,后来发现java程 ...

  7. Java程序作linux服务并且开机自动启动[转]

    以有个java应用名称为test,打包为test.jar,程序入口为cn.com.ppnote.SocketServer. 下面在linux的/opt下建立testapp目录,复制test.jar到/ ...

  8. 使用Java Service Wrapper将java程序作为linux服务并且开机自动启动

    以java应用程序为例,打包为tianlong.jar,程序入口为tianlong.QueueTest. 下面在linux的/opt下建立tianlong目录,复制tianlong.jar到/opt/ ...

  9. Java程序在Linux上运行虚拟内存耗用很大

    突然集群的2个节点挂了,通过top查看, 虚拟内存22G, 通过 pmap -x 8 | grep anon 一大堆64M Linux下glibc的内存管理机制用了一个很奇妙的东西,叫arena.在g ...

随机推荐

  1. java实现smtp邮件发送

    一.准备工作 首先你需要已一个发送邮箱,一般的邮箱都有SMTP.POP3服务,比如QQ邮箱,登陆QQ邮箱开启SMTP服务,开启是服务器会提示你设置独立密码,这个密码是跟邮箱正常登陆的密码不同的,这个是 ...

  2. java核心知识点学习----equals和==的比较、单例模式,饿汉式,饱汉式

    最近发现自己学习能力变慢了,想来想去还是发现是因为自己Java基础没有打扎实,接下来的一系列文章将主要记录自己对于Java的最基础知识点的学习. 一.equals和==的比较 先看例子: packag ...

  3. 存在网路的情况下重命名SDE中数据图层错误(The orphan junction feature class cannot be renamed)

    运行环境为ArcGIS9.3,VS2008. 问题描述:数据通过SDE存储在Oracle10g数据库中,数据集中存在几何网络,在存在网络的情况下通过程序对其中的数据图层进行重命名,弹出"Th ...

  4. 解析Tomcat内部结构和请求过程

    Tomcat Tomcat的组织结构 由Server.xml的结构看Tomcat的体系结构 Tomca的两大组件:Connecter和Container Connecter组件 Container组件 ...

  5. mormot 数据集转换为JSON字串

    mormot 数据集转换为JSON字串 unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graph ...

  6. LVM基本概念、管理

    一.传统磁盘管理的问题 当分区大小不够用时无法扩展其大小,只能通过添加磁盘.创建新的分区来扩充空间,但是新添加进来的硬盘是作为独立文件系统存在的,原有的文件系统并未得到扩充,上层应用很多时候只能访问一 ...

  7. linux 清理内存命令 查看内存命令

    查看内存: 我们可以用free命令查看内存信息: free -g total used free shared buffers cachedMem: 15   15    0     0       ...

  8. Unity3D 中 用quaternion 来对一个坐标点进行旋转的初步体会

    在unity3d中,用四元数来表示旋转,四元数英文名叫quaternion . 比如 transform.rotation 就是一个四元数,其由四个部分组成 Quaternion = (xi + yj ...

  9. JS 插件使用

    1.时间控件的使用 My97DatePicker WdatePicker({ minDate: '%y-%M-{%d}'}) 默认当前日期以后 LoanMessage.LoanAppAgentMode ...

  10. Java学习笔记 第一章 入门<转>

    第一章 JAVA入门 一.基础常识 1.软件开发 什么是软件? 软件:一系列按照特定顺序组织的计算机数据和指令的集合 系统软件:DOS,Windows,Linux 应用软件:扫雷.QQ.迅雷 什么是开 ...