当前位置: 首页>>技术教程>>正文


java – 如何使jar文件在启动和运行时运行当您注销时?

, , ,

问题描述

我不知道从哪里开始寻找。我一直在阅读有关守护程序的内容,但并不了解该概念。

更多细节 :

  • 我一直在写一个爬虫,它永远不会停止,并且不会通过Internet上的RSS爬虫。

  • 搜寻器已经用Java编写-因此现在是一个jar。

  • 我是拥有Ubuntu 11.04的计算机上的管理员。

  • 机器有可能崩溃,所以我希望每次启动机器时都运行搜寻器。

  • 此外,即使我注销,我也希望它能够继续运行。我不确定这是否可行,但是大多数时候我都注销了,但我仍然希望它继续爬网。

有任何想法吗?有人可以指出我正确的方向吗?

只是寻找最简单的解决方案。

最佳方法

这是使用SysVInit的一种简单方法。说明:

  1. 创建您的应用程序的开始和停止脚本。将其放在某个目录中,在我们的示例中是:

    • 启动脚本:/usr/local/bin/myapp-start.sh

    • 停止脚本:/usr/local/bin/myapp-stop.sh

    每个人都将提供运行/停止该应用程序的说明。例如,myapp-start.sh内容可以很简单,如下所示:

    #!/bin/bash
    
    java -jar myapp.jar 
    

    对于停止脚本,可能是这样的:

    #!/bin/bash
    # Grabs and kill a process from the pidlist that has the word myapp
    
    pid=`ps aux | grep myapp | awk '{print $2}'`
    kill -9 $pid
    
  2. 创建以下脚本(myscript)并将其放在/etc/init.d上。

    /etc/init.d/myscript内容:

    #!/bin/bash
    # MyApp
    #
    # description: bla bla
    
    case $1 in
        start)
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
        stop)
            /bin/bash /usr/local/bin/myapp-stop.sh
        ;;
        restart)
            /bin/bash /usr/local/bin/myapp-stop.sh
            /bin/bash /usr/local/bin/myapp-start.sh
        ;;
    esac
    exit 0
    
  3. 将脚本放入系统中(使用SysV)。只需运行以下命令(以root用户身份):

    update-rc.d myscript defaults 
    

PS:我知道Upstart非常好,但我还是喜欢旧的SysV初始化系统。

次佳方法

是!有可能的。 🙂 Upstart是确保服务保持运行的一种方式。它有五个软件包,默认情况下全部安装:

  • 新贵的init守护程序和initctl实用程序

  • upstart-logd为日志服务提供logd守护程序和作业定义文件

  • upstart-compat-sysv提供rc任务以及重新启动,运行级别,关闭和telinit工具的作业定义文件,这些文件提供与SysVinit的兼容性

  • startup-tasks为系统启动任务提供作业定义文件

  • system-services提供tty服务的作业定义文件

学习非常愉快,值得。新贵有一个网站:http://upstart.ubuntu.com/

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/7965.html,未经允许,请勿转载。