Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ssh/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何在Debian服务器上连续自动运行.jar?_Java_Ssh_Jar_Cygwin_Debian - Fatal编程技术网

Java 如何在Debian服务器上连续自动运行.jar?

Java 如何在Debian服务器上连续自动运行.jar?,java,ssh,jar,cygwin,debian,Java,Ssh,Jar,Cygwin,Debian,我有一个.jar文件,我想一直在Debian服务器上运行 目前,我已经知道如何通过Cygwin上的ssh访问服务器,并启动.jar。但是当我关闭开发机器上的Cygwin窗口时,它会终止服务器上的进程(我认为,因为它不再响应) 目前我是这样开始的: java -jar myjar.jar packageName.fileNameOfFileWithMainMethod 我需要让这个文件在服务器上自动持续运行(它是我正在开发的系统的一个组成部分) 不幸的是,我对服务器管理或一般的非windows操

我有一个
.jar
文件,我想一直在
Debian
服务器上运行

目前,我已经知道如何通过
Cygwin
上的
ssh
访问服务器,并启动
.jar
。但是当我关闭开发机器上的Cygwin窗口时,它会终止服务器上的进程(我认为,因为它不再响应)

目前我是这样开始的:

java -jar myjar.jar packageName.fileNameOfFileWithMainMethod
我需要让这个文件在服务器上自动持续运行(它是我正在开发的系统的一个组成部分)

不幸的是,我对服务器管理或一般的非windows操作系统几乎一无所知(选择或制作服务器的不是我),所以我真的不知道该做什么,也不知道该搜索什么(显然,因为我的搜索没有给出可用的结果)

我读过(并编辑过,因为文本很乱)这个问题,但尽管我觉得它可能暗示了正确的方向,但我并没有从中得到多少帮助。我也尝试了我最好的谷歌搜索引擎,但它给了我很多只与之相关的结果

我想我必须制作某种脚本(可能包含上面的代码行),对它做一些事情,并将它放在服务器上特定的位置,以完成我想要做的事情


有人能解释一下这是如何做到的吗?

一个简单的建议是使用Linux的运行jar文件

应该可以让您正确地使用cron运行jar文件

或者,它也清晰简洁

例如:

  • 使用Cygwin连接
  • 运行
    crontab-e
  • 输入
    0****java-jar myjar.jar packageName.filenameoffileWithMain方法
    在每小时的最高峰运行jar文件。或者,要在服务器启动时启动它,请输入
    @reboot java-jar myjar.jar packageName.filenameoffileWithMain方法

  • 一个简单的建议是使用Linux的运行jar文件

    应该可以让您正确地使用cron运行jar文件

    或者,它也清晰简洁

    例如:

  • 使用Cygwin连接
  • 运行
    crontab-e
  • 输入
    0****java-jar myjar.jar packageName.filenameoffileWithMain方法
    在每小时的最高峰运行jar文件。或者,要在服务器启动时启动它,请输入
    @reboot java-jar myjar.jar packageName.filenameoffileWithMain方法

  • 最简单的解决方案是使用
    nohup
    分离进程:

    nohup java -jar myjar.jar packageName.fileNameOfFileWithMainMethod &
    
    使用
    kill
    命令可以停止进程

    进程id可通过
    ps-ef | grep packageName.filenameoffileWithMain方法找到


    但是,如果您正在开发在服务器上长期运行的严肃应用程序,您必须处理初始化系统,如systemdupstart或类似的东西。

    最简单的解决方案是使用
    nohup
    分离进程:

    nohup java -jar myjar.jar packageName.fileNameOfFileWithMainMethod &
    
    使用
    kill
    命令可以停止进程

    进程id可通过
    ps-ef | grep packageName.filenameoffileWithMain方法找到


    但是,如果您正在开发在服务器上长期运行的严肃应用程序,您必须处理初始化系统,如systemdupstart或类似的东西。

    Shell钩子适合配置用户环境变量

    Cron用于计划作业,主要是相关维护,如创建备份、管理日志文件等

    在开发过程中,按照ааааааааааааааааааааааааа 但无法处理服务器关闭清理,或响应重新启动

    上面提到的初始化脚本是启动/停止服务的标准方式

    有一个名为init的应用程序,它是类Unix系统启动时启动的第一个应用程序。
    Init根据运行级别启动一些脚本,这些脚本管理守护进程(Windows中的服务)。
    所以对于服务,你写“钩子”是为了

    在Debian中,/etc/init.d/您将初始化脚本放在哪里,
    您可以阅读此文件夹中的脚本以了解想法,
    它们是文本文件(bash脚本)

    使用参数调用这些脚本
    (a标准关键字,如“开始”、“停止”等…)

    /etc/rc?.d/(其中?是运行级别之一),init在其中查找要运行的脚本。
    但是这些脚本只是指向/etc/init.d/中脚本的“自动创建”符号链接
    您不需要触摸/etc/rc?.d/文件夹中的任何内容。
    *将脚本放入/etc/init.d/,
    您只需调用创建符号链接*:

    sudo update-rc.d "your-scripts-name" defaults
    
    正如您所看到的,脚本名称附加了一些前缀; 例如/etc/rc1.d/K10apache2,它是指向/etc/init.d/apache2的符号链接
    因此,简单的“按名称排序执行”在这里是可能的

    自动创建这些前缀(因此执行顺序), 需要依赖项信息。
    所以init脚本包含了这些信息。 还需要在何时(在哪个运行级别)调用这些脚本(使用“开始”或“停止”)的信息

    此依赖关系信息作为注释放置在这些脚本中。 例如,apache服务器初始化脚本(/etc/init.d/apache2)包括这些行

    # Provides:          apache2
    # Required-Start:    $local_fs $remote_fs $network $syslog $named
    # Required-Stop:     $local_fs $remote_fs $network $syslog $named
    # Default-Start:     2 3 4 5
    # Default-Stop:      0 1 6
    
    详细信息存在于Debian策略中
    这也是有用的;

    注: Unix世界中存在着巨大的转变和争论/分裂。
    初始化