linux 如何保证使程序后台运行(nohup &)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了linux 如何保证使程序后台运行(nohup &),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1598字,纯文字阅读大概需要3分钟。
内容图文
起因
部署springboot项目时,为了保证他后他运行,我用了如下命令:
nohup java -jar jsczams-web-ams.jar > ams.log 2>&1 &
下面记录nohup以及&的具体含义
&
一条命令后面跟个&表示该程序让出终端,不占用终端,独自后台运行。如果用下面的命令
java -jar jsczams-web-ams.jar &
表示我的程序后台运行,我可以用终端发出其他指令,做其他的事。
但是问题在于,如果我断开终端(比如 ssh),而该程序属于我这个会话的进程,也会被终断。
由此可见,单独使用&并不能满足我们的需求。
nohup
当我们使用nohup命令时
nohup java -jar jsczams-web-ams
程序会继续霸占终端,我们做不了其他的事,但是我们可以关闭这个终端,再开一个新的终端,这样做并不会终止这个进程。但是新开一个终端有点麻烦,所以使用了下面的做法。
nohup和&
一般来说,nohup 和 & 都是结合起来使用的。表示程序后台运行,不占用当前终端,而且终端关闭后,程序还能继续运行。
>和>>
这个应该比较简单
>表示覆盖指定文件,文件已有的内容都没有了。
>>表示在文件的尾部追加内容。
2>&1的具体含义
这些数字是文件描述符,0表示标准输入,1表示标准输出,2表示标准错误输出。
2>&1表示将标准错误输出与标准输出合并起来,也就是说将控制的所有输出重定向到指定的文件里。
至于为什么是2>&1,而不是2>1,是因为2>1会被解释为向1里面写东西。
总结
现在再看这条指令的含义就很明确了
nohup java -jar jsczams-web-ams.jar > ams.log 2>&1 &
nohup 和 &保证能后台运行,>ams.log 将1的输出重定向到ams.log文件,2>&1表示将2的输出重定向给1,而此时1的输出重定向到了ams.log,所以2和1的输出都重定向到了ams.log文件中。
后续程序如果遇到什么问题,可以在程序所在目录的ams.log文件中查到问题所在(tail命令)
如果嫌弃上面的写法太繁琐,也可以简写:
nohup java -jar jsczams-web-ams.jar &>ams.log &
或者
nohup java -jar jsczams-web-ams.jar >&ams.log &
内容总结
以上是互联网集市为您收集整理的linux 如何保证使程序后台运行(nohup &)全部内容,希望文章能够帮你解决linux 如何保证使程序后台运行(nohup &)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。