如题,我有几个java socket的服务要在linux下运行,我想写一个shell脚本来启动和停止它
但是个菜鸟希望各位大侠帮帮忙。

解决方案 »

  1.   

    一个思路: 你在启动socket的时候, 再多起一个socket, 然后监听某个端口, 如果接收到特定的消息,就程序退出,
     例如:  main(){
          init();
          startService()//启动socket服务
           创建一个新的socket
         if(读取监听的消息== stop)
            system.exit(1);
    }
      

  2.   

    非常感谢《huangtian549》的回答,你能你理解错我的意思了,我是想写一个shell脚本来启动我的服务。
      

  3.   

    你自己去看一下/etc/init.d/httpd这个文件。
    这个是apache的启动文件,你按着这个写就行了。
    主要的控制就是这一段:
    case "$1" in
      start)
        start
        ;;  
      stop)
        stop
        ;;  
      status)
            status -p ${pidfile} $httpd
        RETVAL=$?
        ;;  
      restart)
        stop
        start
        ;;  
      condrestart)
        if [ -f ${pidfile} ] ; then
            stop
            start
        fi  
        ;;  
      reload)
            reload
        ;;  
      graceful|help|configtest|fullstatus)
        $apachectl $@
        RETVAL=$?
        ;;  
      *)  
        echo $"Usage: $prog {start|stop|restart|condrestart|reload|status|fullstatus|graceful|help|configtest}"
        exit 1
    esacexit $RETVAL
    因为你是java程序,所以把start等过程里的代码改一下,比如改成这样:
    /bin/java -cp xxxxx package.ClassName
    至于怎么做成一个service,要看你用什么Linux发行版了,但是过程大同小异。可去google
      

  4.   

    嗯,启动的时候按照楼上就行了关闭的时候要先找到你进程的pid,然后 kill -9 pid就行了找进程pid用下面这个
    pid=`ps -ef | grep 进程名称 | grep -v grep | awk '{print $2}'`进程名称自己用 ps 先命令找出来
      

  5.   

    非常感谢bayougeng的回复.问题解决了。