今天部署项目因为要后台运行,就是将Xshell命令窗口关闭之后项目仍能正常运行,因此需要使用 “nohup java -jar XXX.jar”,而不是“java -jar XXX.jar”。
但是使用nohup命令有可能会出现:

nohup: ignoring input and appending output to ‘nohup.out

原因是nohup命令对nohup.out没有写入权限


解决办法:

使用Linux重定向解决nohup.out无写权限问题使用Linux重定向解决nohup.out无写权限问题

■场景

执行nohup命令的时候,经常会出现下面这种没有写入权限的错误。

nohup: ignoring input and appending output to nohup.out' nohup: failed to run command/etc/nginx_check.sh’: Permission denied

■linux重定向:

0、1和2分别表示标准输入、标准输出和标准错误信息输出,可以用来指定需要重定向的标准输入或输出。

在一般使用时,默认的是标准输出,既1。当我们需要特殊用途时,可以使用其他标号。

例如,将某个程序的错误信息输出到log文件中:./program 2>log。

这样标准输出还是在屏幕上,但是错误信息会输出到log文件中。

另外,也可以实现0,1,2之间的重定向。2>&1:将错误信息重定向到标准输出。

Linux下还有一个特殊的文件/dev/null,它就像一个无底洞,所有重定向到它的信息都会消失得无影无踪。

这一点非常有用,当我们不需要回显程序的所有信息时,就可以将输出重定向到/dev/null。

如果想要正常输出和错误信息都不显示,则要把标准输出和标准错误都重定向到/dev/null, 例如:

ls 1>/dev/null 2>/dev/null

还有一种做法是将错误重定向到标准输出,然后再重定向到 /dev/null,例如:

ls >/dev/null 2>&1

注意:此处的顺序不能更改,否则达不到想要的效果,此时先将标准输出重定向到 /dev/null,

然后将标准错误重定向到标准输出。

由于标准输出已经重定向到了/dev/null,因此标准错误也会重定向到/dev/null,于是一切静悄悄。

■关于nohup

在使用nohup命令的时候,经常由于输出nohup.out的路径没有写入权限,而无法使用nohup。

这是可以使用Linux重定向的方法,将nohup.out重定向至一个有写入权限的路径,或者直接扔到/dev/null中。

nohup ./program >/dev/null 2>/dev/null &

或者

nohup ./program >/dev/null 2>&1 &

之后我运行:“nohup java -jar XXX.jar & ",但偶尔有报错信息,我以为还是不行,花了半天时间找资料.
到了晚上后,我打开nohup.out文件,看到里面记录的是项目运行的日志信息,恍然大悟,有日志信息说明原来nohup命令对nohup.out已经有写的权限了,且记录的日志信息也是正确的,因此原来已经部署好了。
因此,可以先看看你的nohup.out文件,先确定你的项目有没有正常启动,如果有问题则需要排除掉,最后才能成功部署!

参考文章:

  • https://blog.csdn.net/jiangyu1013/article/details/81476184
  • https://www.iteye.com/blog/aniyo-1496442
  • https://www.cnblogs.com/quchunhui/p/5582371.html

原文:http://www.linblog.tech/blog/27

Linux部署项目jar包遇到的问题——nohup命令相关推荐

  1. java开机自启动 Linux,java项目jar包开机自启(WINDOWS,Linux)

    WINDOWS: 1.新建一个text文件,将 java -jar D:\eclipse-workspace\attendance\target\mybatis-generator.jar写入,修改文 ...

  2. nohup java -jar_Linux下运行jar包为什么要用nohup命令

    在本地开发完的Java项目如果只是在本地运行是非常方便的,在IDE里执行运行在带有Main函数的Java文件里运行run就可以了.在服务器上运行Java项目就稍微麻烦一些,但是也不复杂.这些都是在刚学 ...

  3. 使用IntelliJ IDEA 集成阿里提供的 Alibaba Cloud Toolkit插件,实现自动化远程部署Java项目(jar包,war包两种方式)

    打开IntelliJ IDEA编译器,点击文件==>点击设置(setting) 在设置页面点击插件(英文应该是 Plugins ,对IntelliJ IDEA汉化感兴趣的同学可以在这个页面搜索 ...

  4. Linux系统中后台运行java项目jar包指令

    Linux系统中后台运行java项目jar包指令 windows环境下后台运行jar包程序: https://blog.csdn.net/qq_36763419/article/details/109 ...

  5. 【SpringBoot】32、SpringBoot项目Jar包如何瘦身部署

    一.背景 SpringBoot 为我们快速开发提供了很好的架子,使得我们只需要少量配置就能开始我们的开发工作,但是当我们需要打包上传部署时,却是很神伤的一个问题,因为打出来的 Jar 包少则十几兆,多 ...

  6. linux如何运行jar包、查看jar包进程、停止jar包

    linux运行jar包 要运行java的项目需要先将项目打包成war包或者jar包,打包成war包需要将war包部署到tomcat服务器上才能运行.而打包成jar包可以直接使用java命令执行.在li ...

  7. Dockerfile中通过ENV指定动态参数在RUN时传递参数(部署后台jar包时指定端口为例)

    场景 CentOS7中使用Dockerfile部署后台jar包: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/119818808 ...

  8. Windows 10和Linux脚本启动jar包服务器,并设置开机启动

    Windows 10和Linux脚本启动jar包服务器,并设置开机启动 现在好多Java服务和应用都是用jar启动,jar打包成的里面会直接带有tomcat,所以可以直接启动,但是如何通过脚本启动并且 ...

  9. 在Linux服务器运行jar包并一直处于后台执行

    在Linux服务器运行jar包并一直处于后台执行: 一.一般情况 jar包在linux的目录为 /jarmanager/xxx.jar 使用在/jarmanager目录下使用 java -jar xx ...

最新文章

  1. 小程序picker_小程序·云开发实战 - 迷你微博
  2. Java-消息框显示两整数加减乘除
  3. 又一家药企IPO被拒,原因竟然是……
  4. git 如何忽略掉文件夹_#PY小贴士# 我的git仓库为什么每次提交都有很多改动?
  5. 深入理解 ASP.NET 动态控件 (Part 5 - 编译实验)
  6. 使用Jquery+CSS实现的表格隔行凸显和当前行高亮效果
  7. Python 多进程本机共享内存(二)
  8. Centos 6.5下NIS服务安装配置
  9. B - 好数 51Nod - 1717
  10. mvc路由原理 php_s-blog博客系统开发之前端路由配置
  11. 如何使用记事本和cmd执行java代码
  12. raft算法 java_raft-java首页、文档和下载 - 分布式一致性算法 Raft 的 Java 实现 - OSCHINA - 中文开源技术交流社区...
  13. atuo_ptr 实现
  14. 服务器如何隐藏真实IP地址?服务器隐藏真实IP的方法
  15. 如何做述职报告/职级跃阶报告
  16. 打造全球TOD典范城市!成都准备这么干
  17. stata中使用xsmle命令做空间面板数据hausman检验出现3200错误的解决办法
  18. Viewpager+Fragment+webview中的输入框不弹出软键盘的坑
  19. 个人....LATEX常用数学符号
  20. xxl-job(二)调度中心挂了怎么办

热门文章

  1. 漫谈TCP bufferbloat的根源-Jacobson管道
  2. 略见一斑之全国.net工资水平大概
  3. 霸屏浏览器使用说明书
  4. 17 redis-server 的启动
  5. 2014年第一期ThoughtWorks技术雷达发布
  6. 微软VLSC批量授权中心,Windows 1809新版本iso文件
  7. git仓库迁移代码到新的git仓库
  8. 深度强化学习笔记之PPO实现细节(2)
  9. Spring AOP 切点 Pointcut 表达式介绍与使用
  10. AES加密解密(ECB模式)