zoukankan      html  css  js  c++  java
  • linux 退出 java -jar 后台执行

    这里的linux退出,指的是linux(退出管理工具),非注销登陆。

    java -jar xxx.jar 即刻启动jar包,能看到输出的日志。linux 退出后会关闭该执行。

    java -jar xxx.jar & 即刻在后台启动jar包,看不到到输出的日志。linux 退出后会关闭该执行。

    如何保证jar包执行后,退出linux,jar包不会随之关闭,导致项目无法访问

    此处我们需要使用到nohup

    nohup

    用途:不挂断的运行命令

    语法:nohup Command [ Arg … ] [ & ]

    &

    用途:在后台运行

    一般两个一起用

    nohup command &

    egnohup java -jar xxx.jar >log.txt &。这种方式会在jar目录下生成log.txt。这里我们先查看当前项目是否还在运行:ps -ef | grep xxx.jar,可以看到如下结果(例图):

     grep 类型 的是默认的,我们主要处理的是java类型的,执行kill -9 11858 

    再次执行ps -ef | grep xxx.jar就只能查到grep 类型的了。

    后台启动时 使用  nohup java -jar xxx.jar >/log/log.txt 2>&1 &

    第一个>后面是你的入职输出路径

    第二个> 后面的 2>&1 是将标准出错重定向到标准输出,这里的标准输出已经重定向到了out.file文件,即将标准出错也输出到out.file文件中。

    最后一个& , 是让该命令在后台执行。

    对 于& 1 更准确的说应该是文件描述符 1,

    1 一般代表的就是STDOUT_FILENO,实际上这个操作就是一个dup2(2)调用.

    他标准输出到all_result ,然后复制标准输出到文件描述符2(STDERR_FILENO),

    其后果就是文件描述符1和2指向同一个文件表项,也可以说错误的输出被合并了.

    其中0 表示键盘输入 1表示屏幕输出 2表示错误输出.把标准出错重定向到标准输出,

    然后扔到/log 下面去。

    /log/log.txt 2>&1 &

    是将command的输出重定向到/log/log.txt ,即输出的内容不会打印到当前屏幕,而是输出到了/log/log.txt 文件中。

    标准输入文件(stdin):stdin的文件描述符为0,Unix程序默认从stdin读取数据。
    标准输出文件(stdout):stdout 的文件描述符为1,Unix程序默认向stdout输出数据。
    标准错误文件(stderr):stderr的文件描述符为2,Unix程序会向stderr流中写入错误信息。
    屏蔽输出,起到禁止输出作用:/dev/null 是一个特殊的文件,写入到它的内容都会被丢弃;

    如果尝试从该文件读取内容,那么什么也读不到。但是 /dev/null 文件非常有用,将命令的输出重定向到它,会起到"禁止输出"的效果。
    “> /log/log.txt 2>&1” :表示将 stdout 和 stderr 合并后重定向到 /log/log.txt

    启动指派给指定的端口:

    nohup java -jar xxx.jar --server.port:80>/log/log.txt 2>&1 &

  • 相关阅读:
    Android关闭所有Activity、退出应用
    Android混淆打包找不到资源类的…
    Android查看网络是否可用
    Android获取当前系统的语言环境
    AndroidActivity之间跳转动画
    Android获得0n随机排列的数组
    Android记录和恢复listView滚动位置
    Android获取电池信息(Battery in…
    AndroidSurfaceView截屏问题
    Android让Activity finish后不执行onDestroy
  • 原文地址:https://www.cnblogs.com/klyjb/p/14260996.html
Copyright © 2011-2022 走看看